【DynamoDB】AWS Lambda を使用した DynamoDB テーブル作成

前回はLambda関数からDynamoDBへアクセスする準備まで行いました。

今回はLambda関数からDynamoDBのテーブルの作成を行います。

テーブルの作成

内容

テーブルを作成するプログラムは以下の通りです。

説明

TableName

テーブル名を指定します。

KeySchema

KeySchema へプライマリキーを指定します。
KeyType: “HASH” はパーテションキー、KeyType: “RANGE” はソートキーとなります。
ソートキーはオプションですが、パーテションキーは必須です。
プライマリキーやソートキーの説明は以下を参考にして下さい。

AttributeDefinitions

AttributeDefinitions にて属性のタイプを指定します。
プライマリキー属性の指定は必須になります。
プライマリキー以外の属性(非キー属性)の指定はできません。
プライマリキーのみ指定できるので、指定可能な属性のタイプは以下の通りです。

“N”:数値
“S”:文字列
“B”:バイナリ

ProvisionedThroughput

キャパシティモードをプロビジョニングモードで作成しています。その為スループットを指定します。
スループットは ProvisionedThroughput へ指定します。
キャパシティモードのプロビジョニングモードについては以下を参照して下さい。

実行結果

“TableStatus” が “CREATING” なので、DynamoDBはテーブルのパーティションを割り当てている状態です。
“ACTIVE” に変わるとテーブルへ書き込み、読み込みが行えます。
パーティションの割り当てについては以下を参照して下さい。

ローカルプライマリインデックスの作成

内容

ローカルセカンダリインデックスはテーブル作成時に作成できます。
ローカルセカンダリインデックスは、ベーステーブルのパーテションキーは同じで、ソートキーに別の属性を使用します。
ベーステーブルとは違うソートキーを使用してテーブルを検索する際に使用します。
詳細は以下を参照して下さい。

作成するプログラムは以下の通りです。

セカンダリインデックスのパーテションキーに指定できるデータタイプはスカラー型のみであることに注意して下さい。

説明

ベーステーブルの説明

武器の一覧を保持するテーブルを作成しました。
プライマリキーは以下の通りです。

パーテションキー:name
ソートキー:id

ローカルセカンダリインデックスの説明

ローカルセカンダリインデックスのプライマリキーは以下の通りです。

パーテションキー:name
ソートキー:kind

ベーステーブルの定義

9行目から22行目がベーステーブルの定義になります。
通常のテーブル作成と変わりありませんが、予めローカルセカンダリインデックスのソートキーをベーステーブルに定義する必要があります。
具体的には14行目のAttributeDefinitionsにローカルセカンダリインデックスのソートキーである kind を指定しています。

ローカルセカンダリインデックスの定義

23行目のLocalSecondaryIndexes以下がローカルセカンダリインデックスの定義内容になります。
今回はProjectionTypeには “ALL” を指定しました。”ALL” を指定すると、ベーステーブルの全ての属性がローカルセカンダリインデックスで使用可能になります。
必要な属性のみ指定したい場合は、”INCLUDE” を指定し、必要な属性を指定します。

DynamoDbの実行メソッド

ローカルセカンダリインデックスはベーステーブルの作成と同時に作成する為、createTableメソッドを実行します。

スループット

ローカルセカンダリインデックスのスループット設定はベーステーブルの設定内容が引き継がれます。

実行結果

注意事項

テーブルの作成、更新、削除のようなテーブル操作では、DynamoDBドキュメントクライアントは使用できません。
DynamoDBドキュメントクライアントの説明はここではしません。
以下はドキュメントクライアントの設定例になります。

上記ではなく、以下のようにDynamoDB SDK を指定してください。

まとめ

次回はテーブル構成の確認を行います。

© DeNnie.Lab All Rights Reserved.