ECS タスクに SessionManager で接続する方法を紹介します。
# 確認する
aws ecs describe-services --cluster クラスター名 --services サービス名 | jq '.services[].enableExecuteCommand'
# 有効化する
aws ecs update-service --region ap-northeast-1 --cluster クラスター名 --service サービス名 --enable-execute-command
aws ecs execute-command --cluster クラスター名 \
--task タスクID \
--container コンテナ名 \
--interactive \
--command "/bin/sh"
SSMplugin がインストールされていない
ECS のタスクロールに SessionManager の権限が追加されてない
data "aws_iam_policy_document" "session_manager_policy" {
statement {
sid = "1"
effect = "Allow"
actions = [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
]
resources = ["*"]
}
}
それでも接続できない場合は、AWS 公式のツールを利用してデバッグしてみてください。
git clone https://github.com/aws-containers/amazon-ecs-exec-checker.git
brew install jq
./check-ecs-exec.sh [クラスター名] [タスク ID]