📝

AWS ECSのスケジューリングタスクのコンテナの上書きをCircleCIから行う方法

2020/09/18に公開

追記

前提

  • CircleCIのOrbsを使用する為、CircleCIのバージョンは2.1以降であることを前提とします

jobsの設定

jobs: update-ecs-scheduled-task: executor: aws-cli/default steps: - checkout - aws-cli/setup - run: name: update ECS Scheduled Task command: | aws events put-targets \ --rule {更新するルールの名前} \ --targets "[ { \"Id\": \"$TARGET_ID\", \"Arn\": \"$ECS_CLUSTER_ARN\", \"RoleArn\": \"$ROLE_ARN\", \"Input\": \"{ \\\"containerOverrides\\\": [{ \\\"name\\\": \\\"上書きするコンテナの名前\\\", \\\"command\\\": [\\\"実行するコマンド(スペース区切り)\\\",\\\"実行するコマンド(スペース区切り)\\\"] }] }\", \"EcsParameters\": { \"TaskDefinitionArn\": \"タスク定義のArn\" } } ]"
  • 実行するコマンド(スペース区切り)は、タスク定義でコマンドを実行させる際に bundle,exec,rails,db:migrate のようにコマンドをスペースで区切った一つ一つのことを指します

補足(各パラメータをGUIから確認する方法)

  • 更新するルールの名前
    • ECS→クラスター→該当のタスクが動いているクラスター→タスクのスケジューリング→スケジュールルールの名前
  • $TARGET_ID
    • ECS→クラスター→該当のタスクが動いているクラスター→タスクのスケジューリング→更新するスケジュールを選択→ターゲットのスケジュール→ターゲット名
  • $ECS_CLUSTER_ARN
    • ECS→クラスター→Cluster ARN
  • $ROLE_ARN
    • ECS→クラスター→該当のタスクが動いているクラスター→タスクのスケジューリング→更新するスケジュールを選択→ターゲットのスケジュール→ターゲット名→ターゲットロール
      • 該当のターゲットロールのArnを調べる
        • IAM→ロール→該当のターゲットロール→ロール ARN
  • 上書きするコンテナの名前
    • ECS→クラスター→該当のタスクが動いているクラスター→タスクのスケジューリング→更新するスケジュールを選択→ターゲットのスケジュール→ターゲット名→タスク定義
      • ECS→タスク定義→該当のタスク定義→更新前のバージョン→コンテナの定義→コンテナ名

参考文献

Discussion