DynamoDB GetItem mit der AWS CLI

Auf der CLI ist der Key ein DynamoDB-JSON-String, bei dem jeder Wert in seinen Typ eingepackt ist ({"S": "..."}, {"N": "..."}) — der größte Teil der Schwierigkeit bei einem aws dynamodb get-item liegt also im Shell-Quoting, nicht in DynamoDB. Der Key selbst muss weiterhin der vollständige Primary Key sein.

Code

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"}'

Die Antwort gibt das Item als DynamoDB JSON aus:

{
  "Item": {
    "Artist": {"S": "Arturo Sandoval"},
    "SongTitle": {"S": "Cubano Chant"},
    "AlbumTitle": {"S": "Danzon"},
    "Year": {"N": "1994"}
  }
}

Erklärung

  • Ein Treffer-Fehlschlag gibt überhaupt nichts aus — kein Item, kein leeres Objekt, Exit-Code 0. Das direkt in jq zu pipen scheitert bei leerer Eingabe, fange die Ausgabe also ab und prüfe den String, bevor du ihn parst.
  • Das Quoting ist die eigentliche Arbeit — setze das JSON in Bash und Zsh in einfache Anführungszeichen, damit $ und ! literal bleiben. Windows cmd und PowerShell folgen anderen Regeln; leg den Key in eine Datei und übergib --key file://key.json, statt dich mit ihnen herumzuschlagen.
  • --query ist nicht --projection-expression--query ist JMESPath und wird auf deinem Rechner angewendet, nachdem das Item gelesen und abgerechnet wurde. --projection-expression ist das, was DynamoDB sieht. Keins von beiden senkt die Lesekosten (warum).
  • Die #proj0-Aliase sind Pflicht, keine StilfrageYear steht auf AWS' Liste reservierter Wörter, und es direkt in einer Projection zu benennen wird abgelehnt.
  • Frag nach, was es gekostet hat — ergänze --return-consumed-capacity TOTAL und die Antwort erhält einen ConsumedCapacity-Block. Für dieses Item, unter 4 KB, sind das 0,5 Kapazitätseinheiten, oder 1,0, sobald du --consistent-read ergänzt (der Trade-off).
  • CLI v2 blättert deine Ausgabe — standardmäßig läuft alles durch less auf macOS und Linux (mit den FRX-Flags) oder more auf Windows. In einem Skript ist das selten das, was du willst: übergib --no-cli-pager oder setze AWS_PAGER auf einen leeren String.

Mach es visuell

Diesen --key-Klumpen von Hand zu tippen kostet die Zeit. Der DynamoDB Expression Builder baut das DynamoDB JSON und die Alias-Maps aus einem Formular und gibt dir einen fertig ausführbaren aws dynamodb-Befehl zurück.

DynoTable macht dasselbe gegen eine echte Tabelle: Zeilen in einem Grid durchsuchen und dann die dahinterliegende Abfrage als CLI-Befehl exportieren. DynoTable herunterladen.

Verwandte Leitfäden

Referenzen

Zuletzt verifiziert am 2026-07-28 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.