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

概要

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

やったこと

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

Deploying to Amazon Elastic Container Service - GitHub Docs Learn how to deploy a project to Amazon Elastic Container Service (ECS) as part of a continuous deployment (CD) workflow. GitHub Docs
  1. ECRにログイン
  2. イメージビルドしてECRにpush
  3. タスク定義を元にECSをデプロイ

環境変数やパスを指定し直すだけだったので本当にすぐできた。

タスク定義のJSONは、containerDefinitions配下のものを指定しないとダメなのは注意。

$ aws ecs describe-task-definition --task-definition task-definition-cfn:${number}

上記のコマンドでJSONをそのまま出力すると、下記のような構造になり、taskDefinitionプロパティが邪魔をしてしまう。

{
    "taskDefinition": {
        "taskDefinitionArn": "xxxxx",
        "containerDefinitions": [
            {
                "name": "xxxxx",
                "image": "xxxxx",
                ....
            }
        ]
    }
}

なので下記のようにしてtaskDefinition配下のJSONを出力する必要がある。

$ aws ecs describe-task-definition --task-definition task-definition-cfn:${number} | jq '.taskDefinition' > path/task-definition.json

まとめ

GitHubがサンプルテンプレートを出していてありがとうという気持ち。 自動デプロイは本当に楽で良い。