AWS CLI ile DynamoDB Scan
aws dynamodb scan otomatik sayfalar; bu hem kullanışlıdır hem de hasarı ölçmek için kullanacağınız tek sayının varsayılan olarak yanlış olması demektir. İşlemden bütünüyle kaçınmanın ne zaman doğru olduğu için bkz. Query ile Scan.
Kod
aws dynamodb scan \
--table-name 'Music' \
--filter-expression '#filter0 >= :filterValue0' \
--expression-attribute-names '{"#filter0":"Year"}' \
--expression-attribute-values '{":filterValue0":{"N":"2010"}}'--return-consumed-capacity taramayı değil, tek bir sayfayı bildirir
Kurgu, her biri kabaca 3,9 KB olan 600 şarkıdan oluşuyor ve bunların 8'i eşleşiyor. O komuta --return-consumed-capacity TOTAL ekleyin, CLI şunu yazdırır:
{ "Count": 8, "ScannedCount": 600, "CU": 128.5 }Tarama gerçekte üç sayfa boyunca 284,5 okuma birimine mal oldu. Count ve ScannedCount üçünün üzerinden toplandı; ConsumedCapacity ise ilkinden alındı ve gerisi atıldı. Bu bir hatadan çok bildirilmiş bir kuraldır — botocore'un DynamoDB sayfalayıcı yapılandırması Count ve ScannedCount'u sonuç anahtarı, ConsumedCapacity'yi ise toplanmayan anahtar olarak listeler.
Belirti, iş değişmezken rakamın değişmesidir. Aynı tablo, okunan aynı 600 öğe, bir fazla bayrak:
--page-size 50 -> { "Count": 8, "ScannedCount": 600, "CU": 24.0 }Bir tabloyu CLI taramasından boyutlandırıyorsanız, sayfaları --page-size artı --starting-token ile kendiniz toplayın ya da kapasiteyi CloudWatch'tan okuyun.
--max-items taramayı durdurmaz
--max-items 3 ucuz bir örneklem gibi okunur. Değildir:
--max-items 3 -> { "Count": 8, "ScannedCount": 600 }CLI, yeterli eşleşme bulana kadar sayfa istemeye devam etti — seçici bir filtreyle bu, tablonun tamamı demekti — sonra yazdırılan listeyi kırptı. Kendi devam belirteci bunu açıkça söylüyor:
{"ExclusiveStartKey": {"Artist": {"S": "Arturo Sandoval"},
"SongTitle": {"S": "Cubano Chant 0541"}}, "boto_truncate_amount": 3}boto_truncate_amount istemci tarafında bir sayaçtır. DynamoDB'nin ne okuduğunu sınırlamak için, her alttaki isteğe API'nin Limit'ini koyan --page-size'ı kullanın ve --starting-token ile devam edin:
aws dynamodb scan \
--table-name 'Music' \
--page-size 500 \
--max-items 100 \
--starting-token "$NEXT_TOKEN"2026-07-28 tarihinde aws-cli/2.36.9 ile DynamoDB Local'a (amazon/dynamodb-local) karşı ölçüldü. Yukarıdaki JSON, CLI'ın kendi çıktısıdır; genişlik için --query ile yeniden biçimlendirilmiştir.
Açıklama
--filter-expressionokumadan sonra çalışır, dolayısıyla çıktıyı küçültür, faturayı değil.#filter0,Yearayrılmış bir sözcük olduğu için--expression-attribute-namesüzerindenYear'a takma ad koyar.--expression-attribute-valuessayının iki kez tırnaklanmasını ister: JSON'un çevresinde kabuk tırnakları ve değerin kendisi bir JSON string'i olarak. İçteki tırnakları düşürmek DynamoDB'ye hiç ulaşmaz — CLI onu yereldeInvalid type for parameter ExpressionAttributeValues.:v.N, value: 2010, type: <class 'int'>, valid types: <class 'str'>diyerek reddeder.- API çağrısını değiştiren bayrak
--page-size'dır. Alttaki her istekteLimitolur ve sayfa başına değerlendirilen öğe sayısını sınırlar. Sayfalama ailesinin geri kalanı (--max-items,--starting-token) CLI'ın kendi çıktısını yönetmesidir. - Paralel tarama, işçi başına
--segment N --total-segments Mister ve her işçi kendi--starting-token'ını tutar. Size duvar saati kazandırır, kapasite değil.
Görsel olarak yapın
DynamoDB Expression Builder, filtreyi ve iki JSON haritasını kabuk için önceden kaçışlanmış olarak verir; bu da CLI ifadelerini DynamoDB daha görmeden bozan tırnaklama katmanını ortadan kaldırır.
Tabloları bir GUI'de, filtrelenmiş ve sayfalanmış ızgaralarla keşfetmek için terminalden körlemesine taramak yerine DynoTable'ı indirin.
İlgili kılavuzlar
- Query ile Scan — bir
scanne zaman (nadiren) haklı çıkar. - DynamoDB Scan'im neden yavaş ve pahalı? — maliyet modeli ve ondan nasıl kaçınılır.
- DynamoDB ProvisionedThroughputExceededException — tam tablo taraması, sağlanan kapasiteli bir tablonun kapasitesine ne yapar.
- DynamoDB ThrottlingException — diğer kısıtlama ve üstel geri çekilmenin onu nasıl ele aldığı.