DynamoDB Query GSI dengan AWS CLI
Mengkueri sebuah global secondary index adalah aws dynamodb query biasa ditambah satu flag: --index-name. Key condition kemudian menargetkan key index, bukan key tabel — di sini AlbumTitle-index memungkinkan kita mengambil lagu berdasarkan album, sebuah pola akses yang tidak bisa dilayani base table (Artist + SongTitle) tanpa scan.
Code
aws dynamodb query \
--table-name 'Music' \
--index-name 'AlbumTitle-index' \
--key-condition-expression '#hashKey = :hashKeyValue' \
--expression-attribute-names '{"#hashKey":"AlbumTitle"}' \
--expression-attribute-values '{":hashKeyValue":{"S":"Danzon"}}'Output-nya adalah item yang cocok dalam DynamoDB JSON:
{
"Items": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
],
"Count": 2,
"ScannedCount": 2
}Penjelasan
--index-name— menyebut GSI yang dikueri (--table-nametetap wajib).--key-condition-expressionmenggunakan partition key index (dan sort key opsional) —AlbumTitledi sini — dengan operator yang sama seperti kueri tabel.- Hanya eventual consistency — GSI mereplikasi dari base table secara asinkron. Menambahkan
--consistent-readke kueri GSI tidak meningkatkannya; ia gagal denganValidationException. (Local secondary index mendukung strong consistency.) - Anda hanya mendapat atribut yang diproyeksikan — kueri GSI mengembalikan apa yang diproyeksikan index (
ALL,KEYS_ONLY, atau atribut yang tercantumINCLUDE) dan tidak bisa mengambil sisanya dari base table. - Key tidak unik di GSI — banyak item bisa berbagi key index yang sama, dan item yang tidak memiliki atribut key index tidak akan muncul (itulah pola sparse-index).
- Paginasi otomatis — CLI mengikuti token paginasi service di balik layar dan mencetak hasil gabungan. Gunakan
--max-itemsuntuk membatasi output (sebuahNextTokenmuncul; lanjutkan dengan--starting-token), atau--no-paginateuntuk satu panggilan service.
Lakukan secara visual
DynamoDB Expression Builder membangun key condition + map name/value untuk kueri index dan memberi Anda perintah CLI yang siap dijalankan.
Untuk menelusuri index sebuah tabel dan menjalankan kueri GSI dari sebuah form — grid berpaginasi, copy-as-CLI — unduh DynoTable.
Contoh terkait
- DynamoDB Query GSI di Node.js — kueri index yang sama dengan AWS SDK v3.
- DynamoDB Query GSI di Python — kueri index yang sama dengan boto3.
- DynamoDB Query dengan AWS CLI — mengkueri base table.
- GSI vs. LSI — tipe index mana yang cocok dengan pola akses.
- Mengapa GSI eventually consistent — lag replikasi dijelaskan.
- "The table does not have the specified index" — nama index tidak cocok (nama GSI case-sensitive).
- "Consistent reads are not supported on global secondary indexes" — mengapa flag consistent-read gagal pada GSI.
References
- Query — Amazon DynamoDB API Reference
- query — AWS CLI Command Reference
- Using Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- Using AWS CLI pagination options — AWS CLI User Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.