DynamoDB Hello world とりあえずローカルでDynamoDBを動かしてみる
読者
とりあえずDynamoDBをローカル環境で動かしたい方
紹介すること
Docker上にDynamoDBサーバーを立ち上げ、dockerのaws-cliでDynamoDBのサーバーに問い合わせをする。 テーブルの作成、データのWrite、get-item等によるデータのReadを実施する。 awsの公式サイトのテーブルの作成のサンプルを参考にしています。 ステップ 1: テーブルを作成する - Amazon DynamoDB
環境
Windows 10 Home, WSL2, Docker
ソースコード
https://github.com/syuh31/practice_dynamo_db
DynamoDBを立ち上げる
docker pull amazon/dynamodb-local:1.17.0 docker run -d --name dynamodb -p 8000:8000 amazon/dynamodb-local
止めるときと再起動するとき
docker stop dynamodb docker restart dynamodb
この方法では作成したテーブル等のデータは保持されないので、保持したい場合は、適切なオプションを設定したりdocker-composeを使って細かい設定をすれば良いと思います。
Dockerのaws-cliをつかって問い合わせしてみる
エイリアスを設定しておき、awsコマンドとして、docker経由のaws-cliを使えるようにしておきます。
alias aws='docker run --rm -it -v $(pwd)/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.3.4 --endpoint-url http://host.docker.internal:8000'
上記コマンドでは、ローカルの.awsフォルダをマウントするようにしています。 作業用フォルダに、.awsフォルダを準備し、そのフォルダ配下に設定ファイルを配置してください。 設定ファイルは2種類config,とcredentialsファイルです。 どちらもそれを設定していないと設定して!と怒られるため適当な値を設定しています。
config
[default] region = us-west-2
credentials
[default] aws_access_key_id = test_key_id aws_secret_access_key = test_ac_key
この状態で、
aws dynamodb list-tables
を実行してみてください。テーブル一覧が取得できると思います。
テーブルの作成及びデータの追加
ソースコードより、sampleのデータをダウンロードしておいてください。 その状態で、下記のコマンドを実行すると、テーブルと、その中のデータを作ってくれます。
aws dynamodb create-table --cli-input-json file://sample1/table/ProductCatalog.json aws dynamodb batch-write-item --request-items file://sample1/data/ProductCatalog.json aws dynamodb create-table --cli-input-json file://sample1/table/Forum.json aws dynamodb batch-write-item --request-items file://sample1/data/Forum.json aws dynamodb create-table --cli-input-json file://sample1/table/Thread.json aws dynamodb batch-write-item --request-items file://sample1/data/Thread.json aws dynamodb create-table --cli-input-json file://sample1/table/Reply.json aws dynamodb batch-write-item --request-items file://sample1/data/Reply.json
テーブル上のデータの読み込み
テーブル上のデータを読み込むget-itemとqueryは以下のコマンドで実施できます。
aws dynamodb get-item --cli-input-json file://sample1/get_item_product_catalog_1.json aws dynamodb query --cli-input-json file://sample1/query_product_catalog_1.json aws dynamodb query --cli-input-json file://sample1/query_reply_1.json
さいごに
雑な記事ですみません。参考になれば幸いです!