

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用共用 AWS Cloud Map 命名空間對 Amazon ECS Service Connect 進行故障診斷
<a name="service-connect-shared-namespaces-troubleshooting"></a>

使用以下資訊對共用 AWS Cloud Map 命名空間和 Service Connect 的問題進行故障診斷。如需有關尋找錯誤訊息的詳細資訊，請參閱 [Amazon ECS 疑難排解](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html)。

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

**重要**  
必須使用 `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 操作如 `CreateCluster`或 因缺少 AWS Cloud Map 許可而`UpdateCluster`失敗時，就會發生這些問題。這些操作需要下列 AWS Cloud Map 動作的許可：  
+ `servicediscovery:GetNamespace`
確保取用者帳戶已接受資源共用邀請，且在 Service Connect 組態中使用了正確的命名空間 ARN。

**服務建立或更新失敗**  
當 Amazon ECS 操作如 `CreateService`或 因缺少 AWS Cloud Map 許可而`UpdateService`失敗時，就會發生這些問題。這些操作需要下列 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 已停止任務錯誤](resolve-stopped-errors.md)。  
執行任務需要下列 AWS Cloud Map 動作：  
+ `servicediscovery:GetOperation`
+ `servicediscovery:RegisterInstance`
確保取用者帳戶具有所需許可，並且可以存取共用命名空間。

**任務無法完全停止或停滯在 `DEACTIVATING` 或 `DEPROVISIONING` 狀態**  
當任務在關閉期間因為缺少許可而無法從 AWS Cloud Map 服務取消註冊時，就會發生此問題。錯誤會在任務附件中顯示為 `statusReason`，可使用 `DescribeTasks` API 擷取附件。如需詳細資訊，請參閱 *Amazon Elastic Container Service API Reference* 中的 [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)。  
停止任務需要下列 AWS Cloud Map 動作：  
+ `servicediscovery:DeregisterInstance`
+ `servicediscovery:GetOperation`
如果撤銷共用命名空間存取權，任務可能會保持 `DEACTIVATING` 或 `DEPROVISIONING` 狀態，直到命名空間存取權還原。需請求命名空間擁有者還原命名空間的存取權。