yikegaya’s blog

仕事関連(Webエンジニア)と資産運用について書いてます

効率よくaws ecs execute-commandを実行する

aws ecs execute-commandを使うとECSで動いているコンテナのシェルを操作できるんだけど実行にはタスクIDを取得する必要がある。

そのタスクIDはAWSの管理画面かaws ecs describe-tasksで確認できるんだけどいちいち確認してターミナルにコピペするのが面倒なんでこうやって👇コマンドを繋げて確認すると割と楽でした。

TASKARN=`aws ecs list-tasks \
    --cluster {対象クラスタの名前を指定} \
    --service-name {対象サービスの名前を指定}\
    | jq  -r '.taskArns[0]'

TASKID=`aws ecs describe-tasks \
    --cluster {対象クラスタの名前を指定} \
    --tasks $TASKARN \
    | jq -r '.tasks[0].containers[0].runtimeId' \
    | awk -F '-' '{print $1}'`

aws ecs execute-command \
    --cluster {対象クラスタの名前を指定} \
    --task $TASKID \
    --container  {対象サービスの名前を指定} \
    --interactive \
    --command "/bin/sh"

やってること

  1. aws ecs list-tasksでタスクのARNを取得。結果がJSONで返ってくるのでjqで取得。
  2. aws ecs describe-tasksでタスクのIDを取得してawkで必要な部分のみ切り出し
  3. 取得したタスクIDを使ってECSのコンテナ操作