概要
Cloudformationで社内のインフラを構築した際に、GitHub ActionsでECS自動デプロイのワークフローを構築した際の振り返りを兼ねてまとめる。
やったこと
GitHubがオフィシャルで出してるECSデプロイのサンプルワークフローをそのまま使った。
- ECRにログイン
- イメージビルドしてECRにpush
- タスク定義を元にECSをデプロイ
環境変数やパスを指定し直すだけだったので本当にすぐできた。
タスク定義のJSONは、containerDefinitions
配下のものを指定しないとダメなのは注意。
1$ aws ecs describe-task-definition --task-definition task-definition-cfn:${number}
上記のコマンドでJSONをそのまま出力すると、下記のような構造になり、taskDefinition
プロパティが邪魔をしてしまう。
1{ 2 "taskDefinition": { 3 "taskDefinitionArn": "xxxxx", 4 "containerDefinitions": [ 5 { 6 "name": "xxxxx", 7 "image": "xxxxx", 8 .... 9 } 10 ] 11 } 12}
なので下記のようにしてtaskDefinition
配下のJSONを出力する必要がある。
1$ aws ecs describe-task-definition --task-definition task-definition-cfn:${number} | jq '.taskDefinition' > path/task-definition.json
まとめ
GitHubがサンプルテンプレートを出していてありがとうという気持ち。 自動デプロイは本当に楽で良い。