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 がテーブルのフル読み取りが実際にいくらかかるかを示します。

References

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

このリクエストをビジュアルに組み立てる

この操作を無料の DynamoDB クエリビルダーで組み立て — キー条件、フィルタ、インデックス、Limit、ソート順、ページネーションループ — 実行可能な SDK v3・CLI・boto3 のプログラムとしてコピーして戻れます。

DynamoDB クエリビルダーを開く

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。