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

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 が task に設定されているかどうかを確認する

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

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

関連情報

ECS Exec を使用する

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