動かして覚える山

エンジニアリング関連のことについて色々書いていきます。これは、自分が何ができるかを外部に公開すること。アウトプットの場にすること。他のエンジニアの参考になるものを投稿すること。自分用のメモとしてなどを目的として書いています。ですので、投稿の頻度や質は今の所まばらです。

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

さいごに

雑な記事ですみません。参考になれば幸いです!