LocalStackを使ってaws cliでDynamoDBのテーブルを作成する

カテゴリ: aws | タグ: , , ,

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

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。