スキップしてコンテンツを表示

Amazon ECS の "An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation" エラーを解決する方法を教えてください。

所要時間2分
0

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" というエラーメッセージが表示されます。

簡単な説明

"ExecuteCommand" というエラーメッセージが表示される理由は次のとおりです。

  • Amazon ECS タスクロールexecute-command を実行するために必要なアクセス許可が含まれていない場合。
  • コマンドを実行する AWS Identity and Access Management (IAM) ロールまたはユーザーに必要なアクセス許可が含まれていない場合。

解決策

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

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 ユーザーまたはロールのアクセス許可を確認する

サインインに使用した IAM ユーザー ID とロールを確認するには、次のコマンドを実行します。

 aws sts get-caller-identity

execute-command コマンドを実行する IAM ユーザーまたはロールには、次のアクセス許可が必要です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:ExecuteCommand",
      "Resource": "arn:aws:ecs:example-region:example-arn:cluster/example-cluster/*"
    }
  ]
}

上記のアクセス許可を付与するには、新しくポリシーをアタッチするか、既存のポリシーを更新します。

タスク定義で pidMode が task に設定されているかどうかを確認する

各プロセス ID (PID) 名前空間では、1 つの ECS Exec セッションのみを実行できます。タスクで PID 名前空間を共有する場合、ECS Exec セッションは 1 つのコンテナでのみ開始できます。

タスク定義で readonlyRootFilesystem が true に設定されているかどうかを確認する

必要なディレクトリとファイルを作成するには、SSM Agent には書き込み可能なコンテナファイルシステムが必要です。タスク定義パラメータ readonlyRootFilesystem または他の方法により、ルートファイルシステムを読み取り専用に設定することはできません。

タスク定義の更新後にエラーが発生する場合は、GitHub のウェブサイトにある amazon-ecs-exec-checker を実行してください。amazon-ecs-exec-checker スクリプトは、AWS CLI 環境および Amazon ECS クラスターまたはタスクを検証します。このスクリプトは、前提条件を満たしていない場合にも通知を行います。

関連情報

Using ECS Exec (ECS Exec を使用する)

コメントはありません

関連するコンテンツ