4
3

More than 1 year has passed since last update.

AWS CloudShellでECS Execを実行する

Last updated at Posted at 2021-12-15

CloudShellでECS Execを実行できることを確認しました。
マネジメントコンソールにログインして運用作業をされている方であれば、CloudShellを利用すれば、踏み台サーバ(SSH対象のタスクと同じVPC上に立てたインスタンス)不要でECSタスクにSSH可能です。
CloudShellにはECS Execに必要なソフトウェア(ecs-cli/セッションマネージャープラグイン)がインストール済みかつ、SwitchRoleが必要な環境では、マネジメントコンソールでSwitchRole済みであればCloudShell内でSwitchRoleする必要はないため、踏み台を普段停止していたり、踏み台へのSSHが多段になっているような環境では、CloudShellで実施すると迅速にECS Execが可能です。
※ECS Execは最大2セッションまでという制限があります

手順

マネジメントコンソール右上のプロンプトアイコンをクリックします(ベルの左)
image.png

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を実行した状態なので、あとは通常通りタスクで実施したい作業を実施可能です。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3