AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何配置 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 官方已更新 2 年前