AWSのDynamoDBをローカル環境で試すことができるDynamoDBローカルのインストール方法などをまとめます。
DynamoDBローカルを起動するためにJavaが必要で、操作するのにAWS CliをインストールするためのpipをインストールするためのPython3.6が必要という蟻地獄。
環境は手元に作ってあったVagrantで、CentOS6.8です。
Javaのインストール
DynamoDBの実行にJavaが必要になるので、入っていない場合はインストールしておきます。
yum search openjdk
yum install java-1.8.0-openjdk
DynamoDBのインストール
- ここ からダウンロード
- 解凍してゲストOS内の適当なディレクトリに配置
- 以下のコマンドで起動
-
Ctrl-C
で停止
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設定を行います。
# aws configure
AWS Access Key ID [None]: ************
AWS Secret Access Key [None]: ************
Default region name [None]: ap-northeast-1
Default output format [None]: json
データの操作
ようやく確認できる。
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
aws dynamodb describe-table \
--table-name Image \
--endpoint-url http://localhost:8000
aws dynamodb update-table \
--table-name Image \
--provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10 \
--endpoint-url http://localhost:8000
aws dynamodb delete-table \
--table-name Image \
--endpoint-url http://localhost:8000
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
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
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
aws dynamodb scan \
--table-name Image \
--query 'Count' \
--endpoint-url http://localhost:8000 \
--return-consumed-capacity TOTAL