AWS
初心者
aws-cli
DynamoDB
初心者向け

Amazon DynamoDB ちゅーとりある まとめ

Amazon DynamoDB とは

フルマネージド型の NoSQL データベースサービス
データベースの分散とスケーリングを自動で管理してくれるAWSのサービス
また、書き込み読み込みにどれだけのリソースを割り当てるかを制御できパフォーマンスの管理を簡単に行うことができる。


なぜ DynamoDB を使うか

AWSの他のサービスと連携しやすいDBというのが一番の理由
また、サービスの規模が拡大してアクセスが増大してもプログラムの変更なしでスケール可能というのも大きい。


DynamoDB の開発

開発ではいちいちブラウザでアクセスしてどうこうは面倒なためcliツールを利用します。

aws-cli のインストールと設定

はとりあえず本題とは異なるためリンクでお茶を濁します。

AWS CLI をインストール
AWS CLI を設定

(各自セットアップをよろしくお願いいたします。)


aws-cliでの操作

テーブル作成

#! /usr/bin/env bash
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

アイテム追加

#! /usr/bin/env bash
aws dynamodb put-item \
--table-name Music  \
--item \
    '{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Call Me Today"}, "AlbumTitle": {"S": "Somewhat Famous"}}' \
--return-consumed-capacity TOTAL  

aws dynamodb put-item \
    --table-name Music \
    --item '{ \
        "Artist": {"S": "Acme Band"}, \
        "SongTitle": {"S": "Happy Day"}, \
        "AlbumTitle": {"S": "Songs About Life"} }' \
    --return-consumed-capacity TOTAL 

Query実行 with jsonファイル

このコマンドを実行する前にjsonファイルの作成が必要になります。

aws dynamodb query --table-name Music --key-conditions file://key-conditions.json

以下のようにkey-conditions.jsonファイルを作成してください。

{
    "Artist": {
        "AttributeValueList": [
            {   
                "S": "No One You Know"
            }   
        ],  
        "ComparisonOperator": "EQ"
    },  
    "SongTitle": {
        "AttributeValueList": [
            {   
                "S": "Call Me Today"
            }   
        ],  
        "ComparisonOperator": "EQ"
    }
}

ローカルのDynamoDBでの開発

ローカルでDynamoDBを構築しAWSへのアクセスなしで開発をしたいという状況があることと思います。
その場合はdockerを利用することでローカルの環境構築が可能です。

難しいことはありません。
以下のコマンドを実行してください。

docker run -d -p 8000:8000 amazon/dynamodb-local

このコマンドで起動したローカルのDynamoDBにアクセスするには以下のように--endpoint-urlパラメータにローカルDynamoDBのURLを指定します。

aws dynamodb list-tables --endpoint-url http://localhost:8000

後日更新予定