设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK - AWS Mobile SDK

AWS SDK for .NET 现在包括适用于 Xamarin 的 AWS Mobile SDK。本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK

您可以设置 .NET 和 Xamarin 的 AWS Mobile SDK 并开始构建新项目,也可以将开发工具包与现有项目集成。您还可以克隆并运行示例,以便了解该开发工具包的工作原理。请按照以下步骤操作,设置并开始使用适用于 .NET 和 Xamarin 的 AWS Mobile SDK。

先决条件

在使用适用于 .NET 和 Xamarin 的 AWS Mobile SDK 之前,您必须先执行以下操作:

具备上述条件后,执行以下操作:

  1. 使用 Amazon Cognito 获取 AWS 凭证。

  2. 为您将在应用程序中使用的每项 AWS 服务设置所需权限。

  3. 在 IDE 中创建一个新项目。

  4. 安装适用于 .NET 和 Xamarin 的 AWS Mobile SDK。

  5. 配置适用于 .NET 和 Xamarin 的 AWS Mobile SDK。

第 1 步:获取 AWS 凭证

要在应用程序中调用 AWS,您必须先获取 AWS 凭证。为此,您需要使用 Amazon Cognito(一项 AWS 服务),以允许您的应用程序访问软件开发工具包中的服务,而不必在应用程序中嵌入您的私有 AWS 凭证。

要开始使用 Amazon Cognito,您必须创建一个身份池。身份池用于存储特定于您账户的信息,并通过如下所示的唯一身份池 ID 来识别:

"us-east-1:00000000-0000-0000-0000-000000000000"
  1. 登录 Amazon Cognito 控制台,依次选择 Manage Federated Identities (管理联合身份)Create new identity pool (创建新的身份池)

  2. 输入身份池的名称,然后选中相应复选框,以启用对未经身份验证的身份的访问权限。选择 Create Pool,以创建您的身份池。

  3. 选择允许以创建两个与您的身份池关联的默认角色,一个用于未经身份验证的用户,另一个用于经过身份验证的用户。这些默认角色会向 Amazon Cognito Sync 和 Amazon Mobile Analytics 提供身份池访问权限。

通常,您只对一个应用程序使用一个身份池。

身份池创建完毕后,您需创建一个 CognitoAWSCredentials 对象(将其传递给您的身份池 ID),然后将其传递给 AWS 客户端的构造函数,以获取 AWS 凭证,具体操作方法如下:

CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "us-east-1:00000000-0000-0000-0000-000000000000", // Your identity pool ID RegionEndpoint.USEast1 // Region ); // Example for |MA| analyticsManager = MobileAnalyticsManager.GetOrCreateInstance( credentials, RegionEndpoint.USEast1, // Region APP_ID // app id );

第 2 步:设置权限

您必须为您要在应用程序中使用的每项 AWS 服务设置权限。首先,您需要了解 AWS 查看应用程序中用户的方式。

如果有人使用您的应用程序并调用 AWS,则 AWS 会为此用户分配一个身份。您在第 1 步中创建的身份池就是 AWS 存储这些身份的地方。其中有两种类型的身份:经过身份验证的身份和未经身份验证的身份。经过身份验证的身份属于已通过公共登录提供商(例如,Facebook、Amazon、Google)进行身份验证的用户。未经身份验证的身份属于来宾用户。

每种身份都与 AWS Identity and Access Management 角色关联。在第 1 步中,您创建了两个 IAM 角色,一个用于经过身份验证的用户,另一个用于未经身份验证的用户。每个 IAM 角色都有一个或多个附加到自身的策略,用于指定分配给相应角色的身份可以访问哪些 AWS 服务。例如,以下策略示例会授予对 Amazon S3 存储桶的访问权限:

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

要为您要在应用程序中使用的 AWS 服务设置权限,只需修改附加到相应角色的策略即可。

  1. 转到 IAM 控制台并选择“Roles (角色)”。在搜索框中键入您的身份池名称。选择要配置的 IAM 角色。如果您的应用程序允许经过身份验证和未经身份验证的用户,则您需要为这两个角色授予权限。

  2. 单击附加策略,选择所需的策略,然后单击附加策略。您为 IAM 角色创建的默认策略会提供对 Amazon Cognito Sync 和 Mobile Analytics 的访问权限。

有关如何创建策略或从现有策略列表中选择策略的更多信息,请参阅 IAM 策略

步骤 3:创建新的 项目

Windows

您可以使用 Visual Studio 来开发您的应用程序。

OS X

您可以使用 Visual Studio 开发应用程序。使用 Xamarin 进行 iOS 开发需要访问 Mac 才能运行您的应用程序。有关更多信息,请参阅在 Windows 上安装 Xamarin.iOS

注意

JetBrains 推出的跨平台商用 IDE Rider 在 Windows 和 Mac 平台上均支持 Xamarin。

第 4 步:安装适用于.NET 和 Xamarin 的 AWS Mobile SDK

Windows

方法 1:使用 Package Manager 控制台安装

