ECS Exec で Fargate タスクに入る

Fargate のタスクにシェルで入りたいとき、ECS Exec を使うと踏み台も SSH も要りません。 TTP は ECS Exec が有効で、エージェントが動いているタスクだけを一覧に出すので、 クラスタ名やタスク ID をコンソールで探さずに済みます。

Tera Term とは独立した機能です。 ECS Exec は SSM の仕組みを使うため、Tera Term も sshd も不要です。使わない場合、追加のインストールも設定も発生しません。

必要なもの

  1. Session Manager プラグイン(クライアント側)

    EC2 の SSM 接続と同じく、クライアントに必要なのはこれだけです。AWS CLI v2 は不要です。導入後は TTP を再起動してください。

  2. enableExecuteCommand を有効にしたタスク

    サービスまたは run-task の実行時に enableExecuteCommand を有効にします。起動済みのタスクには後から有効化できないため、設定変更後はタスクを入れ替える必要があります。

  3. タスクロールに ssmmessages の権限

    タスク側にも権限が要ります。ここが抜けていると、一覧には出るのに接続できない、という状態になります。

  4. コンテナ内にシェルがあること

    /bin/sh が存在しないイメージ(distroless など)では、ECS Exec 自体が使えません。

一覧に出る条件

TTP は ecs:DescribeTasks の結果から、ExecuteCommandAgent が RUNNING のタスクだけを表示します。エージェントが STOPPED のタスクや、Exec を有効にしていないタスクは一覧に出ません。

手順

  1. 「AWS 設定...」で認証情報とリージョンを入力

    「接続テスト」で疎通を確認します。MFA を必須にしている IAM ユーザーのみ「MFA を使用する」を有効にします。

  2. 「AWS から接続...」(Ctrl+Shift+A)を開く

    EC2 インスタンスと ECS タスクが同じ一覧に表示されます。

  3. タスクを選んでダブルクリック

    コンテナ内のシェルが開きます。タスクに複数コンテナがある場合は、対象のコンテナが選ばれます。

必要な IAM 権限

操作する側(IAM ユーザー)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:ListClusters",
        "ecs:ListTasks",
        "ecs:DescribeTasks",
        "ecs:ExecuteCommand",
        "ssm:StartSession",
        "ssmmessages:CreateControlChannel",
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": "*"
    }
  ]
}

タスク側(タスクロール)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:CreateControlChannel",
        "ssmmessages:CreateDataChannel",
        "ssmmessages:OpenControlChannel",
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": "*"
    }
  ]
}

セッションを KMS で暗号化する設定にしている場合は、操作する側とタスク側の両方に kms:Decrypt などの権限が必要になります。

うまくいかないとき

症状確認すること
一覧にタスクが出ないリージョン、enableExecuteCommand の有効化、ExecuteCommandAgent の状態(RUNNING か)。
Exec を有効にしたのに反映されない起動済みタスクには後から有効化できません。タスクを入れ替えてください。
接続時にエラーになるタスクロールの ssmmessages:*。ここが最も見落とされます。
シェルが起動しないイメージに /bin/sh が含まれているか。

注意事項

  • ECS Exec は万能の踏み台ではありません。タスクが停止するとセッションも切れます
  • 実行したコマンドの監査ログを残したい場合は、ECS Exec のセッションログ(S3 / CloudWatch Logs)を別途有効にしてください。TTP はその設定を行いません
  • AWS のアクセスキーは ttp_data/aws.enc に暗号化して保存されます

最終更新: 2026年11月14日