LoginSignup
5

More than 5 years have passed since last update.

DynamoDBローカルを使う

Last updated at Posted at 2017-12-04

AWSのDynamoDBをローカル環境で試すことができるDynamoDBローカルのインストール方法などをまとめます。

DynamoDBローカルを起動するためにJavaが必要で、操作するのにAWS CliをインストールするためのpipをインストールするためのPython3.6が必要という蟻地獄。

環境は手元に作ってあったVagrantで、CentOS6.8です。

Javaのインストール

DynamoDBの実行にJavaが必要になるので、入っていない場合はインストールしておきます。

インストール可能バージョンの確認
yum search openjdk
1.8をインストール
yum install java-1.8.0-openjdk

DynamoDBのインストール

  1. ここ からダウンロード
  2. 解凍してゲストOS内の適当なディレクトリに配置
  3. 以下のコマンドで起動
  4. Ctrl-C で停止
DynamoDBの起動
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

DynamoDBは、デフォルトではポート 8000 を使用します。

Python3.6のインストール -> NG

DynamoDBの設定やデータの操作をするためにawscliを使用します。そのためにPythonが必要で、Python2.6はサポート対象外となったようなので、3系をインストールしたい。

リポジトリの設定
# sudo yum install -y https://centos6.iuscommunity.org/ius-release.rpm
インストール
# sudo yum install -y python36u python36u-libs python36u-devel python36u-pip
リンク設定
# sudo ln -s /usr/bin/python3.6 /usr/bin/python3
# sudo unlink /usr/bin/python
# sudo ln -s /usr/bin/python3 /usr/bin/python
# sudo unlink /usr/bin/pip
# sudo ln -s /usr/bin/pip3.6 /usr/bin/pip

これでイケルと思ったが、 @kunitaya より

Python2でLinuxの根幹コードが結構書かれてるので、標準のPythonを2から3に変えるのはオススメできないです。
yumとか、確かPythonだったような。
なので、Python3 は Python3 で利用した方がいいです。

というわけでリンクはもとに戻して yum install python で入れたPython2.6を使うことにした。

AWSCLIのインストール

sudo pip install awscli

Python2.6だと警告がでますが、インストールは可能です。

aws configure

苦難はまだつづく。
AWSCLIコマンドを実行すると以下のメッセージが。

You must specify a region. You can also configure your region by running "aws configure".

ローカルなのに必要なのか。
configure設定を行います。

configureの設定
# aws configure
AWS Access Key ID [None]: ************
AWS Secret Access Key [None]: ************
Default region name [None]: ap-northeast-1
Default output format [None]: json

データの操作

ようやく確認できる。

tableを作成
aws dynamodb create-table \
    --table-name Image \
    --attribute-definitions \
        AttributeName=asset_no,AttributeType=S \
    --key-schema AttributeName=asset_no,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --stream-specification StreamEnabled=true,StreamViewType=NEW_IMAGE \
    --endpoint-url http://localhost:8000
tableの設定を表示
aws dynamodb describe-table \
    --table-name Image \
    --endpoint-url http://localhost:8000
tableの設定を更新
aws dynamodb update-table \
    --table-name Image \
    --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10 \
    --endpoint-url http://localhost:8000
tableを削除
aws dynamodb delete-table \
    --table-name Image \
    --endpoint-url http://localhost:8000
itemを1件追加
aws dynamodb put-item \
    --table-name Image \
    --item '{"asset_no":{"S":"AAAAA"}, "item_code":{"S":"012345"}}' \
    --return-consumed-capacity TOTAL \
    --endpoint-url http://localhost:8000
itemをもう1件追加
aws dynamodb put-item \
    --table-name Image \
    --item '{"asset_no":{"S":"BBBBB"}, "item_code":{"S":"987654"}}' \
    --return-consumed-capacity TOTAL \
    --endpoint-url http://localhost:8000
itemを1件取得
aws dynamodb get-item \
    --table-name Image \
    --key '{"asset_no":{"S":"BBBBB"}}' \
    --return-consumed-capacity TOTAL \
    --endpoint-url http://localhost:8000
全データを取得
aws dynamodb scan \
    --table-name Image \
    --endpoint-url http://localhost:8000 \
    --return-consumed-capacity TOTAL
itemの件数を取得
aws dynamodb scan \
    --table-name Image \
    --query 'Count' \
    --endpoint-url http://localhost:8000 \
    --return-consumed-capacity TOTAL

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5