AWS CLI で DynamoDB のすべてのアイテムを取得する
DynamoDB に「select all」はありません。テーブル全体を読み取るとは、ページネーションされた Scan を意味します。朗報: AWS CLI は自動でページネーションし、必要なだけ1 MB のサービス呼び出しを裏で行い、1つの結合された結果を出力します。
Code
aws dynamodb scan --table-name 'Music'結合された出力には、テーブル内のすべてのアイテムが含まれます。
{
"Items": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
],
"Count": 1287,
"ScannedCount": 1287
}Explanation
- 自動ページネーション — SDK とは異なり、CLI はデフォルトで
LastEvaluatedKeyを代わりにたどります。1つのコマンドで、すべてのアイテム。(--no-paginateは単一のサービス呼び出しに制限します。最初の約1 MB だけです。) - 大きなテーブル向けのチャンク化された出力 — テーブル全体が出力前にメモリに載るため、大きなテーブルはスライスで読み取ってください。
--max-items 1000は1000アイテムに加えてNextTokenを出力します。--starting-token <token>で再開します。チャンク間でアイテムを欠落/重複させないよう、--page-sizeを--max-itemsと等しく保ってください。 - バイト数は少なく、請求は同じ —
--projection-expression 'Artist, SongTitle'(予約語には--expression-attribute-namesとともに)はそれらの属性だけを返しますが、スキャンは依然として読み取ったすべてのアイテムの全バイトを課金します。 - 大きなテーブルでより高速: 並列スキャン —
--segment i --total-segments Nで N 個のコピーを実行し、それぞれが自分のスライスを自動ページネーションします。合計コストは同じで、実時間は大幅に短くなります。 - ついでにフィルタリング?
--filter-expressionはアイテムが読み取られて(課金されて)からそれらを落とします — Scan with a filter を参照。jqにパイプしますか?--output jsonを追加し、値が DynamoDB JSON であることを忘れないでください。
Do it visually
テーブルをざっと見るのに、DynamoDB JSON で埋まったターミナルは要りません。DynoTable をダウンロードすれば、任意のテーブルをページネーションされたグリッドで閲覧できます。スキャンのページ送りを代わりに行います。そしてスキャンして課金される前に、DynamoDB pricing calculator がテーブルのフル読み取りが実際にいくらかかるかを示します。
Related examples
- Get all items in Node.js — 明示的なループを使った同じフル読み取り。
- Get all items in Python — boto3 のページネーターを使った同じフル読み取り。
- DynamoDB Scan with the AWS CLI —
--filter-expressionを使ったスキャン。 - Parallel scans — Segment/TotalSegments、ワーカー数、そしていつ手を出すべきか。
- Why is my DynamoDB Scan slow and expensive? — コストモデルとその回避方法。
- DynamoDB ProvisionedThroughputExceededException — テーブル全体の読み取りは、これに当たる典型的な方法です。
- "The provided starting key is invalid" — ページネーションループで壊れた再開キー。
References
- Scan — Amazon DynamoDB API Reference
- scan — AWS CLI Command Reference
- Using AWS CLI pagination options — AWS CLI User Guide
- DynamoDB read and write operations (capacity unit consumption) — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。