ハイファットマンの友人M

ハイファットマンはおともだちです。ほぼメモ

DynamoDBをローカルで触るセットアップ

awsのDynamoDBを触りたいけど何をどうすればいいのか全然わからなかったので調べました。

1. DynamoDBとpythonで色々したいのでとりあえず公式を見る

どうやらDynamoDBはローカルに構築して色々できるらしい。
公式でダウンロードのページがありましたが、javaを入れないといけないようです。
java入ってないのでめんどくさい。。
ということでDockerでDynamoDBが動くようにします。

参考

2. DockerでDynamoDBを起動

https://hub.docker.com/r/cnadiminti/dynamodb-local/
こちらを使います。
起動は書いてあるコマンドをそのまま実行するだけです。

$ docker run -v "$PWD":/dynamodb_local_db -p 8000:8000 cnadiminti/dynamodb-local:latest
Initializing DynamoDB Local with the following configuration:
Port:    8000
InMemory:    false
DbPath:    /dynamodb_local_db
SharedDb:    true
shouldDelayTransientStatuses:    false
CorsParams:    *

起動してることを確認します。

$ docker ps
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                    NAMES
8e76d9bd2356        cnadiminti/dynamodb-local:latest   "/docker-entrypoint.…"   About an hour ago   Up About an hour    0.0.0.0:8000->8000/tcp   nostalgic_lumiere

3.AWS CLIのセットアップ

接続確認しようとしたらawsというコマンドがでてきたのでAWS CLIを入れます。 pipからインストールできるようです。

$ pip install awscli
$ aws help #cliのオプションとかが見れる

CLIを使うには設定が必要です。 設定はCLIで使うIAMユーザーを作って以下コマンドを実行するだけです。 先ほど作ったIAMユーザーのAccessKeyとSecretAccessKeyを入れます。

$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: ap-northeast-1a
Default output format [None]: json

参考

4.DynamoDB接続確認

https://hub.docker.com/r/cnadiminti/dynamodb-local/
このページに書いてあるコマンドをそのまま実行します。

まずテーブル作成。

$ aws dynamodb create-table --table-name myTable --attribute-definitions AttributeName=id,AttributeType=S --key-schema AttributeName=id,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --endpoint-url http://0.0.0.0:8000

作ったテーブルを確認。

$ aws dynamodb list-tables --endpoint-url http://localhost:8000
{
    "TableNames": [
        "myTable"
    ]
}

DynamoDBの接続確認まで終わりました。