Amazon Elastic Container Service (Amazon ECS) で AWS コマンドラインインターフェイス (AWS CLI) コマンドの execute-command を実行しようとすると、 「An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error.Try again later」というエラーが表示されます。
簡単な説明
このエラーは、次の理由で表示される可能性があります。
- Amazon ECS タスクロールに execute-command コマンドを実行するために必要なアクセス許可がない。
- コマンドを実行している AWS Identity and Access Management (IAM) ロールまたはユーザーに必要なアクセス権がない。
**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
解決策
Amazon ECS タスクロールの権限を確認する
このエラーは、Amazon ECS タスクロールに必要なアクセス権がない場合に表示されます。このエラーを解決するには、必要なアクセス権を持つ IAM ポリシーを作成し、Amazon ECS タスクロールにアタッチします。
- 次の IAM ポリシーを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
**注:**これらの権限が AWS Organizations レベルで拒否されていないことを確認してください。
- ポリシーを Amazon ECS タスクロールにアタッチします。
タスクレベルでこれらの変更を行うと、遅延が発生する可能性があります。そのため、ポリシーをタスクロールにアタッチした後しばらく待ってから、execute-command コマンドを実行してください。
IAM ユーザーまたはロールのアクセス権を確認する
execute-command コマンドを実行する IAM ユーザーまたはロールには、以下のアクセス権が必要です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:ExecuteCommand",
"Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
}
]
}
それでもエラーが表示される場合は、GitHub のウェブサイトから amazon-ecs-exec-checker スクリプトを実行してください。このスクリプトにより、AWS CLI 環境と Amazon ECS クラスターまたはタスクを確認および検証できます。このスクリプトは、満たされていない前提条件についても通知します。
関連情報
ECS Exec を使用する