BatchGetItem - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

BatchGetItem

BatchGetItem リクエストオブジェクトを使用すると、 AWS AppSync DynamoDB 関数に DynamoDB にBatchGetItem複数の項目を取得するリクエストを行うように指示できます。場合によっては複数のテーブルにまたがります。このリクエストオブジェクトでは、以下の情報を指定する必要があります。

  • 項目を取得するテーブルの名前

  • 各テーブルから取得する項目のキー

DynamoDB の BatchGetItem 制限が適用されるため、条件式を指定することはできません

BatchGetItem リクエストオブジェクトのノードの構造は次のとおりです。

type DynamoDBBatchGetItemRequest = { operation: 'BatchGetItem'; tables: { [tableName: string]: { keys: { [key: string]: any }[]; consistentRead?: boolean; projection?: { expression: string; expressionNames?: { [key: string]: string }; }; }; }; };

各フィールドの定義は以下のようになります。

BatchGetItem フィールド

operation

実行する DynamoDB の処理。BatchGetItem DynamoDB の処理を実行するには、これを BatchGetItem に設定する必要があります。この値は必須です。

tables

項目を取得する DynamoDB テーブル。値は、キーとしてテーブル名が指定されているマップです。1 つ以上のテーブルを指定する必要があります。この tables の値は必須です。

keys

取り出す項目のプライマリキーを表す DynamoDB キーのリスト。DynamoDB の項目には、単一のハッシュキー、またはハッシュキーとソートキーが含まれています。これはテーブルの構造によって変わります。「型付き値」を指定する方法の詳細については、「型システム (リクエストマッピング)」を参照してください。

consistentRead

GetItem オペレーションの実行時に一貫した読み取りを使用するかどうか。この値はオプションであり、デフォルトは false です。

projection

DynamoDB オペレーションから返される属性を指定するために使用されるプロジェクション。プロジェクションの詳細については、「プロジェクション」を参照してください。このフィールドはオプションです。

覚えておくべきポイント:

  • 項目がテーブルから取得されなかった場合は、そのテーブルの data ブロックに null 要素があります。

  • 呼び出し結果は、リクエストオブジェクト内で提供された順序に基づいて、テーブル別にソートされます。

  • BatchGetItem 内の各 Get コマンドはアトミックですが、バッチは部分的に処理される場合があります。エラーによりバッチが部分的に処理された場合、未処理のキーはunprocessedKeysブロック内の呼び出し結果の一部として返されます。

  • BatchGetItem は 100 キーに制限されています。

次の例の関数リクエストハンドラーの場合:

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'BatchGetItem', tables: { authors: [util.dynamodb.toMapValues({ authorId })], posts: [util.dynamodb.toMapValues({ authorId, postId })], }, }; }

ctx.result で使用可能な呼び出し結果は以下のとおりです。

{ "data": { "authors": [null], "posts": [ // Was retrieved { "authorId": "a1", "postId": "p2", "postTitle": "title", "postDescription": "description", } ] }, "unprocessedKeys": { "authors": [ // This item was not processed due to an error { "authorId": "a1" } ], "posts": [] } }

ctx.error にエラーに関する詳細が含まれています。関数リクエストオブジェクトの結果で提供されたキーデータ unprocessedKeys、および各テーブルキーは、呼び出し結果に存在することが保証されます。削除された項目は data ブロックにあります。処理されていない項目は、データブロック内で null としてマークされ、unprocessedKeysブロック内に配置されます。