如何配置 AWS AppSync 架构以处理 DynamoDB 中的嵌套 JSON 数据?
我希望我的 AWS AppSync 架构能够从具有嵌套 JSON 数据的 Amazon DynamoDB 表中检索响应。该如何操作?
简短描述
要获取 AWS AppSync 架构来处理 DynamoDB 中的嵌套 JSON 数据,请执行以下操作:
- 将嵌套 JSON 数据项添加到 DynamoDB 表中。
- 创建 AWS AppSync API 并附加数据源。
- 在 AWS AppSync API 中配置嵌套的 JSON 架构。
- 将解析器附加到 getItems 查询。
- 创建新的测试查询。
**重要提示:**如果字段名称未映射到嵌套的 JSON 数据,AWS AppSync 架构会在将 null 值传递到对 DynamoDB 的响应中。
解决方法
将嵌套 JSON 数据项添加到 DynamoDB 表中
1. 打开 Amazon DynamoDB 控制台。
2. 选择 Create table(创建表)。
3. 在 Table name(表名)字段中,输入描述性名称。
4. 在 Partition key(分区键)字段中,输入字段名称。例如: id。
5. 选择 Create table(创建表)。新表将显示在控制台的 Tables(表)页面上。
6. 在 Name(名称)列中,选择新表的名称。表的 Overview(概览)页面随即打开。
7. 选择 Actions(操作)下拉列表。然后选择 Create item(创建项目)。这将打开 Create item(创建项目)页面。
8. 选择 JSON 按钮。
9. 复制以下嵌套 JSON 记录并粘贴到 JSON 编辑器中,然后选择 Save(保存):
重要提示: 确保使用嵌套 JSON 记录覆盖 JSON 编辑器中预填充的内容。
示例嵌套 JSON 记录
{ "id": "123", "product": { "model": { "property": { "battery": "li-ion", "device": "iOT-Device", "pressure": "1012", "up_time": "02:12:34" } } }, "status": "In-Stock" }
有关更多信息,请参阅创建表。
创建 AWS AppSync API 并附加数据源
1. 打开 AWS AppSync 控制台。
2. 选择创建 API。
3. 在 Getting Started(入门)页面中的 Customize your API or import from Amazon DynamoDB(自定义 API 或从 Amazon DynamoDB 中导入)下选择 Build from scratch(从头开始构建)。
4. 选择 Start(开始)。
5. 在 API name(API 名称)字段中,输入 API 的名称。
6. 选择 Create(创建)。
7. 在左侧导航窗格中,选择 Data Sources(数据源)。
8. 选择 Create data source(创建数据源)。
9. 在 New Data Source(新数据源)页面上的 Create new Data Source(创建新数据源)下选择以下选项:对于 Data source name(数据源名称),请输入描述性名称。对于 Data source type(数据来源类型),请选择 Amazon DynamoDB table(Amazon DynamoDB 表)。对于 Region(区域),选择包含您的 DynamoDB 表的区域。对于 Table name(表名称),选择您刚创建的表。
**重要提示:**将所有其他选项保留为默认选项。
10. 选择 Create(创建)。
有关更多信息,请参阅附加数据源。
在 AWS AppSync API 中配置嵌套的 JSON 架构
1. 打开 AWS AppSync 控制台。
2. 在左侧导航窗格中,选择 Schema(架构)。
3. 复制以下嵌套 JSON 架构并粘贴到 JSON 编辑器中,然后选择 Save Schema(保存架构):
重要提示: 确保使用嵌套 JSON 架构覆盖 JSON 编辑器中预填充的内容。
示例嵌套 JSON 架构
type Query { getItems(id: String!): allData } type allData { id: String! product: toModel status: String } type items { battery: String device: String pressure: String up_time: String } schema { query: Query } type toModel { model: toProperties } type toProperties { property: items }
有关更多信息,请参阅设计架构。
将解析器附加到 getItems 查询
1. 打开 AWS AppSync 控制台。
2. 在 API 的 Schema(架构)页面的 Resolvers(解析器)下,滚动到 Query(查询)。
注意: 或者在 Filter types(筛选器类型)字段中,输入 Query(查询)。
3. 在 getItems(...): allData 旁的 Resolver(解析器)下,选择 Attach(附加)。
4. 在 Create new Resolver(创建新解析器)页面上,对于 Data source name(数据源名称),选择您已创建的 DynamoDB 表的名称。
**重要提示:**请勿更改 DynamoDB GetItem 操作的默认映射模板。
5. 选择 Save Resolvers(保存解析器)。
示例请求映射模板
{ "version": "2017-02-28", "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id), } }
示例响应映射模板
$util.toJson($ctx.result)
有关更多信息,请参阅配置解析器。
创建新的测试查询
1. 打开 AWS AppSync 控制台。
2. 在左侧导航窗格中,选择 Queries(查询)。
3. 在 API 的 Queries(查询)页面中的 Query editor(查询编辑器)中,复制并粘贴以下查询:
示例测试查询
query getItem { getItems(id:"123") { id product{ model{ property{ pressure device battery up_time } } } status } }
4. 要运行测试查询,选择 play icon(播放图标)或者按下 Ctrl/Cmd + Enter。
示例测试查询结果
{ "data": { "getItems": { "id": "123", "product": { "model": { "property": { "pressure": "1012", "device": "iOT-Device", "battery": "li-ion", "up_time": "02:12:34" } } }, "status": "In-Stock" } } }
现在,您可以通过 AWS AppSync GraphQL 操作从 Amazon DynamoDB 表检索任何嵌套 JSON 数据。
相关信息
相关内容
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前