ローカルセカンダリインデックスの操作: AWS CLI - Amazon DynamoDB

ローカルセカンダリインデックスの操作: AWS CLI

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