すでにタスク定義が存在するfargateタスクをaws cliから実行する方法です。
いろいろ探しましたが、fargateではなくインスタンスであったり、サービス前提のタスクだったりで
私の欲しい物がなかったので覚書を残します。
前提
- fargateで動かす
- タスク定義はすでに存在する
- サービスでは動かさない
- タスク定義はバッチのような動きをする
iam周り
aws cliを叩くときに指定するiamには以下のアクションを許可しています。
ecs:ListTaskDefinitions
ecs:ListTasks
ecs:DescribeTasks
ecs:RunTask
iam:PassRole
ecs:ListTaskDefinitions
, ecs:ListTasks
, ecs:DescribeTasks
はタスク実行前、実行中に
list-task-definitions
, list-tasks
, wait tasks-stopped
などを使うためです。
iam:PassRole
はタスク定義で指定しているタスク実行ロールにわたすためです。
コマンド
$ aws ecs list-task-definitions #タスク定義のarnを確認する $ aws ecs run-task \ --cluster foo-cluster \ --task-definition arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:task-definition/foo-task-definision:9 \ #確認したarnをリビジョン含めて指定する --launch-type FARGATE \ --network-configuration 'awsvpcConfiguration={subnets=[subnet-xxxx],securityGroups=[sg-xxxxxxxx],assignPublicIp=DISABLED}' #ネットワーク周りの設定を指定する $ aws ecs list-tasks --cluster foo-cluster #タスク一覧で確認する $ aws ecs wait tasks-stopped \ #タスクが終わるのを待つ --cluster foo-cluster \ --tasks arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx #run-taskで返ってきたarnを指定する