前提
- 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
- $ROLE_ARN
- ECS→クラスター→該当のタスクが動いているクラスター→タスクのスケジューリング→更新するスケジュールを選択→ターゲットのスケジュール→ターゲット名→ターゲットロール
- 該当のターゲットロールのArnを調べる
- IAM→ロール→該当のターゲットロール→ロール ARN
- 上書きするコンテナの名前
- ECS→クラスター→該当のタスクが動いているクラスター→タスクのスケジューリング→更新するスケジュールを選択→ターゲットのスケジュール→ターゲット名→タスク定義
- ECS→タスク定義→該当のタスク定義→更新前のバージョン→コンテナの定義→コンテナ名
参考文献