AWS-CDKでECSの構成作ってみた
AWS-CDKでECS/FargateのNativeのBlue/Green使える構成を作ってみた。とはいえほとんどCline任せでしたが・・・・
ECSのCDK構成に関しては他の方々が色々と作成されているし、そちらの方が有益な記事だと思うのでそちらを読んでいただいた方がいいかなと。
まぁ他と違う点としては
・configのtsファイルを使用してパラメータ可変にしているところ
・scripts配下にEC2のユーザスクリプト埋め込める
・configgenerator使えばウィザードとかCSVからconfig生成できるところ
・buildspec.yamlをファイル、Git、インラインから選べる
位ですね。
あまり有益じゃないと思いますが、まぁ備忘録的に残しておこうかと思います。
かなり複雑なので、なんかイケてないし残念な感じです。
CDKは構成決めてからシンプルに作らないと意味がないなという教訓は得られました。
一応、CI/CDをCodePipeline経由でできるようにしています。GitHubとAWS接続させて連動させることはできます。
awscdk_ecs_backendsampleの方がECS用のコードで、awscdk_ecs_frontendsampleがCloudFront+S3のStaticWebSiteHosting用です。buildspec.yamlはGitHub側で制御する感じです。
完全にテストしたってわけでないので挙動怪しいし、意図通り動かないかもしれないです。
ちなみに全リソース構築すると完了までに50分位かかります。CI/CDのSNSのメールのSubscriptionも飛んでくるので許可してやる必要あります。
◆GitHub(作成したCDKなど)
https://github.com/Otazoman/awscdk_ecs_sample
https://github.com/Otazoman/awscdk_ecs_backendsample
https://github.com/Otazoman/awscdk_ecs_frontendsample
◆参考サイト
・ECSのCDK化
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/tutorial-ecs-web-server-cdk.html
https://zenn.dev/nekoniki/articles/c654dfdc217be0
https://qiita.com/Keiwa/items/4d6ff9178e3650f0aefb
・VPCとサブネットを準備
https://qiita.com/jowoooon/items/045d44e23bb34bd7f503
https://zenn.dev/issy/articles/aws-cloudfront-vpcorigin-alb
https://qiita.com/masatomix/items/fc414e98d6d0091db90d
・ALB
https://tech.actindi.net/2020/01/17/103836
https://dev.classmethod.jp/articles/enabling-alb-access-log-storage-with-aws-cdk/
https://cloud5.jp/k-aws-cdk-alb/
https://zenn.dev/nekoniki/articles/82357e4b1f4972
https://baresupport.jp/blog/2025/06/10/873/
https://note.com/hiroyu0510/n/nf791237b5204
https://qiita.com/Yusuke-Shimizu/items/bbc4653b65b4726d96dd
https://tech.excite.co.jp/entry/2022/10/21/105138
https://dev.classmethod.jp/articles/alb-condition-values-per-rule/
https://blog.usize-tech.com/aws-cdk-alb-logs-s3-tips/
・EFS
https://cloud5.jp/k-aws-cdk-efs/
https://blog.bedrock.day/wordpress-cdk/%E6%89%8B%E9%A0%86/create-efs
https://zenn.dev/gaji/articles/d116f26c49cb03
https://koudenpa.hatenablog.com/entry/2020/08/28/214712
https://qiita.com/sakai-y/items/5a80e4dbd4db41b28599
・TransferFamily
・ECS
https://zenn.dev/moaikids/articles/ded84b11f5376c
https://blog.father.gedow.net/2024/11/08/aws-ecs-fargate-autoscaling-knowledge/
https://blog.serverworks.co.jp/ecs-on-fargate-scaling-policy
https://qiita.com/masatomix/items/90c16313040394251100
https://tech.techtouch.jp/entry/production-ready-ecs-bg-sample
・ネィティブBlueGreen(L2コンストラクト)
https://dev.classmethod.jp/articles/cdk-l2-ecs-native-blue-green-deployment/
https://blog.serverworks.co.jp/ecs_blue-green
https://kakakakakku.hatenablog.com/entry/2025/07/19/082038
https://note.com/shogo452/n/n8f7ae3dc5b22
https://mazyu36.hatenablog.com/entry/2025/08/15/165537
・Deploy関連
・GitHub接続
・パラメータストア
・DockerHub制限回避
・タスクロール
https://zenn.dev/sugay0519/articles/88f13ca589fcba
https://blog.serverworks.co.jp/ecs/difference-between-taskrole-and-taskexecutionrole
・ECR
https://dev.classmethod.jp/articles/aws-cdk-v2-create-ecr-repo-push-image-execute-on-lambda/
https://chariosan.com/2021/04/18/aws_cdk_vpc_endpoint/
・CodeBuild
https://blog.serverworks.co.jp/codebuild-codeconnection
・CodeConnection
https://docs.aws.amazon.com/cli/latest/reference/codeconnections/create-connection.html
https://zenn.dev/utaco/articles/841385d9015f62
https://sadayoshi-tada.hatenablog.com/entry/2025/03/01/000753
https://blog.serverworks.co.jp/create-codeconnections
https://techracho.bpsinc.jp/baba/2025_03_11/149364
https://dev.classmethod.jp/articles/aws-codestar-connections-has-renamed-to-aws-codeconnections/
https://skill-for-it.com/aws-codebuild-github/
・InstanceConnectEndpointを使用
https://blog.mmmcorp.co.jp/2025/02/06/cdk-with-ec2-instance-connect-endpoint/
https://zenn.dev/thyt_lab/articles/7fc528985dce9c
https://tech-blog.s-yoshiki.com/entry/268
https://speakerdeck.com/badmintoncryer/ec2-instance-connect-endpoint-wocdkdeshi-idao-sou?slide=19
https://qiita.com/ryohk/items/7d4d439652e296fe96a6
・クロスリージョン証明書
・WAF
https://kabu-kabu.org/2021/04/25/introduce-cloudfront-for-https/
https://zenn.dev/lea/articles/a2bfef8bdbb2e0
https://dev.classmethod.jp/articles/aws-cdk-create-wafv2/
https://dev.classmethod.jp/articles/setting-the-log-output-of-aws-waf-v2-to-s3-with-aws-cdk-and-cli/
https://zenn.dev/masaminh/articles/69c71812f431b8
https://dev.classmethod.jp/articles/aws-cdk-wafv2-block-ip-example/
https://qiita.com/rm0063vpedc15/items/0147eac0cc3814f98495
https://dev.classmethod.jp/articles/cdk-remote-stack-webacl-cloudfront/
https://zenn.dev/tkg216/articles/57a2ed6a77fd55
https://dev.classmethod.jp/articles/applying-aws-managed-rules-for-waf-v2-to-cloudfront-in-aws-cdk/
https://qiita.com/rm0063vpedc15/items/a719eaa99b7bcdf03d0c
https://zenn.dev/kazuki_inoue/articles/8c6ee41bff5616
https://zenn.dev/akabana/articles/7416d15c7ced18
https://zenn.dev/takeyuwebinc/articles/53fceeb3cd80ca
https://qiita.com/Kept1994/items/a9d1caf5cdb4f382bad9
https://dev.classmethod.jp/articles/aws-cdk-cross-region-aws-waf-web-acl-cloudfront-distribution/
https://techblog.tetemarche.co.jp/entry/2025/02/26/120102
https://www.cloudbuilders.jp/articles/1114/
https://dev.classmethod.jp/articles/slug-LFcjfdytGLcw/
https://zenn.dev/watany/articles/856b6154203fe4
https://tech.furyu.jp/entry/2023/02/14/120000
https://qiita.com/onoh/items/babc4a27c00e22a76d98
https://zenn.dev/funteractiveinc/articles/153581a53ef0fa
https://qiita.com/nasuB7373/items/8a059ef6ad1443701e69
https://zenn.dev/dyoshikawa/articles/fe1ae6743db0b7
https://dev.classmethod.jp/articles/cdk-waf-logs-s3-storage/
https://qiita.com/bukuma/items/4eee911fd8e0a5d043fd
https://qiita.com/k_bobchin/items/7a17f112374b7f637ba5
・Lambda@EdgeとCloudFrontFunctions
https://tech.nri-net.com/entry/aws_cdk_cross_region_stack_deployment_lambda_edge
https://pages.awscloud.com/rs/112-TZM-766/images/H-2_AWSDevDay2021.pdf
https://dev.classmethod.jp/articles/easily-deploy-lae/
https://techblog.zozo.com/entry/lambda-edge
https://qiita.com/tetsuya-zama/items/17674f387443c618f700
https://qiita.com/k_bobchin/items/1067cc0949a9de3e5c5b
https://zenn.dev/yizumi1012xxx/articles/9f4687ab9be52f
https://dev.classmethod.jp/articles/aws-cdk-i-tried-linking-lambda-edge-to-cloudfront-distribution/
https://persol-serverworks.co.jp/blog/cdk/lambdaedge-cdk-delete-failed.html
https://qiita.com/1998_i-airi/items/6ac3a71900504e665cb8
https://dev.classmethod.jp/articles/aws-cdk-cloudfront-s3-website/
https://www.dkrk-blog.net/aws/cloudfront_functions_cdk
https://sunday-morning.app/posts/2020-06-21-cdk-lambda-edge-environment-variables
https://qiita.com/Kept1994/items/9857be7be7778f9dbc54
https://dev.classmethod.jp/articles/delete-a-stack-that-contains-lambda-edge-function/
https://zenn.dev/nekoniki/articles/e72e30171bebba
https://zenn.dev/datahaikuninja/articles/34bdcae1f32a89
https://dev.classmethod.jp/articles/build-cloudfront-distribution-with-the-aws-cdk-with-aws-cdk/
https://masawada.hatenablog.jp/entry/2022/10/07/170000
https://note.com/yields_llc/n/n8519882d0e1e
https://tech.smartcamp.co.jp/entry/lambda-edge-spa
https://blog.i-tale.jp/2023/11/d4/
https://fixel.co.jp/blog/cdk-basic-authentication
https://blog.nijohando.jp/post/2020/partially-managing-lambda-with-terraform/
・CloudWatchLogs
https://qiita.com/tech4anyone/items/131f14f8665476431225
https://dev.classmethod.jp/articles/design-cloudwatchlogs-log-group/
https://blog.serverworks.co.jp/tech/2020/03/13/schedule-delete-log-stream-with-lambda/
・FireHoseでCloudwatchLogsからS3に飛ばす
https://dev.classmethod.jp/articles/cloudwatch-logs-to-s3-via-kinesis-data-firehose/
https://blog.serverworks.co.jp/cloudwatch_logs-s3-kinesis_data_firehose
・タスク定義の更新
https://zenn.dev/trysmr/articles/ecs-taskdef-management
https://www.cloudcentric.co.jp/blog/1865/
https://www.mtioutput.com/entry/ecs-update-taskdefcli
CloudFront周りのCrossリージョンは簡単にしてしまいたかったんですが、そのままだとCloudFront更新の際に引っかかるのでカスタムリソースでややこしいことしています。
それとLambda@EdgeとかCloudFrontFunctionsの更新とか削除とかがややこしいです。まだその辺がきちんと理解できていません。
ブログも中身がスカスカなので、ホントにダメダメですね。
参考サイトがやたらと多いし、これらの内容参照したけど全然、理解できていない。
CDK自体はなんとか動いているものの、汚いし説明もできないしでホントに自分のダメさ加減を痛感させられます。まぁこの先、AWSは仕事であまり触らなくなりそうなので、いったんここまで学びました的な感じで晒します。まぁ生成AIの方が自分よりいい出来なので、今後はそっちに任していくことが多くなるんでしょうね。
コメント