📝
ECSでfargateで起動しているコンテナ内部にアクセスする方法
はじめに
ECS fargateで起動したコンテナにアクセスします。
aws ecs execute-command を利用していきます。
- AWS CLI をインストール
- AWS CLI のセッションマネージャープラグインをインストール
が必要となります。
ecs execute-commandを実行するための設定
大事なことは公式ドキュメントに載っています。
ポイントだけ
- 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情報が記載されています。
"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