我嘗試在 Amazon Elastic Container Service (Amazon ECS) 中執行 AWS Command Line Interface (AWS CLI) 命令 execute-command 時,出現以下錯誤:
「呼叫 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