

適用於 Xamarin 的 AWS Mobile SDK 現在已包含在 中 適用於 .NET 的 AWS SDK。本指南參考 Mobile SDK for Xamarin 的封存版本。

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

# 故障診斷
<a name="troubleshooting-xamarin"></a>

本主題說明使用適用於 .NET 和 Xamarin 的 AWS Mobile SDK 時可能遇到的問題進行故障診斷的一些想法。

## 確保 IAM 角色具有必要的許可
<a name="ensure-iam-role-has-required-permissions"></a>

呼叫 AWS 服務時，您的應用程式應該使用來自 Cognito 身分集區的身分。集區中的每個身分都與 IAM （身分和存取管理） 角色相關聯。

角色有一或多個與其相關聯的政策檔案，可指定指派給角色的使用者可存取的 AWS 資源。根據預設，每個身分集區會建立兩個角色：一個用於已驗證的使用者，另一個用於未驗證的使用者。

您需要修改現有的政策檔案，或將新的政策檔案與應用程式所需的許可建立關聯。如果您的應用程式允許已驗證和未驗證的使用者，則必須授予這兩個角色存取應用程式所需 AWS 資源的許可。

下列政策檔案顯示如何授予對 S3 儲存貯體的存取權：

```
{
   "Statement":[
      {
         "Action":[
            "s3:AbortMultipartUpload",
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject"
         ],
         "Effect":"Allow",
         "Resource":"arn:aws:s3:::MYBUCKETNAME/*",
         "Principal":"*"
      }
   ]
}
```

下列政策檔案顯示如何授予 DynamoDB 資料庫的存取權：

```
{
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:PutItem",
            "dynamodb:Scan",
            "dynamodb:UpdateItem"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/MyTable"
      }
   ]
}
```

如需指定政策的詳細資訊，請參閱 [IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html)。

## 使用 HTTP Proxy Debugger
<a name="using-a-http-proxy-debugger"></a>

如果您應用程式呼叫的 AWS 服務具有 HTTP 或 HTTPS 端點，您可以使用 HTTP/HTTPS 代理偵錯工具來檢視請求和回應，以深入了解發生的情況。有許多 HTTP 代理偵錯工具可供使用，例如：
+  [Charles](http://www.charlesproxy.com/) - Windows 和 OSX 的 Web 偵錯代理
+  [Fiddler](http://www.telerik.com/fiddler) - Windows 的 Web 偵錯 Proxyfidd

Charles 和 Fiddler 都需要一些組態才能檢視 SSL 加密流量，請閱讀這些工具的文件以取得進一步資訊。如果您使用的 Web 偵錯代理無法設定為顯示加密流量，請開啟 aws\$1endpoints\$1json 檔案，並將您需要偵錯的 AWS 服務 HTTP 標籤設定為 true。