docker exec -it [コンテナID] /bin/bashみたいにECSでもデバッグしたい!
-
aws cliの導入
下を参照してください。
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html -
IAMロールの準備
- SSMの権限を付与したIAMロールを作成 付与 ECS タスクロールに付与(タスク実行ロールではありません。)
.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
- enableExecuteCommandをAWS CLIで有効化する。
- AWSCLIで有効化
aws ecs update-service --cluster [クラスタ名] --service [サービス名] --enable-execute-command | grep enableExecuteCommand
- amazon-ecs-exec-checkerを利用して有効化されているか確認
-
githubからAWSの人?が作ったシェルをクローンしてくる
amazon-ecs-exec-checker github -
コマンド投入
./check-ecs-exec.sh [クラスタ名] [タスクID] -
実行結果
------------------------------------------------------------
Prerequisites for check-ecs-exec.sh v0.7
-------------------------------------------------------------
jq | OK (/usr/bin/jq)
AWS CLI | OK (/usr/local/bin/aws)
-------------------------------------------------------------
Prerequisites for the AWS CLI to use ECS Exec
-------------------------------------------------------------
AWS CLI Version | OK ()
Session Manager Plugin | OK ()
-------------------------------------------------------------
Checks on ECS task and other resources
-------------------------------------------------------------
Region :
Cluster:
Task :
-------------------------------------------------------------
Cluster Configuration |
KMS Key : Not Configured
Audit Logging : DEFAULT
S3 Bucket Name: Not Configured
CW Log Group : Not Configured
Can I ExecuteCommand? |
ecs:ExecuteCommand: allowed
ssm:StartSession denied?: allowed
Task Status | RUNNING #RUNになってることを確認する。
Launch Type | Fargate
Platform Version | 1.4.0
Exec Enabled for Task | OK #OKになっていることを確認する
Container-Level Checks |
----------
Managed Agent Status
----------
1. RUNNING for "--------"
----------
Init Process Enabled ()
----------
1. Disabled - ""
----------
Read-Only Root Filesystem ()
----------
1. Disabled - ""
Task Role Permissions |
ssmmessages:CreateControlChannel: allowed #allowedになっていることを確認する。
ssmmessages:CreateDataChannel: allowed #allowedになっていることを確認する。
ssmmessages:OpenControlChannel: allowed #allowedになっていることを確認する。
ssmmessages:OpenDataChannel: allowed #allowedになっていることを確認する。
VPC Endpoints |
Found existing endpoints for
-
SSM PrivateLink ""
1. container ""
- AWS_ACCESS_KEY: not defined
- AWS_ACCESS_KEY_ID: not defined
- AWS_SECRET_ACCESS_KEY: not defined
- トラブルシュート
- Exec Enable for TaskがOKにならない。
- タスクを作り直してください。そうしないと有効になりません。
- 矯正デプロイではうまくいきませんでした。なぜでしょう?
- 最後に
- AWSはあまりGUIのことを考えてないでしょう。腹立ちます。
- 普通に考えてコンテナの中に入りたいって思うでしょ。
- GUIからできるようにしてくれよ。