

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

# BatchGetItem
<a name="js-aws-appsync-resolver-reference-dynamodb-batch-get-item"></a>

`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 フィールド
<a name="js-BatchGetItem-list"></a>

### BatchGetItem フィールドリスト
<a name="js-BatchGetItem-list-col"></a>

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

** `tables` **  
項目を取得する DynamoDB テーブル。値は、キーとしてテーブル名が指定されているマップです。1 つ以上のテーブルを指定する必要があります。この `tables` の値は必須です。    
** `keys` **  
取り出す項目のプライマリキーを表す DynamoDB キーのリスト。DynamoDB の項目には、単一のハッシュキー、またはハッシュキーとソートキーが含まれています。これはテーブルの構造によって変わります。「型付き値」を指定する方法の詳細については、「[型システム (リクエストマッピング)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)」を参照してください。  
** `consistentRead` **  
*GetItem* 処理の実行時に整合性のある読み込みを使用するかどうか。この値はオプションであり、デフォルトは *false* です。  
**`projection`**  
DynamoDB オペレーションから返される属性を指定するために使用されるプロジェクション。プロジェクションの詳細については、「[プロジェクション](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-projections)」を参照してください。このフィールドはオプションです。

覚えておくべきポイント:
+ 項目がテーブルから取得されなかった場合は、そのテーブルの 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` にエラーに関する詳細が含まれています。**data** キー、**unprocessedKeys** キー、およびリクエストマッピングテンプレートで渡された各テーブルキーは呼び出し結果に必ずあります。削除された項目は **data** ブロックにあります。処理されなかった項目は、data ブロック内で *null* としてマークされ、**unprocessedKeys** ブロックに挿入されます。