Amazon ECS で発生したエラー「ExecuteCommand オペレーションを呼び出す際にエラーが発生しました (TargetNotConnectedException)」を解決するにはどうすればよいですか?

所要時間1分
0

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 の有効化と利用

AWS公式
AWS公式更新しました 2年前
コメントはありません