CodeDeploy | アプリケーション | |
CodeDeploy | デプロイメントグループ | 対象のECSやデプロイ戦略を設定 |
CodeDeploy | AppSpec.yml | 対象のサービスやHookと呼ばれる各ステップでのライフサイクルイベントを定義したファイル |
CodeBuild&CodeDeploy | imagedefinitions.json | イメージ名を後続のDeployタスクで利用するために生成 |
Code commit | AWS製 Git repository |
Code Pipeline | Githubにpushされたら取得、ビルド、デプロイなどのPipline |
Code Build | 主にBuild Stage担当 |
Code Deploy | 主にDeploy Stage担当 |
Default Connectionでは1つのリージョンでGithubなら全部共通。 さすがに不便すぎると思われて、カスタム接続が選べるようになっている。ただそれがウラでSecretManagerを使うため、課金されて激怒!!
https://github.com/settings/applications
IAMに登録必要
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:ap-northeast-1:自分のアカウントID:parameter/*" } ] }
aws codebuild start-build --project-name プロジェクト名
aws codebuild start-build --project-name プロジェクト名 --source-version ブランチ名
aws codebuild start-build --project-name プロジェクト名 --environment-variables-override name=HOGE,value=value,type=PLAINTEXT
post_build: commands: - aws s3 sync release s3://{S3のバケット名} --delete --acl public-read
appspec.ymlにlambda関数を指定する
Resource名 | 主な役割 | 依存するResource |
aws_codedeploy_deployment_group | CodeDeployでBlue/Greenを設定 | ECSのクラスター&サービス/ALBのターゲットグループ |
aws_lb | LBの枠だけ作成 |
aws_lb | LBの枠だけ作成 |
80(Production Port)と8080(Test Listener Port)を用意しておき、デプロイが走ったときに8080経由で新しいものにアクセスできる。
フェーズ | 80 | 8080 | TG |
デプロイ前 | ECS-1 | ECS-1 | TG-BLUE |
デプロイ中 | ECS-1 | ECS-2 | TG-BLUE |
HOOK完了 | ECS-2 | ECS-2TG-GREEN |
https://qiita.com/fukubaka0825/items/59974953bd4c69e9d5c7
https://qiita.com/marnie_ms4/items/202deb8f587233a17cca
https://dev.classmethod.jp/articles/codepipeline-ecs-codedeploy/
https://dev.classmethod.jp/articles/codedeploy-ecs-from-cli/
https://qiita.com/NaokiIshimura/items/86ec84a13a6ceb831bba
https://beyondjapan.com/blog/2020/04/fargate-deploy-flow-terraform/
https://techblog.techfirm.co.jp/entry/terraform-on-codepipeline
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/sample-docker.html
zip -r /var/tmp/upload.zip *
cd infra/node/koa zip -r dest.zip ./ -x '*node_modules*' '*output*'