CloudShellでECS Execを実行できることを確認しました。
マネジメントコンソールにログインして運用作業をされている方であれば、CloudShellを利用すれば、踏み台サーバ(SSH対象のタスクと同じVPC上に立てたインスタンス)不要でECSタスクにSSH可能です。
CloudShellにはECS Execに必要なソフトウェア(ecs-cli/セッションマネージャープラグイン)がインストール済みかつ、SwitchRoleが必要な環境では、マネジメントコンソールでSwitchRole済みであればCloudShell内でSwitchRoleする必要はないため、踏み台を普段停止していたり、踏み台へのSSHが多段になっているような環境では、CloudShellで実施すると迅速にECS Execが可能です。
※ECS Execは最大2セッションまでという制限があります
手順
マネジメントコンソール右上のプロンプトアイコンをクリックします(ベルの左)
SSH対象のタスクIDを確認します。CloudShellにはecs-cliがインストールされてるので、CloudShellでも確認可能です。
$ ecs-cli ps --cluster CLUSTER
Name State Ports TaskDefinition Health
CLUSTER/TASK_ID/CONTAINER RUNNING 10.x.x.x:80->80/tcp TASKDEF:1 UNKNOWN
タスクIDを確認したら(上記のTASK_ID部分の文字列)、ECS Execを実行します。
以下では、ECS Execコマンドを汎用化するために、クラスタ名/タスクID/コンテナ名を変数で外出しして実行しています。
試される場合は各変数に実際のクラスタ名などを入力してください。
$ cluster=
$ task=
$ container=
$ aws ecs execute-command --cluster $cluster --task $task --container $container --interactive --command "/bin/bash"
上記実行後、以下のように出力され、プロンプトが変われば成功です。
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
Starting session with SessionId: ecs-execute-command-xxxxxxxxxxxxxxxxx
root@ip-10-x-x-x/#
これで普通にECS Execを実行した状態なので、あとは通常通りタスクで実施したい作業を実施可能です。