AWS CLI での DynamoDB GetItem
CLI ではキーは DynamoDB JSON の文字列 で、各値がその型で包まれます({"S": "..."}、{"N": "..."})。つまり aws dynamodb get-item の難しさの大半は DynamoDB ではなくシェルのクォートにあります。キーそのものはやはり完全なプライマリキーでなければなりません。
コード
aws dynamodb get-item \
--table-name 'Music' \
--key '{"Artist":{"S":"Arturo Sandoval"},"SongTitle":{"S":"Cubano Chant"}}' \
--projection-expression '#proj0, #proj1, #proj2, #proj3' \
--expression-attribute-names '{"#proj0":"Artist","#proj1":"SongTitle","#proj2":"AlbumTitle","#proj3":"Year"}'レスポンスはアイテムを DynamoDB JSON で表示します。
{
"Item": {
"Artist": {"S": "Arturo Sandoval"},
"SongTitle": {"S": "Cubano Chant"},
"AlbumTitle": {"S": "Danzon"},
"Year": {"N": "1994"}
}
}解説
- 見つからないときは何も表示されません。
Itemもなく、空のオブジェクトもなく、終了コードは 0 です。それをそのままjqに流すと空入力で失敗するので、出力を捕まえ、パースする前に文字列を検査しましょう。 - 本当の仕事はクォートです。bash と zsh では JSON をシングルクォートで囲み、
$と!をリテラルのままにします。Windows のcmdと PowerShell は別のルールなので、そちらと格闘するよりキーをファイルに置いて--key file://key.jsonを渡しましょう。 --queryは--projection-expressionではありません。--queryは JMESPath で、アイテムが読まれて課金された後に手元のマシンで適用されます。DynamoDB が見るのは--projection-expressionの方です。どちらも読み取りコストを減らしません(理由)。#proj0のエイリアスは様式ではなく必須です。Yearは AWS の予約語リストに載っており、射影でその名前を直接使うと拒否されます。- いくらかかったのか尋ねましょう。
--return-consumed-capacity TOTALを足すとレスポンスにConsumedCapacityブロックが増えます。4 KB 未満のこのアイテムなら 0.5 キャパシティユニット、--consistent-readを足せば 1.0 です(トレードオフ)。 - CLI v2 は出力をページャーに通します。デフォルトでは macOS と Linux では
less(FRXフラグ付き)、Windows ではmoreをすべてが通ります。スクリプトの中でそれが望みであることは稀なので、--no-cli-pagerを渡すか、AWS_PAGERを空文字列に設定しましょう。
ビジュアルに行う
時間が溶けるのは、あの --key の塊を手で打つところです。DynamoDB Expression Builder はフォームから DynamoDB JSON とエイリアスのマップを組み立て、そのまま実行できる aws dynamodb コマンドを返してくれます。
DynoTable は同じことを実際のテーブルに対して行います。グリッドで行を閲覧し、その裏にあるクエリを CLI コマンドとして書き出せます。DynoTable をダウンロード。
関連ガイド
- Query と Scan の比較 — 単発の
get-itemがqueryに勝るのはどんなときか。 - DynamoDB のパーティションキーの仕組み —
get-itemに完全なキーが必要な理由。 - DynamoDB ResourceNotFoundException — ここで最初に出る定番のエラー: テーブル名かリージョンの間違い。
- 「The provided key element does not match the schema」 — 渡したキーがテーブルのキースキーマと一致していない。
参考資料
- GetItem — Amazon DynamoDB API Reference
- get-item — AWS CLI Command Reference
- Read consistency — Amazon DynamoDB Developer Guide
- Using the pagination options in the AWS CLI (client-side pager) — AWS CLI User Guide
最終検証日 2026-07-28、上記にリンクした公式 AWS ドキュメントに照らして確認しました。