BatchGetItem - AWS AppSync

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

BatchGetItem

BatchGetItem请求映射文档允许您告诉 D AWS AppSync ynamoDB 解析器向 DynamoDB 发出BatchGetItem请求,以检索多个项目,可能跨多个表。对于此请求模板,您必须指定以下各项:

  • 要从中检索项目的表名称

  • 要从每个表中检索的项目的键

DynamoDB BatchGetItem 限制适用,并且无法提供任何条件表达式

BatchGetItem 映射文档具有以下结构:

{ "version" : "2018-05-29", "operation" : "BatchGetItem", "tables" : { "table1": { "keys": [ ## Item to retrieve Key { "foo" : ... typed value, "bar" : ... typed value }, ## Item2 to retrieve Key { "foo" : ... typed value, "bar" : ... typed value } ], "consistentRead": true|false, "projection" : { ... } }, "table2": { "keys": [ ## Item3 to retrieve Key { "foo" : ... typed value, "bar" : ... typed value }, ## Item4 to retrieve Key { "foo" : ... typed value, "bar" : ... typed value } ], "consistentRead": true|false, "projection" : { ... } } } }

字段定义如下:

BatchGetItem 字段

version

模板定义版本。仅支持 2018-05-29。该值为必填项。

operation

要执行的 DynamoDB 操作。要执行 BatchGetItem DynamoDB 操作,该字段必须设置为 BatchGetItem。该值为必填项。

tables

要从中检索项目的 DynamoDB 表。该值是一个映射,其中表名称被指定为映射的键。必须提供至少一个表。该 tables 值为必填项。

keys

DynamoDB 键列表,表示要检索的项目的主键。DynamoDB 项目可能具有单个哈希键,也可能具有哈希键和排序键,具体取决于表结构。有关如何指定“类型化值”的更多信息,请参阅类型系统(请求映射)

consistentRead

执行GetItem操作时是否使用一致性读取。此值是可选的,默认为 false

projection

用于指定从 DynamoDB 操作返回的属性的投影。有关投影的更多信息,请参阅投影。该字段是可选的。

要记住的事项:

  • 如果尚未从表中检索某个项目,则 null 元素将显示在该表的数据块中。

  • 根据在请求映射模板中提供调用结果的顺序,将按表对这些结果进行排序。

  • BatchGetItem 中的每个 Get 命令都是原子性的,但可以部分处理一个批次。如果由于错误而部分处理了批次,则未处理的密钥将作为区块内部调用结果的一部分返回。unprocessedKeys

  • BatchGetItem 限制为 100 个键。

对于以下示例请求映射模板:

{ "version": "2018-05-29", "operation": "BatchGetItem", "tables": { "authors": [ { "author_id": { "S": "a1" } }, ], "posts": [ { "author_id": { "S": "a1" }, "post_id": { "S": "p2" } } ], } }

$ctx.result 中可用的调用结果如下所示:

{ "data": { "authors": [null], "posts": [ # Was retrieved { "author_id": "a1", "post_id": "p2", "post_title": "title", "post_description": "description", } ] }, "unprocessedKeys": { "authors": [ # This item was not processed due to an error { "author_id": "a1" } ], "posts": [] } }

$ctx.error 包含有关该错误的详细信息。请求映射模板中提供的密钥unprocessedKeys数据、和每个表键都保证出现在调用结果中。已删除的项目显示在数据块中。尚未处理的项目在数据块内被标记为空并放置在数据unprocessedKeys块内。

要获得更完整的示例,请按照 DynamoDB 批处理教程进行操作,这里有 AppSync 教程:Dynamo DB 批处理解析器。