适用于.NET 和 Xamarin 的 AWS Mobile SDK 由一组.NET 程序集组成。要安装适用于.NET 和 Xamarin 的 AWS Mobile SDK,请在 Package Manager 控制台中为每个程序包运行 install-package 命令。例如,要安装 Cognito Identity,请运行以下命令:

Install-Package AWSSDK.CognitoIdentity

所有项目都需要 AWS Core Runtime 和 Amazon Cognito 程序包。下表完整列出了每项服务对应的程序包名称。

服务 程序包名称

AWS Core Runtime

AWSSDK.Core

Amazon Cognito Sync

AWSSDK.CognitoSync

Amazon Cognito Identity

AWSSDK.CognitoIdentity

Amazon DynamoDB

AWSSDK.DynamoDBv2

Amazon Mobile Analytics

AWSSDK.MobileAnalytics

Amazon S3

AWSSDK.S3

Amazon SNS

AWSSDK.SimpleNotificationService

要添加预发行程序包,请在安装程序包时添加 -Pre 命令行参数,方法如下所示:

Install-Package AWSSDK.CognitoSync -Pre

您可以参阅 NuGet 上的 AWS SDK 程序包适用于 .NET 的 AWS SDK Github 存储库,查找 AWS 服务程序包的完整列表。

方法 2:使用 IDE 安装

在 Visual Studio 中

  1. 右键单击项目,然后单击 Manage NuGet Packages (管理 NuGet 软件包)

  2. 搜索您要添加到项目中的程序包名称。要添加预发布 NuGet 程序包,请选择 Include Prelease (包括预发布版)。您可以参阅 NuGet 上的 AWS SDK 程序包,查找 AWS 服务程序包的完整列表。

  3. 依次选择此程序包和 Install

Mac (OS X)

在 Visual Studio 中

  1. 右键单击软件包文件夹,然后选择 Add Packages (添加软件包)

  2. 搜索您要添加到项目中的程序包名称。要添加预发布 NuGet 软件包,请选择 Show pre-release packages (显示预发布软件包)。您可以参阅 NuGet 上的 AWS SDK 程序包,查找 AWS 服务程序包的完整列表。

  3. 选中所需软件包旁边的复选框,然后选择 Add Package (添加软件包)

重要

如果您要使用可移植类库开发应用程序,则还必须将 AWSSDK.Core NuGet 程序包添加到来自可移植类库的所有项目中。

第 5 步:配置适用于.NET 和 Xamarin 的 AWS Mobile SDK

设置日志记录

您可以使用 Amazon.AWSConfigs 类和 Amazon.Util.LoggingConfig 类,配置日志记录设置。这些类可在通过 Visual Studio 中的 Nuget Package Manager 提供的 AWSSdk.Core 程序集中找到。您可以将日志记录设置代码放置在 OnCreate 文件 (适用于 Android 应用程序) 或 MainActivity.cs 文件 (适用于 iOS 应用程序) 的 AppDelegate.cs 方法中。您还应将 using Amazonusing Amazon.Util 语句添加到 .cs 文件中。

按以下所示配置日志记录设置:

var loggingConfig = AWSConfigs.LoggingConfig; loggingConfig.LogMetrics = true; loggingConfig.LogResponses = ResponseLoggingOption.Always; loggingConfig.LogMetricsFormat = LogMetricsFormatOption.JSON; loggingConfig.LogTo = LoggingOptions.SystemDiagnostics;

当您将日志记录到 SystemDiagnostics 时,此框架会在内部将输出发送到 System.Console。如果您想记录 HTTP 响应,请设置 LogResponses 标记。这些值可以是“Always”、“Never”或“OnError”。

您也可以使用 LogMetrics 属性,记录 HTTP 请求的性能指标。日志格式可通过 LogMetricsFormat 属性来指定。有效值包括 JSON 或 standard。

设置区域端点

为所有服务客户端配置默认区域,如下所示:

AWSConfigs.AWSRegion="us-east-1";

这会为软件开发工具包中的所有服务客户端设置默认区域。您可以在创建服务客户端的实例时明确指定区域,以覆盖此设置,如下所示:

IAmazonS3 s3Client = new AmazonS3Client(credentials,RegionEndpoint.USEast1);

配置 HTTP 代理设置

如果您的网络位于代理之后,则您可以配置 HTTP 请求的代理设置,如下所示。

var proxyConfig = AWSConfigs.ProxyConfig; proxyConfig.Host = "localhost"; proxyConfig.Port = 80; proxyConfig.Username = "<username>"; proxyConfig.Password = "<password>";

校正时钟偏差

此属性通过确定正确的服务器时间并重新发出时间正确的请求,判断软件开发工具包是否应校正客户端时钟偏差。

AWSConfigs.CorrectForClockSkew = true;

如果服务调用导致异常且软件开发工具包已判断出本地时间和服务器时间之间存在差异,则可以设置此字段。

var offset = AWSConfigs.ClockOffset;

要详细了解时钟偏差,请参阅 AWS 博客上的时钟偏差校正

后续步骤

设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 之后,您可以: