AWS CLI ile DynamoDB GetItem
CLI'da anahtar bir DynamoDB JSON dizesidir, her değer kendi türüyle sarmalanmıştır ({"S": "..."}, {"N": "..."}); bu da bir aws dynamodb get-item çağrısındaki zorluğun çoğunun DynamoDB değil, kabuk tırnaklaması olduğu anlamına gelir. Anahtarın kendisinin yine de tam birincil anahtar olması gerekir.
Kod
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"}'Yanıt, öğeyi DynamoDB JSON olarak yazdırır:
{
"Item": {
"Artist": {"S": "Arturo Sandoval"},
"SongTitle": {"S": "Cubano Chant"},
"AlbumTitle": {"S": "Danzon"},
"Year": {"N": "1994"}
}
}Açıklama
- Eşleşme yoksa hiçbir şey yazdırılmaz — ne
Item, ne boş bir nesne, çıkış kodu 0. Bunu doğrudanjq'ya boruyla vermek boş girdide başarısız olur, dolayısıyla çıktıyı yakalayın ve ayrıştırmadan önce dizeyi sınayın. - Asıl iş tırnaklamadır —
$ve!düz kalsın diye bash ve zsh'de JSON'ı tek tırnak içine alın. Windowscmdve PowerShell farklı kurallar izler; onlarla boğuşmak yerine anahtarı bir dosyaya koyup--key file://key.jsongeçirin. --query,--projection-expressiondeğildir —--queryJMESPath'tir ve öğe okunup faturalandırıldıktan sonra sizin makinenizde uygulanır. DynamoDB'nin gördüğü--projection-expression'dır. İkisi de okuma maliyetini azaltmaz (nedeni).#proj0takma adları biçimsel değil, zorunludur —Year, AWS'nin ayrılmış sözcük listesindedir ve bir izdüşümde doğrudan adlandırılması reddedilir.- Neye mal olduğunu sorun —
--return-consumed-capacity TOTALekleyin, yanıt birConsumedCapacitybloğu kazanır. 4 KB'ın altındaki bu öğe için bu, 0,5 kapasite birimi okur;--consistent-readeklediğinizde 1,0 olur (ödünleşim). - CLI v2 çıktınızı sayfalar — varsayılan olarak her şey macOS ve Linux'ta
less(FRXbayraklarıyla), Windows'ta isemoreüzerinden geçer. Bir betikte bu nadiren istediğiniz şeydir:--no-cli-pagergeçirin ya daAWS_PAGER'ı boş bir dizeye ayarlayın.
Görsel olarak yapın
O --key yığınını elle yazmak zamanın gittiği yerdir. DynamoDB Expression Builder DynamoDB JSON'ı ve takma ad haritalarını bir formdan oluşturur, sonra size çalıştırmaya hazır bir aws dynamodb komutu verir.
DynoTable aynı şeyi gerçek bir tabloya karşı yapar: satırları bir ızgarada gözden geçirin, sonra arkalarındaki sorguyu bir CLI komutu olarak dışa aktarın. DynoTable'ı indirin.
İlgili kılavuzlar
- Query ile Scan karşılaştırması — tek bir
get-item'ın birquery'yi ne zaman yendiği. - DynamoDB bölüm anahtarları nasıl çalışır —
get-item'ın neden tam anahtara ihtiyaç duyduğu. - DynamoDB ResourceNotFoundException — buradaki her zamanki ilk hata: yanlış tablo adı ya da Bölge.
- "The provided key element does not match the schema" — geçirdiğiniz anahtar tablonun anahtar şemasıyla eşleşmiyor.
Kaynaklar
- 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
En son 2026-07-28 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.