JAWS-UG CDKæ¯é¨ #25 ãAIæä»£ã®CDKãã¿ããªã©ãæ¸ãã¦ãï¼ã ã§ã話ãããå 容ã§ãã https://jawsug-cdk.connpass.com/event/386514/
ããã«ã¡ã¯ã常æ¥é ããCDKã«å¯¾ãã¦ã®ã¢ããæ°æã¡ãæ±ãã¦ããSREã®@okazu_dmã§ãã ä»åã¯CDKãããã¦Terraformã使ãã¾ããããã¨ããè¨äºã®ã¿ã¤ãã«ã§ãããå ·ä½çã«ã¯ä»¥ä¸ã®ãããªè©±ããã¾ãã CDKã¨Terraformã®æ§è³ªã®éã CDKã§éç¨ããã¨è¾ãç¹ ã¨ã¯ããTerraformã§ãè¾ãã±ã¼ã¹ã¯ãã ç§»è¡å¤æã®è»¸ ãã¼ã«èªä½ã®æ¯è¼ããã¯ãéç¨ã®ã¨ãã«èµ·ããå°ããã¨ãéç¨æã«èãããã¨ã®è©±ããã¾ãã ããã¨ãã ãããããã®è¨äºèªä½ã大ãã«ãã¸ã·ã§ã³ãã¼ã¯ãªã®ã§ãåãããããã¨ã¯ãäºæ¿ãã ããã ããã¯ããã¨ãã¦ãè¨äºã®èª¤ãã®ãææãCDKã®ã¡ãªããã«ã¤ãã¦ã®è§£èª¬ã¯å¤§æè¿ã§ãã 対象èªè TerraformãCDKãä½ãããã£ã¦ãã人åã ä»åã¯CDKãããï¼ã¨ãã話ãªã®ã§ãTerraformã¨ãCDKãä½ããã¨ãã話ã¯ã¹ããããã¾ãã ã©ã£ã¡ãçæ¹ã§ã使ã£ããã¨ã
ãã£ã¨ç°¡åã«Stackéã®ãªã½ã¼ã¹ã®ç§»åãè¡ããã ããã«ã¡ã¯ãã®ãã(@non____97)ã§ãã çããã¯CloudFormationãAWS CDKã使ã£ã¦ãã¦ããã£ã¨ç°¡åã«Stackéã®ãªã½ã¼ã¹ã®ç§»åãããããããè«çIDã夿´ããããã¨æã£ããã¨ã¯ããã¾ãã? ç§ã¯ããã¾ãã 徿¥ã¯ãã®ãããªå¯¾å¿ãããå ´åã以ä¸ã®ãããªã¹ããããå¿ è¦ã§ããã Deletion Policyã§Retainãè¨å®ãã¦ãStackä¸ã§åé¤ããã¦ãããªã½ã¼ã¹ãåé¤ãããªãããã«ãã Stackä¸ãããªã½ã¼ã¹ãåé¤ãã å¥ã®Stack or å¥ã®è«çIDã¨ãã¦ãªã½ã¼ã¹ãã¤ã³ãã¼ã ã©ããã¦ãæéãæããã¾ãããé常ã«ç¥çµã使ãã¾ãã ä»åã¢ãããã¼ãã«ãã£ã¦ã CloudFormationã®Stackéã®ãªã½ã¼ã¹ã®ç§»åãè«çIDã®å¤æ´ãç°¡åã«è¡ããããã«ãªãã¾ããã AWS Blogsã«ãæç¨¿ããã¦ãã¾ã
ãAWS CDKã®èå¼±æ§ãçºè¦ãããã¨ãããã¥ã¼ã¹è¨äºãæµãã¦ããã®ã§ãããèªãã§ãä¸å®ãç ½ãã ãã§ä½ãè¨ã£ã¦ãããããåãããªãå 容ã§ããã 仿¹ããªãã®ã§ãèå¼±æ§ãå ±åããAqua Security社ã®è¨äºãèªãã§ã¿ã¾ããã é常ã«åãããããã¾ã¨ãã¦ããã¦ããã®ã§ããã¹ã³ãã®ããåãããªãè¨äºã§ä¸å®ãæãã¦ããæ¹ã¯ãåæãèªããã¨ããå§ããã¾ãã è¶ æ¦è¦ è¦ã¤ãã£ãèå¼±æ§ã¯ãç¹å®ã®æé ãè¸ãã§ãã¾ã£ãCDKç¨ã®S3ãã±ãããä¹ã£åããã¨ããå 容ã®ããã§ãã èå¼±æ§ã®å½±é¿ã®å¯è½æ§ãããã¢ã«ã¦ã³ãã«ã¯ã2024/10/15 (æ¥æ¬æéã ã¨2024/10/16ãããããªã)ã«AWSãããMissing CDK bootstrap bucketããã¿ã¤ãã«ã«å«ã¾ããã¡ã¼ã«ãéããã¦ãã¾ãã ã¡ã¼ã«ãæ¥ã¦ãªããã°ã»ã¼ãã§ãã(ä»åã®èå¼±æ§ã«å¯¾ãã¦ã¯)å®å ¨ã§ããå®å¿ãã¦ãã ããã ã¡ã¼ã«ãæ¥ã¦ã
AWS Fargateã§CDK Typescriptã使ã£ã¦CodeDeplyã使ããã CDKã§Fargateã®CodeDeployã使ããã®ã§ãè¨äºãæ¸ãã¾ãã æ¬çªç°å¢ã«ãããã¤ããã¨ãã¯ãCodedeploy使ã£ãã»ããããã§ãããã ã¾ãCDKã§è¨è¿°ãã¦ããã°ãå¾ã ããã§ãã æä½æ¥ã«å¯¾ããCodeDeployã®ã¡ãªãã å ¬éããåã«ãåãç°å¢ã§ãåä½ç¢ºèªãã§ããã ä¸é¨ã®äººã«æåã«å ¬éããåé¡ãªãã確èªã§ããã ããã«åãæ»ããã§ããã ããç¨åº¦ã好ããªã¿ã¤ãã³ã°ã§å ¬éã§ããã åç½®ã ãã§ã«CDKã§Fargateã使ãã¦ãããã¨ãä»åã®è¨äºã¯CodeDeployé¨åã®è§£èª¬ã§ãã CodeDeployã®åããªã©ã¯èªåã§èª¿ã¹ã¦ãã ããã ãµã¼ãã¹ã®å½åã¯ãã¡ãã¨é©åãªãã®ã«å¤æ´ãã¦ãã ããã ãµã¼ãã¹ã®ä¿®æ£ const loadBalancedFargateService
ã¯ããã« çæ§ããã«ã¡ã¯ãã½ã¼ã·ã£ã«çµæ¸ã¡ãã£ã¢ãNewsPicksã(Media Infrastructureãã¼ã )ã¨ã³ã¸ãã¢ã®åè¦ã§ãã ç¾å¨ãç§ã¯å¼ç¤¾ãµã¼ãã¹ã®ä¸é¨ã®ã¤ã³ãã©å·æ°ãè¡ãªã£ã¦ããæä¸ã§ãããæ°ã¶æ AWS CDKã触ã£ã¦ããã¾ããã åè·ã§ã¯ Infrastructure as Code ã¨ã㦠Terraform ã使ã£ããã¨ãããã®ã§ãããå°ãªãã¨ãAWS ã使ãã¨ããæ¡ä»¶ã«ããã¦ã¯ CDKã使ãã¹ã ã¨ããçµè«ã«è¾¿ãçãã¾ããã ä»åã¯ãã®ããã«èããããã«ãªã£ãçç±ã«ã¤ãã¦èª¬æãã¦ãããã¨æãã¾ãã åæ Terraform ã¯ãããªãã¯ã¯ã©ã¦ãã«ããã Infrastructure as Code ã®èµ°ãã¨ãã¦æ§ã ãªç¾å ´ã«å°å ¥å®ç¸¾ããããããã«å¯¾ãããªã¹ãã¯ãã¯æã¤ã¹ãã§ãã ããããããããAvsBãã¨ããã¡ãªãã¡ã®æ§å³ã§ãã©ã£ã¡ã§ããããã好ã¿ã ããã¨æ
Amazon Web Services ããã° AWS CDK ã¢ããªã±ã¼ã·ã§ã³ã®ããã®ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¹ãã®ä½æã¨å®è¡ èªååãããã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¹ãã¯ã·ã¹ãã ã³ã³ãã¼ãã³ããæ¤è¨¼ããæ°ããã½ããã¦ã§ã¢ãªãªã¼ã¹ã®ä¿¡é ¼æ§ãé«ãã¾ããAWS ã«ãããã¤ããããªã½ã¼ã¹ã§ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¹ããå®è¡ããã¨ãAWS Identity and Access Management (IAM) ããªã·ã¼ããµã¼ãã¹ã®å¶ç´ãã¢ããªã±ã¼ã·ã§ã³è¨å®ãããã³ã©ã³ã¿ã¤ã ã³ã¼ãã®æ¤è¨¼ãå¯è½ã«ãªãã¾ããAWS Cloud Development Kit (AWS CDK) ã Infrastructure as Code (IaC) ãã¼ã«ã¨ãã¦æ´»ç¨ãã¦ããéçºè åãã«ãã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¹ããã½ããã¦ã§ã¢ãªãªã¼ã¹ã«ç°¡åã«å®è£ ã§ãããã¹ããã¬ã¼ã ã¯ã¼ã¯ãç¨æããã¦ãã¾ãã AWS CDK ã¯ããµãã¼ããã
ããã«ã¡ã¯ãCXäºæ¥æ¬é¨ IoTäºæ¥é¨ã®è¥æ§»ã§ãã GitHub Actionsã§ã¯OpenID Connectï¼OIDCï¼ããµãã¼ãããããããAWSãªã©ã¨å®å ¨ã«ãã¼ã®ããåããå¯è½ã¨ãªã£ã¦ãã¾ãã Secure deployments with OpenID Connect & GitHub Actions now generally available | The GitHub Blog GitHub ActionsãAWSã¨OIDC飿ºããå ´åã¯ããID Providerãã¨ãIAM RoleããAWSä¸ã«ä½æããå¿ è¦ãããã®ã§ãããããããªã½ã¼ã¹ãAWS CDKã§ä½ã£ã¦ã³ã¼ãã§ç®¡çããããã«ãã¦ã¿ã¾ããã ãã£ã¦ã¿ã 以åä½ã£ãID Providerã®ç¢ºèªãåé¤ ä»¥åã«ã³ã³ã½ã¼ã«ããæåã§ä½æããåããGitHubã¨ã®OIDC飿ºç¨ã®ID Providerãåå¾ãã¾ãã $ OP
ãAWS CDK ç°å¢ãã¨ã«å¤ãããè¨å®ã¯ã©ã表ç¾ããã°ãããã ããï¼ã æ¬çªç°å¢ã¨éçºç°å¢ã§ã¤ã³ã¹ã¿ã³ã¹ã®ã¹ããã¯ãéããªã©ãç°å¢ãã¨ã«å¤ãããè¨å®ãçºçãããã¨ãããã¾ãã ãã®éã«ãAWS CDKã§ã¯ã©ããã£ãæ¹æ³ã§ç°å¢å·®ç°ã表ç¾ãããæ©ããã¨ãããã¨æãã¾ãã ä»åã¯å人çã«ããä½¿ãæ¹æ³ã2ã¤ç´¹ä»ãã¾ãã ããã°ä¸ã®ã³ã¼ãã¯ä»¥ä¸ã«ãªãã¾ãã msato0731/cdk-config-sample 1. Context Contextã¨ã¯ 1ã¤ç®ã¯ãContextãä½¿ãæ¹æ³ã§ãã ã©ã³ã¿ã¤ã ã³ã³ããã¹ã - AWS Cloud Development Kit (AWS CDK) v2 CDKã®ã³ãã³ãå®è¡æã«ã弿°ã§å¤ã渡ããã¨ãã§ãã¾ãã $ npm run cdk deploy -- -c vpcId=vpc-xxxxxxx-c instanceType="t3.micro" å
èæ¯ ãã¼ã¿å¢çã®æ©ã¿ ãã¼ã¿å¢çã®è¨è¨ã»æ§ç¯ã«ããã¦ãS3 ãªã©ã®ã»ãã¥ãªãã£è¨å®ã確èªããããã«ã¯ã¢ã¯ã»ã¹ãã¹ããå¿ è¦ã§ãã ããããã¢ã¯ã»ã¹ãã¹ããã·ã¹ãã ãã¹ãå·¥ç¨ãªã©ã§æ¡ä»¶çµç¤ã«ã¾ã¨ãã¦è¡ãã¨ããæ¹æ³ã«ã¯åé¡ãããã¾ãã ã¢ã¯ã»ã¹ãã¹ãã§ã¯ãIAM ããªã·ã¼ã»VPC ã¨ã³ããã¤ã³ãããªã·ã¼ã»S3 ãã±ããããªã·ã¼ãªã©ãè¤éãªããªã·ã¼ã®çµã¿åããã«ãã£ã¦æ±ºã¾ã夿§ãªã¢ã¯ã»ã¹ãã¿ã¼ã³ãæ¤è¨¼ããå¿ è¦ãããã¾ãããã®ããããã¹ãã±ã¼ã¹ã®æ°ãå¤ããªãããã¹ãã®å®æ½ãçµæã®åæã»å ±åã«å¤ãã®å·¥æ°ããããã¾ããããã«ããã¹ãä¸ã«åé¡ãçºçããå ´åãä¿®æ£ãåãã¹ãã«ãæéãããããç´æã¸ã®å½±é¿ãæ¸å¿µããã¾ãã çè ãéå»ã«æºãã£ãæ¡ä»¶ã§ã¯ããã®ãããªæ¹æ³ã§ã¢ã¯ã»ã¹ãã¹ããè¡ã£ã¦ãã¾ããããéçºã®æ©ã段éã§ãã¹ããèªååã§ããã°ãå¾å·¥ç¨ã§åãå 容ãè¡ãå¿ è¦ããªããªããå¹ççã«ãªãã¨èãã¾ããããã
ããã«ã¡ã¯ãã¤ãã¼ã(tsukuboshi0755)ã§ãï¼ ä»¥å以ä¸ã®ããã°ã§ãCDK(TypeScript)ã§ECSã¨ECRã®ã³ã³ããæ§æãå®è£ ãã¾ããã ä»åã¯ãã®æ§æã«å¯¾ãã¦ãCodeCommitåã³CodeBuildãå«ãCodePipelineã追å ããECSã®ãã«ã¼/ã°ãªã¼ã³ãããã¤æ§æãå®ç¾ããCDKã³ã¼ããä½ã£ã¦ã¿ããã¨æãã¾ãï¼ åææ¡ä»¶ ä»åã¯ä»¥ä¸ã®éããCDKv2ã使ã£ã¦ã³ã¼ããæ¸ãã¦ããã¾ãã $ cdk version 2.83.1 (build 006b542) ã¾ãDockerã¯ã©ã¤ã¢ã³ãã¨ãã¦ã¯ãRancher Desktopã使ç¨ãã¾ãã $ rdctl version rdctl client version: 1.1.0, targeting server version: v1 å ¨ä½æ§æ ä»åã¯VPC+ALB+ECS(Fargate)+ECRã«å ãã¦
EC2ã¤ã³ã¹ã¿ã³ã¹ã®è¸ã¿å°ãç¨æããããªã ããã«ã¡ã¯ãã®ãã(@non____97)ã§ãã çããã¯EC2ã¤ã³ã¹ã¿ã³ã¹ã®è¸ã¿å°ãç¨æããããªãã¨æã£ããã¨ã¯ããã¾ãã? ç§ã¯ããã¾ãã VPCä¸ã®RDS DBã¤ã³ã¹ã¿ã³ã¹ãRedisã¯ã©ã¹ã¿ã¼ãOpenSearch Service ãã¡ã¤ã³ãªã©ã®ãªã½ã¼ã¹ã«æ¥ç¶ãããå ´åãSite-to-Site VPNãClient VPNãDirect Connectããªããã°è¸ã¿å°(Bastion)ãå¿ è¦ã«ãªãã¾ãã è¸ã¿å°ã¸ã®ã¢ã¯ã»ã¹æ¹æ³ã¯ä»¥ä¸ã®ãããªãã®ãããã¾ãã ç´æ¥SSH SSMã»ãã·ã§ã³ããã¼ã¸ã£ã¼ EC2 Instance Connect ããã¦ãè¸ã¿å°ã¨ãªããªã½ã¼ã¹ã¨ãã¦æ¡ç¨ãããå¤ããEC2ã¤ã³ã¹ã¿ã³ã¹ã ã¨èãã¾ããEC2ã¤ã³ã¹ã¿ã³ã¹ã®å ´åãOSå¨ãã®é¢åãã¿ãå¿ è¦ãããã¾ããOSå ã®ããã±ã¼ã¸ã®ã¢ãããã¼ããé¢åã§ããã°ãè¸ã¿å°ã
AWS CDKã§EC2ã®ã¹ãããã¤ã³ã¹ã¿ã³ã¹ãç«ã¦ãã®ã¯å®ã¯å¤§å¤ã ç«ã¦ãæ¹æ³ã®èª¬æã¨ããããã©ã¤ãã©ãªã¼åããã®ã§ç´¹ä»ãã¾ãã ãªãå½è¨äºã¯CDKã§ããTypeScriptéå®ã§ããããã¾ããã ãæ¥ãã®æ¹ ã©ã¤ãã©ãªã¼åãã¦ã¿ã ãã覧ãã ããã 2023å¹´1æ12æ¥è¿½è¨ï¼ ã©ã¤ãã©ãªãTypeScript以å¤ãPython, Java, C#(.NET), Goã«ã対å¿ããã¾ããã ã¯ããã« ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ã§EC2ã®ã¹ãããã¤ã³ã¹ã¿ã³ã¹ãç«ã¦ããã¨ã¯ç°¡åã§ãããã®ç»åã®ããã«ãEC2ã¤ã³ã¹ã¿ã³ã¹ãç«ã¦ãæé ã®ä¸ã§ããã§ãã¯ãå ¥ããã ãã§ãã 䏿¹CDKã§ã¯ãEC2ãä½ãããã®Instanceã³ã³ã¹ãã©ã¯ãã«ã¹ãããã¤ã³ã¹ã¿ã³ã¹é¢ä¿ã®ããããã£çã¯è¦ã¤ããã1ãWebæ¤ç´¢ã§èª¿ã¹ã¦ããã°ãã®æ å ±ã¯åºã¾ããã ãã ãæ°ã«ãªããã¼ã¸ãè¦ã¤ãã¾ããã CloudFormation 䏿
DevelopersIO 2023ã®ã¤ãã³ãã§ç»å£ããéã®å 容ã§ãã
CDK大好ãã¡ãã¡ãã§ããããã«ã¡ã¯ã ããã¾ã§ã¯ECS(Fargate)ã®ãããã¤ãCDKã§è¡ã£ã¦ãããã§ãããä¾åããæéãããæ°ã«ãªããããecspressoãçµã¿åããã¦ã¿ãã®ã§ãããAutoScalingã§èºããã®ã§ãã®è§£æ±ºã¾ã§ã®è¨é²ã§ã ããããã£ã¨ããããæ¹ããããï¼ï¼ã¨ããå ´åã¯ãç¥ãããã ãã⦠2023/08/10 æç¹ æ§æ Fargate ã¯ã©ã¹ã¿ã¯CDKããµã¼ãã¹ã¨ã¿ã¹ã¯ã¯ecspressoã§ãããã¤ããã AutoScalingã¯ãããããã®ã§CDKã§å®ç¾©ããã ã¤ã³ãã©æ§ç¯ãªãã¸ã㪠(AWS CDK) CloudFront, Fargateã¯ã©ã¹ã¿, ECR ãã®ä»è«¸ã ãæ§ç¯ ecspressoã§ãããã¤ããããã« SSM Parameter Store ã«å¿ è¦ãªæ å ±ãåºåãã ã¢ããªã±ã¼ã·ã§ã³ãªãã¸ã㪠Dockerã³ã³ããã§å®è¡ ãã¡ãããã¤ã³ãã©æ§ç¯ãª
ã¯ããã« ããã«ã¡ã¯ãWeb ã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ãã¢ã® keyamin ã§ãã èªå㯠IaC ããã£ãã好ãã§ä»äºã§ãæ¸ããã¨ãå¤ããåè·ã§ 1 å¹´å¼± Terraform ã使ã£ã¦ãã¾ãããæ¨å¹´ 11 æã«è»¢è·ãã¦ãã㯠AWS CDK ãåå¼·ãã¦ãã¾ãã ãã®éã« Terraform ã® plan ã³ãã³ã㨠CDK ã® diff ã³ãã³ãã®æåã®éããã¾ãããªããã®æ±ãã®éãã§æ¸æã£ãé¨åããã£ãã®ã§ãæ¤è¨¼ã»èå¯ãã¦ã¿ã¾ããã TL;DR Terraform ã® plan ã³ãã³ãã§ã¯ãå®è¡æã« state ãã¡ã¤ã«ã«è¨è¼ããã¦ããã¤ã³ãã©ãªã½ã¼ã¹ã®å®éã®è¨å®ã確èªãã«è¡ããããªãããçºçãã¦ãããããå«ãã¦ã³ã¼ãã®ç¶æ ã«ä¸æ¸ããããããªè¨ç»ãåºåãããapply ã³ãã³ãã§ã¯ããããã®ã¾ã¾å®è¡ããã CDK ã® diff ã³ãã³ãã CloudFormation ã®å¤æ´ã»ããã§
æè¿é¢ãã£ã¦ããããã¸ã§ã¯ãã§ã¯ã大ããªã¢ããªã±ã¼ã·ã§ã³ã®ãªã¢ã¼ããã¯ãã£ãè¡ã£ã¦ãã¾ãã ããã§ã¯ãã«ã¹ã¯ã©ããã§ã¤ã³ãã©ã®æ§æãæ¸ãç´ãæ©ä¼ãããã¾ããã ãã®ããã¸ã§ã¯ãã¯ç¤¾å ã§ã¯æ¯è¼çè¤éãªæ§æã«ãªã£ã¦ãã¦ããªã¢ã¼ããã¯ãã£ã«ããã£ã¦ã¯ãã¢ããªã±ã¼ã·ã§ã³ç¹æã®äºæ ã«ãããèæ ®ãã¹ããã¤ã³ããé£åº¦ãé«ãã¨ãããããããããã¾ããã å ·ä½çã«ã¯ãè¤æ°ã®ãã¤ã¯ããµã¼ãã¹éã®å調æ§ãç¬ç«æ§ã¨ããã«ä»éããèªè¨¼/èªå¯ãã¯ã©ã¤ã¢ã³ãè¨¼ææ¸(mTLSèªè¨¼)ã®ç®¡çãæ´å²ççµç·¯ã«ããè¤éæ§ãæ£ãããã®awsã¢ã«ã¦ã³ãç§»è¡ãªã©ãªã©ã ãããã¯å¥ã®æ©ä¼ã§èªã(or ååã®èª°ããèªã£ã¦ããããã¨ã«æå¾ ããã)ã¨ãã¦ããã®è¨äºã§ã¯ã¤ã³ãã©ããã«ã¹ã¯ã©ããã§æ¸ãç´ãã«ããã£ã¦é¸æããCDKTFã«ã¤ãã¦ãç´ä½æ²æãçµã¤ã¤ãæçµçã«æ¡ç¨ãããã£ã¬ã¯ããªæ§æã«ã¤ãã¦æ¸ãããã¨æãã¾ãã ã¿ã¤ãã«ã«ã¯ããã¹ããªãã¨ã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}