

适用于 Xamarin 的 AWS 移动 SDK 现已包含在。 适用于 .NET 的 AWS SDK本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 故障排除
<a name="troubleshooting-xamarin"></a>

本主题提供了几种帮助您排查在使用适用于 .NET 和 Xamarin 的 AWS Mobile SDK 时可能遇到的问题的思路。

## 确保 IAM 角色具有所需权限
<a name="ensure-iam-role-has-required-permissions"></a>

在调用 AWS 服务时，您的应用程序应使用来自 Cognito 身份池的身份。池中的每个身份都与一个 IAM (Identity and Access Management) 角色相关联。

一个角色具有一个或多个与之关联的策略文件，用来指定分配给该角色的用户可以访问哪些 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 代理调试程序
<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 调试代理

Charles 和 Fiddler 都需要一些配置才能查看 SSL 加密的流量，请阅读此类工具的相关文档，以进一步了解相应信息。如果您使用的 Web 调试代理无法配置为显示加密流量，请打开 aws\$1endpoints\$1json 文件，将需要调试的 AWS 服务的 HTTP 标签设置为 true。