Amazon Elastic Container Service (Amazon ECS) で コマンド実行コマンド「AWS Command Line Interface (AWS CLI)」を実行しようとすると、以下のエラーが表示されます:
ExecuteCommand のオペレーションを呼び出し時に、「内部エラーのため、実行コマンドが失敗しました。後でもう一度お試しください」というエラーが発生しました (targetNotConnectedException)。
簡単な説明
このエラーは、次の理由により発生する可能性があります:
- Amazon ECS タスクロールには、 execute-command コマンドを実行するために必要なアクセス権限がない。
- コマンドを実行している AWS Identity and Access Management (IAM) ロールまたはユーザーに、必要なアクセス権限がない。
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
解決方法
Amazon ECS タスクロールのアクセス許可を確認する
このエラーは、 Amazon ECS タスクロール に必要なアクセス権限がない場合に発生します。必要なアクセス権限のあるIAM ポリシーを作成し、そのポリシーを Amazon ECS タスクロールに添付することで、このエラーを解決できる場合があります。
1. 次の IAM ポリシーを作成します:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
**注:**これらのアクセス権限が AWS Organizations レベルで拒否されていないことを確認してください。
2. 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/*"
}
]
}
それでもエラーが発生する場合は、 amazon-ecs-exec-checker スクリプトを実行します。このスクリプトにより、AWS CLI 環境および Amazon ECS クラスターまたはタスクを確認、検証できます。このスクリプトは、満たされていない前提条件 についても通知します。
関連情報
ECS Exec の有効化と利用