LocalStackのDockerコンテナを使って、DynamoDBのテーブルを作成した時の作業した時の記録です。
テーブルはaws cli
を使って作成します。
docker-compose.yamlの作成
下記の内容でdocker-composeのファイルを用意します。
version: '3.2'
services:
localstack:
image: localstack/localstack:latest
ports:
- '4566:4566'
environment:
- SERVICES=dynamodb
- DATA_DIR=/tmp/localstack/data
volumes:
- './.localstack:/tmp/localstack'
- '/var/run/docker.sock:/var/run/docker.sock'
コンテナの起動
$ docker-compose up -d
コンテナが起動したことの確認
LocalStackでのDynamoDB起動はすこし時間がかかるので、logsコマンドで、起動完了のログが出ていることを確認します
コマンド
$ docker-compose logs -f localstack
実行結果
Creating network "project01_localstack_default" with the default driver
Creating project01_localstack_1 ... done
...
localstack_1 | Waiting for all LocalStack services to be ready
localstack_1 | Ready.
localstack_1 | 2022-01-08T08:12:50:INFO:localstack.utils.analytics.profiler: Execution of "start_api_services" took 7922.170877456665ms
DynamoDBのテーブルが存在しないことを確認
コンテナの起動直後でDynamoDBのテーブルが存在していないことをaws
のcliコマンドで確認します。
コマンド
aws --endpoint-url=http://localhost:4566 dynamodb list-tables
実行結果
{
"TableNames": []
}
DynamoDBのテーブルの作成
awsコマンドのdynamodb create-table
でテーブルを作成します。
コマンド
aws --endpoint-url=http://localhost:4566 dynamodb create-table \
--table-name test \
--attribute-definitions AttributeName=testId,AttributeType=S \
--key-schema AttributeName=testId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
実行結果
{
"TableDescription": {
"AttributeDefinitions": [
{
"AttributeName": "testId",
"AttributeType": "S"
}
],
"TableName": "test",
"KeySchema": [
{
"AttributeName": "testId",
"KeyType": "HASH"
}
],
"TableStatus": "ACTIVE",
"CreationDateTime": "2022-01-08T17:20:20.228000+09:00",
"ProvisionedThroughput": {
"LastIncreaseDateTime": "1970-01-01T09:00:00+09:00",
"LastDecreaseDateTime": "1970-01-01T09:00:00+09:00",
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 1,
"WriteCapacityUnits": 1
},
"TableSizeBytes": 0,
"ItemCount": 0,
"TableArn": "arn:aws:dynamodb:us-east-1:000000000000:table/test"
}
}
テーブルが作成されたことを確認
もう一度list-tables
を実行して、テーブルが実行できたことを確認します
コマンド
aws --endpoint-url=http://localhost:4566 dynamodb list-tables
実行結果
{
"TableNames": [
"test"
]
}
後始末
作成したコンテナを削除します。
コマンド
docker-compose down
実行結果
Stopping project01_localstack_1 ... done
Removing project01_localstack_1 ... done
Removing network project01_default
こちらもおススメ