📝

ECSでfargateで起動しているコンテナ内部にアクセスする方法

2024/10/12に公開

はじめに

ECS fargateで起動したコンテナにアクセスします。
aws ecs execute-command を利用していきます。

  • AWS CLI をインストール
  • AWS CLI のセッションマネージャープラグインをインストール
    が必要となります。

ecs execute-commandを実行するための設定

大事なことは公式ドキュメントに載っています。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-exec.html

ポイントだけ

  • ecs execute-commandはAWS Systems Manager のセッションマネージャーがコンテナとの接続を確立
  • SSM関連のポリシーがタスクに必要
  • ECS Serviceがexecute-commandをenableにする設定が必要

Terraformでの設定

ECS Service

resource "aws_ecs_service" "ervice" {
  name            = "service"

  // 他の設定は省略

  enable_execute_command = true
}

タスクのPolicy

こちらにECS execのPolicy情報が記載されています。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#ecs-exec-required-iam-permissions

       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"

コマンド

準備が揃えばコマンド実行できます。

aws ecs execute-command \
    --cluster <クラスター名> \
    --task <タスクID> \
    --container <コンテナ名> \
    --interactive \
    --command "/bin/sh" // ここはコンテナが受け付けているシェルにより変わります

Discussion