AWS CLI を使用して、1 つ以上のローカルセカンダリインデックスを含む Amazon DynamoDB テーブルを作成し、テーブルのインデックスを記述し、インデックスを使用してクエリを実行できます。
ローカルセカンダリインデックスを持つテーブルを作成する
ローカルセカンダリインデックスは、テーブルの作成と同時に作成する必要があります。これを行うには、create-table
パラメータを使用し、1 つ以上のローカルセカンダリインデックスの仕様を指定します。次の例では、ミュージックコレクション内の曲に関する情報を保持するためのテーブル (Music
) を作成しています。パーティションキーは Artist
で、ソートキーは SongTitle
です。AlbumTitle
属性に関するセカンダリインデックス AlbumTitleIndex
は、アルバムタイトルによるクエリを容易にします。
aws dynamodb create-table \ --table-name Music \ --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \ AttributeName=AlbumTitle,AttributeType=S \ --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --local-secondary-indexes \ "[{\"IndexName\": \"AlbumTitleIndex\", \"KeySchema\":[{\"AttributeName\":\"Artist\",\"KeyType\":\"HASH\"}, {\"AttributeName\":\"AlbumTitle\",\"KeyType\":\"RANGE\"}], \"Projection\":{\"ProjectionType\":\"INCLUDE\", \"NonKeyAttributes\":[\"Genre\", \"Year\"]}}]"
DynamoDB がテーブルを作成し、テーブルのステータスを ACTIVE
に設定するまで待機する必要があります。その後、テーブルへのデータ項目の入力を開始できます。describe-table を使用して、テーブル作成のステータスを判断できます。
ローカルセカンダリインデックスを持つテーブルの説明
テーブルのローカルセカンダリインデックスに関する情報を取得するには、describe-table
パラメータを使用します。インデックスごとに、名前、キースキーマ、および射影された属性にアクセスできます。
aws dynamodb describe-table --table-name Music
ローカルセカンダリインデックスのクエリ
テーブルに query
を実行するのとほぼ同じ方法で、ローカルセカンダリインデックスに対する query
オペレーションを使用することができます。インデックス名、インデックスソートキーのクエリ条件、および返す属性を指定する必要があります。この例では、インデックスは AlbumTitleIndex
、インデックスソートキーは AlbumTitle
です。
返される属性は、インデックスに射影された属性だけです。このクエリを変更して非キー属性を選択することもできますが、これには比較的コストのかかるテーブルフェッチアクティビティが必要です。テーブルのフェッチの詳細については、「属性の射影」を参照してください。
aws dynamodb query \ --table-name Music \ --index-name AlbumTitleIndex \ --key-condition-expression "Artist = :v_artist and AlbumTitle = :v_title" \ --expression-attribute-values '{":v_artist":{"S":"Acme Band"},":v_title":{"S":"Songs About Life"} }'