📙
DynamoDB on LoclStackでテーブル作成
Localstackを使用するとAWSのリソースをローカルでテストするときにめちゃめちゃ便利なので大好きなので広めたい.
ついでにjsonファイルにテーブルを定義してコマンド実行時に読み込んで作成する方法を試してみる
※LocalStackをローカルにインストールして使用する方法もあるが自分はドッカーイメージを使用する
DynamoDBをlocalstack上で立ち上げる
このようにdocker-compose.yamlを記述した後, docker compose upなどで立ち上げれば4566ポートからアクセスが可能になる
docker-compose.yaml
version: '3.8'
services:
localstack:
container_name: localstack
image: localstack/localstack:0.13.3
environment:
SERVICES: dynamodb
EDGE_PORT: 4566
ports:
- '4566:4566'
テーブル作成 with command
そんでもってaws cliコマンドを使用してUserSampleテーブルを作成することができる
ここでLocalStackではエンドポイントをちょちょいと下のようにローカルの4566ポートを指定している
--endpoint-url=http://localhost:4566
aws --endpoint-url=http://localhost:4566 dynamodb create-table \
--table-name UserSample \
--attribute-definitions \
AttributeName=name,AttributeType=S \
AttributeName=id,AttributeType=S \
--key-schema AttributeName=name,KeyType=HASH AttributeName=id,KeyType=RANGE \
--billing-mode PAY_PER_REQUEST
ここで使用するのは
テーブル作成 with JSONファイル読み込み
jsonディテクトリを作成した後, sample.jsonを作成する
sample.jsonの中にテーブルを定義していく
{
"TableName": "sample",
"AttributeDefinitions": [
{
"AttributeName": "id",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "id",
"KeyType": "HASH"
}
],
"ProvisionedThroughput": {
"WriteCapacityUnits": 5,
"ReadCapacityUnits": 10
}
}
jsonファイルにてテーブル定義ができたので以下のコマンドでローカルスタック上でテーブルを作成する
aws dynamodbcreatbe-table -cli-input-json file://json/sample.json --endpoint-url=http://localhost:4566
テーブルの一覧を確認
これでテーブルの一覧を取得できる
aws dynamodb list-tables --endpoint-url=http://localhost:4566
アイテム挿入
aws dynamodb put-item --table-name $TABLE --item '{ "id": { "S": "abc-dd" }, "name": { "S": "OK-BOY" } }' --endpoint-url=http://localhost:4566
これをいちいちコマンドで追加するのがめんどくさいのでシェルファイルを作成してその中でまとめて追加しちゃおう
TABLE='sample'
aws dynamodb put-item --table-name sample --item '{ "id": { "S": "abc-dd" }, "name": { "S": "OK-BOY" } }' --endpoint-url=http://localhost:4566
#
aws dynamodb put-item --table-name $TABLE --item '{ "id": { "S": "efg-hh" }, "name": { "S": "THANKYOU-GIRL" } }' --endpoint-url=http://localhost:4566
#
aws dynamodb put-item --table-name $TABLE --item '{ "id": { "S": "ijk-ll" }, "name": { "S": "QUERY-PAPA" } }' --endpoint-url=http://localhost:4566
#
aws dynamodb scan --table-name $TABLE --endpoint-url=http://localhost:4566
こんな感じでまとめちゃえば楽だね
終わり
これでLoclStackでのDynamoDBのセットアップが終わったのであとは自由にテーブル, アイテムを追加していけば自由に開発していける
この記事のために作ったわけではないがlocalstackを使っているリポジトリはこんな感じ
Discussion