AWS CLI での DynamoDB BatchGetItem
aws dynamodb batch-get-item は、1つのコマンドでプライマリキーによって最大100個のアイテムを取得します(最大16 MB)。キーは --request-items に、テーブル → キーのマップとして DynamoDB JSON で渡します。そして出力の UnprocessedKeys を必ず確認してください。バッチは、要求した内容の一部だけを正当に返すことがあるからです。
Code
aws dynamodb batch-get-item \
--request-items '{
"Music": {
"Keys": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}},
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "A Mis Abuelos"}},
{"Artist": {"S": "Ella Fitzgerald"}, "SongTitle": {"S": "Misty"}}
]
}
}'出力は各テーブルを、見つかったアイテムと残りにマッピングします。
{
"Responses": {
"Music": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
]
},
"UnprocessedKeys": {}
}Explanation
--request-items— テーブル名 →{"Keys": [...]}のマップ。1つのコマンドが複数のテーブルにまたがることもできます。各キーは完全なプライマリキー(複合キーならパーティション + ソート)である必要があります。100個を超えるキー、または同じキーが2回あるとValidationExceptionで失敗します。Responses— アイテムは特定の順序なしで返り、存在しないキーは単に現れません。結果はキー属性でリクエストと突き合わせてください。UnprocessedKeys—query/scanとは異なり、CLI は部分的なバッチを自動リトライしません(ページネーショントークンではありません)。マップが空でない場合(スロットリング、16 MB を超えるレスポンスなど)は、その正確なマップを--request-itemsとして再実行し(すでに正しい形式です)、試行の合間にバックオフを入れてください。- テーブルごとに
"ProjectionExpression": "..."("ExpressionAttributeNames"とともに)を追加して一部の属性だけを取得したり、強い整合性のある読み取りには"ConsistentRead": trueを指定できます。バッチ読み取りはデフォルトで結果整合性です。 - ヒント: キーが数個を超える場合は、マップをファイルに保持して
--request-items file://keys.jsonを渡しましょう。
Do it visually
シェルのクォート内で入れ子の DynamoDB JSON を手書きするのはミスを招きます。DynamoDB Expression Builder は型付きのキー/値マップを構築し、すぐに実行できる CLI コマンドをコピーします。
複数のテーブルにまたがってアイテムを GUI で取得・確認するには(JSON エスケープなし、再実行の管理なし)、DynoTable をダウンロードしてください。
Related examples
- DynamoDB BatchGetItem in Node.js — AWS SDK v3 での同じバッチ読み取り。
- DynamoDB BatchGetItem in Python — boto3 での同じバッチ読み取り。
- DynamoDB GetItem with the AWS CLI — これがバッチ化する単一アイテムの読み取り。
- Batch operations in DynamoDB — 制限、部分的な失敗、そしてバッチ化が割に合うのはいつか。
- "Too many items requested for the BatchGetItem call" — 1つのリクエストに100個を超えるキー。
- "Provided list of item keys contains duplicates" — 1つのバッチに同じキーが2回。
References
- BatchGetItem — Amazon DynamoDB API Reference
- batch-get-item — AWS CLI Command Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。