使用 DynamoDB 存储和检索数据 - AWS Mobile SDK

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

使用 DynamoDB 存储和检索数据

Amazon DynamoDB 是一项快速、高度可扩展、高度可用且经济实惠的非关系数据库服务。DynamoDB 消除了传统上对数据存储可扩展性的限制,同时保留了低延迟性和可预测的性能。

以下教程介绍了如何将 DynamoDB 对象持久化模型 (用于将对象存储在 DynamoDB 中) 与您的应用集成。

项目设置

先决条件

在开始本教程前,必须先完成有关设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 的说明中的所有步骤。

创建 DynamoDB 表

在对 DynamoDB 数据库执行数据读写操作之前,您必须先创建一个表。创建表时,您必须指定主键。主键由哈希特性 (attribute) 和可选的范围特性组成。有关如何使用主特性和范围特性的更多信息,请参阅处理表

  1. 转到 DynamoDB 控制台,然后单击 Create Table (创建表)。此时将打开“Create Table”向导。

  2. 按如下所示指定表名称、主键类型(哈希)和哈希特性名称 (“Id”),然后单击 Continue (继续)

    DynamoDB table creation interface showing table name, primary key type, and hash attribute configuration.
  3. 将下一个屏幕中的编辑字段留空,然后单击 Continue (继续)

  4. 接受 Read Capacity Units (读取容量单元)Write Capacity Units (写入容量单元) 的默认值,然后单击 Continue (继续)

  5. 在下一个屏幕上,在 Send notification to: (发送通知到:) 文本框中输入您的电子邮件地址,然后单击 Continue (继续)。此时将打开“Review”屏幕。

  6. 单击 Create。创建表可能需要几分钟。

设置 DynamoDB 的权限

为了使身份池能够访问 Amazon DynamoDB,您必须修改身份池的角色。

  1. 导航到 Identity and Access Management 控制台,然后在左侧窗格中单击 Roles (角色)。搜索身份池名称 – 将列出两个角色,一个用于未经身份验证的用户,另一个用于经过身份验证的用户。

  2. 单击用于未经过身份验证的用户(身份池名称后附加有“unauth”字样)的角色,然后单击 Create Role Policy (创建角色策略)

  3. 选择 Policy Generator (策略生成器),然后单击 Select (选择)

  4. Edit Permissions (编辑权限) 页上,按下图所示输入设置。DynamoDB 表的 Amazon 资源名称 (ARN) 类似于 arn:aws:dynamodb:us-west-2:123456789012:table/Books,由表所在的区域、所有者的 AWS 账号和表的名称构成,格式为 table/Books。有关指定 ARN 的更多信息,请参阅 DynamoDB 的 Amazon 资源名称

    Edit Permissions page for Amazon DynamoDB with Allow effect and ARN input field.
  5. 单击 Add Statement (添加语句),然后单击 Next Step (下一步)。向导将向您显示生成的配置。

  6. 单击应用策略

将 DynamoDB NuGet 程序包添加到项目中

按照设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 中第 4 步的说明操作,将 DynamoDB NuGet 程序包添加到您的项目中。

初始化 AmazonDynamoDBClient

将经过初始化的 Amazon Cognito 凭证提供程序和区域传递给 AmazonDynamoDB 构造函数,然后将客户端传递给 DynamoDBContext:

var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);

创建类

要向表中写入行,请定义一个类以保存行数据。该类还应包含用于保存行特性 (attribute) 数据的属性 (property),并将映射到在控制台中创建的 DynamoDB 表。以下类声明说明了这种类:

[DynamoDBTable("Books")] public class Book { [DynamoDBHashKey] // Hash key. public int Id { get; set; } public string Title { get; set; } public string ISBN { get; set; } public int Price { get; set; } public string PageCount { get; set; } public string Author{ get; set; } }

保存项目

要保存项目,请先创建一个对象:

Book songOfIceAndFire = new Book() { Id=1, Title="Game Of Thrones", ISBN="978-0553593716", Price=4, PageCount="819", Author="GRRM" };

然后保存。

context.Save(songOfIceAndFire);

要更新行,请修改 DDTableRow 类的实例,并按如上所示调用 AWSDynamoObjectMapper.save()

检索项目

使用主键检索项目:

Book retrievedBook = context.Load<Book>(1);

更新项目

如何更新项目:

Book retrievedBook = context.Load<Book>(1); retrievedBook.ISBN = "978-0553593716"; context.Save(retrievedBook);

删除项目

如何删除项目:

Book retrievedBook = context.Load<Book>(1); context.Delete(retrievedBook);

有关从 Xamarin 应用程序访问 DynamoDB 的更多信息,请参阅 Amazon DynamoDB