🐦

ECS Execを使ってみました

2023/07/22に公開

エラーにはまってECS(fargate)で起動しているコンテナ内に入るために、ECS Execを利用してみました。

AWS公式
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/ecs-exec.html

IAMアクセス許可

まずタスクロールに必要なSSMアクセス許可を追加します。
自分はタスクロールにecsTaskExecutionRoleを指定していましたので、こちらにAmazonSSMFullAccess ポリシーをアタッチしました。

Session Manager pluginのインストール

続いて、ECS Execを利用するにはSession Manager pluginのインストールが必要です。
下記のAWSの公式からmacOS用にインストールコマンドを実行したのですが、
sudo: yum: command not found となりインストールできませんでした。
https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

色々と調べてみたのですが、最終的にはHomeBrewのbrewコマンドでインストールすることができました。
https://formulae.brew.sh/cask/session-manager-plugin

Execの有効化

事前準備が完了したらExecを有効化していきます。

ターミナル
aws ecs update-service --cluster クラスター名 --service サービス名 --enable-execute-command

有効化できたか確認

ターミナル
aws ecs describe-tasks --cluster クラスター名 --tasks タスクID | grep enableExecuteCommand

"enableExecuteCommand": true, と表示されれば有効化OK。

※すでにタスクが存在している場合、タスクを再起動して設定を反映させる必要があります。

Exec接続

ターミナル
aws ecs execute-command --cluster クラスター名 \
    --task タスクARN \
    --container コンテナ名 \
    --interactive \
    --command "/bin/sh" \

こちらでECS内のコンテナと対話型シェルセッションが開始します。

ボリューム設定でかなりはまってしまって、コンテナ内のディレクトリ構成を調べたかったので利用しましたが、色々と調べられたのでとても便利でした。

Discussion