Amazon SimpleDBをコマンドラインから使う方法
こんにちは、大橋です。
前回、Amazon SimpleDBに関して記事を書きましたが、
今回は実際にSimpleDBに触ってみる方法を書きます。
■ まずはツールの選択
GUIベースのツールでは以下のようなツールがあります。
・AWS Toolkit for Eclipse
http://aws.amazon.com/eclipse/
・SDB Explorer(有料、試用期間あり)
http://www.sdbexplorer.com/
最初のものはAmazon純製ですね。
また、CUIでは以下のようなものがあります。
・Amazon SimpleDB command line interface(amazon-simpledb-cli)
http://code.google.com/p/amazon-simpledb-cli/
他にもツールはいろいろあると思いますが、サーバ管理者としては
CUIベースでできるものがほしいので、まずはamazon-simpledb-cli
を使ってAmazon SimpleDBを操作できるようになりたいと思います。
■ amazon-simpledb-cliのインストール
【モジュールのインストール】
amazon-simpledb-cliはPerlでできています。
最初に必要な以下のモジュールをインストールします。
- Getopt::Long
- Pod::Usage
- Digest::SHA1
- Digest::HMAC
- XML::Simple
cpanmでインストールすると簡単です。以下のようにcpanmコマンドを実行すると
インストールできます。簡単ですね。
> cpanm XML::Simple
cpanmの使い方インストール方法は以下が分かりやすいので参考にしてみてください。
http://www.omakase.org/perl/cpanm.html
【Amazon SimpleDB用のPerlモジュールのインストール】
次にAmazon SimpleDB用のモジュールのインストールをします。
モジュールをダウンロードして、以下のようにコマンドを打ってインストールします。
> curl -Lo amazon-simpledb-perl-library.zip http://amazon-simpledb-perl-library.notlong.com
> unzip amazon-simpledb-perl-library.zip
> sitelib=$(perl -MConfig -le 'print $Config{sitelib}')
> sudo cp -r AmazonSimpleDB-*-perl-library/src/Amazon $sitelib/
これでモジュールセットアップは完了です。
【simpledbコマンドのインストール】
> sudo curl -Lo /usr/local/bin/simpledb http://simpledb-cli.notlong.com
> sudo chmod +x /usr/local/bin/simpledb
なお、simpledbコマンドの1行目は 「#!/usr/bin/perl」 となっています。
必要に応じて「#!/usr/bin/env perl」などと書き換えてください。
【環境変数のセットアップ】
コマンドとして実行したり、.bashrcに記載するなどして以下のようにAmazon SimpleDBのアクセスキーと秘密キーをセットアップしておいてください。
export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxxx'
export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxx'
【インストールできているか確認する】
PATHが/usr/local/binに通っている場合は以下のようにコマンドを打つと
ちゃんと実行され、ヘルプがでます。/usr/local/bin/simpledb とコマンドを
打ってもOKです。
> simpledb
Usage:
simpledb [opts] create-domain DOMAIN
simpledb [opts] delete-domain DOMAIN
simpledb [opts] list-domains
simpledb [opts] put DOMAIN ITEM [NAME=VALUE]...
simpledb [opts] put-replace DOMAIN ITEM [NAME=VALUE]...
simpledb [opts] get DOMAIN ITEM [NAME]...
simpledb [opts] delete DOMAIN ITEM [NAME[=VALUE]]...
simpledb [opts] select SELECTEXPRESSION
Options:
--help Print help and exit.
--aws-access-key-id KEY
AWS access key id
[Defaults to $AWS_ACCESS_KEY_ID environment variable]
--aws-secret-access-key SECRETKEY
AWS secret access key
[Defaults to $AWS_SECRET_ACCESS_KEY environment variable]
--max COUNT
Maximum number of domains/items to retrieve and list.
[Defaults to all]
--separator STRING
Separator between attribute name and value.
[Defaults to equals (=)]
Arguments:
DOMAIN Domain name
ITEM Item name
NAME Attribute name
VALUE Attribute value
SELECTEXPRESSION SimpleDB select expression
■ amazon-simpledb-cliを使ってみる】
【コマンド書式】
基本的な書式は以下です。
> simpledb コマンド名 ドメイン名 値
【ドメイン作成】
書籍(book)ドメインを作ってみましょう。以下のようにすればドメインが作成できます。
> simpledb create-domain book
【値を何かputしてみる】
putコマンドで書籍(book)ドメインに書籍アイテムを一つ入れてみましょう。Itemの主キーとなる部分にはITEM名には
ISBN(4873110963の部分)を登録します。その他は書籍名(name)、値段(price)、著者名(author)をいれます。
> simpledb put book 4873110963 name='Programming Perl' price=5565 author='Larry Wall'
【アイテムの属性(Attribute)に2個目の値を入れてみる】
SimpleDBで1つの属性に複数の値を入れることができます。以下のようにすれば、2つ目の値が入ります。
主キーとなる部分にはISBNを指定し、追加する属性のところだけ値をいれます。
> simpledb put book 4873110963 author='Tom Christiansen'
【アイテムを更新する】
アイテムの属性に値を追加するのではなくて、アイテムそのものを入れ替える場合は以下のようにput-replacekコマンドを使います。
> simpledb put-replace book 4873110963 name='Programming Perl' price=5565 author='Larry Wall'
【Select文でアイテムを取得する】
以下のようにSelect文でアイテムの情報が取得でき、出力が得られます。
アイテムごとの最初の行がITEMのキー(この場合はISBN)です。
> simpledb select 'select name, price, author from book'
4873110963 # ISBN(主キーの部分)
author=Larry Wall
author=Tom Christiansen
price=5565
name=Programming Perl
以下のようにLike文などSQLっぽいクエリを投げることができます。
> simpledb select 'select name, price, author from book where author like "Larry%" '
likeや=, >, <, OR, ANDなどいろいろな演算子が使えます。詳しくは以下あたりから
情報をたどるといろいろなクエリが分かります。
http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?UsingSelect.html
機会があれば、もう少し丁寧にクエリを解説したいですが、今回はスキップします。
【アイテムをgetする】
以下のようにITEMのキーを指定して、アイテムを1つ取得することができます。
> simpledb get book 4873110963
author=Larry Wall
author=Tom Christiansen
price=5565
name=Programming Perl
【アイテムを削除する】
以下のようにITEMのキーを指定して、アイテムを1つ削除できます。
> simpledb delete book 4873110963
【ドメインを削除する】
最後にドメインの削除です。以下のようにdelete-domainコマンドで削除できます。
> simpledb delete-domain book
【まとめ】
以上がAmazon SimpleDBをコマンドラインから使う方法の紹介です。
一通りこれだけのコマンドが分かっていれば、デバッグするなど簡単な
オペレーションはだいぶ便利になると思います。
次回はJavaでAmazon SimpleDBを操作してみたいと思います。また、Consistent ReadやConditional Put/Deleteについても近いうちに書いてみるつもりです。
コメント