對搭配共用 AWS Cloud Map 命名空間使用 Amazon ECS Service Connect 的問題進行疑難排解 - Amazon Elastic Container Service

對搭配共用 AWS Cloud Map 命名空間使用 Amazon ECS Service Connect 的問題進行疑難排解

使用下列資訊,對共用 AWS Cloud Map 命名空間與 Service Connect 的相關問題進行疑難排解。如需有關尋找錯誤訊息的詳細資訊,請參閱 Amazon ECS 疑難排解

因缺少許可或撤銷命名空間存取權,会顯示與許可問題相關的錯誤訊息。

重要

必須使用 AWSRAMPermissionCloudMapECSFullPermission 受管許可來共用命名空間,Service Connect 才能在命名空間正常運作。

錯誤訊息會以下列其中一種格式顯示:

An error occurred (ClientException) when calling the <OperationName> operation: User: arn:aws:iam::<account-id>:user/<user-name> is not authorized to perform: <ActionName> on resource: <ResourceArn> because no resource-based policy allows the <ActionName> action

下列案例可能會導致此格式的錯誤訊息:

叢集建立或更新失敗

當 Amazon ECS 操作 (例如 CreateClusterUpdateCluster) 因缺少 AWS Cloud Map 許可而失敗時,會出現這些問題。這些操作需要下列 AWS Cloud Map 動作的許可:

  • servicediscovery:GetNamespace

確保取用者帳戶已接受資源共用邀請,且在 Service Connect 組態中使用了正確的命名空間 ARN。

服務建立或更新失敗

當 Amazon ECS 操作 (例如 CreateServiceUpdateService) 因缺少 AWS Cloud Map 許可而失敗時,會出現這些問題。這些操作需要下列 AWS Cloud Map 動作的許可:

  • servicediscovery:CreateService

  • servicediscovery:GetNamespace

  • servicediscovery:GetOperation (用於建立新的 AWS Cloud Map 服務)

  • servicediscovery:GetService (用於 AWS Cloud Map 服務已存在時)

確保取用者帳戶已接受資源共用邀請,且在 Service Connect 組態中使用了正確的命名空間 ARN。

ListServicesByNamespace 操作失敗

當 Amazon ECS ListServicesByNamespace 操作失敗時,會發生此問題。此操作需要下列 AWS Cloud Map 動作的許可:

  • servicediscovery:GetNamespace

若要解決此問題:

  • 確認取用者帳戶具有 servicediscovery:GetNamespace 許可。

  • 呼叫 API 時使用命名空間 ARN,而不是名稱。

  • 確保資源共用處於作用中狀態,且已接受邀請。

User: <iam-user> is not authorized to perform: <ActionName> on resource: <ResourceArn> with an explicit deny in an identity-based policy.

下列案例可能會導致此格式的錯誤訊息:

服務刪除失敗並停滯在 DRAINING 狀態

當 Amazon ECS DeleteService 操作因撤銷命名空間存取權而缺少 servicediscovery:DeleteService 許可時,會發生此問題。服務最初可能看起來已成功刪除,但會停滯在 DRAINING 狀態。錯誤訊息會顯示為 Amazon ECS 服務事件。

若要解決此問題,命名空間擁有者必須與取用者帳戶共用命名空間,才能完成服務刪除。

服務中的任務執行失敗

當任務因缺少許可而啟動失敗時,會發生此問題。錯誤訊息會顯示為已停止的任務錯誤。如需更多詳細資訊,請參閱 解決 Amazon ECS 已停止任務錯誤

執行任務需要執行下列 AWS Cloud Map 動作:

  • servicediscovery:GetOperation

  • servicediscovery:RegisterInstance

確保取用者帳戶具有所需許可,並且可以存取共用命名空間。

任務無法完全停止或停滯在 DEACTIVATINGDEPROVISIONING 狀態

當任務在關閉期間因缺少許可而無法從 AWS Cloud Map 服務取消註冊時,會發生此問題。錯誤會在任務附件中顯示為 statusReason,可使用 DescribeTasks API 擷取附件。如需詳細資訊,請參閱 Amazon Elastic Container Service API Reference 中的 DescribeTasks

停止任務需要執行下列 AWS Cloud Map 動作:

  • servicediscovery:DeregisterInstance

  • servicediscovery:GetOperation

如果撤銷共用命名空間存取權,任務可能會保持 DEACTIVATINGDEPROVISIONING 狀態,直到命名空間存取權還原。需請求命名空間擁有者還原命名空間的存取權。