GitHub ActionsでECS自動デプロイのワークフローを構築した

published_at: 2023-12-29

概要

Cloudformationで社内のインフラを構築した際に、GitHub ActionsでECS自動デプロイのワークフローを構築した際の振り返りを兼ねてまとめる。

やったこと

GitHubがオフィシャルで出してるECSデプロイのサンプルワークフローをそのまま使った。

https://docs.github.com/en/actions/deployment/deploying-to-your-cloud-provider/deploying-to-amazon-elastic-container-service#prerequisites

  1. ECRにログイン
  2. イメージビルドしてECRにpush
  3. タスク定義を元に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がサンプルテンプレートを出していてありがとうという気持ち。 自動デプロイは本当に楽で良い。