AWS SDK for RubyでSimpleDBを操作する
こんにちは@oko_changです。
自分ブログにもSimpleDBの爪痕を残しておこうと思ったので、AWS SDK for RubyでのSimpleDBの使い方をまとめておきます。
SimpleDBとは?というのは以下の記事などが参考になると思います。
- SimpleDBを使ってみました - サーバーワークス エンジニアブログ
- フレクトのクラウドBlog: Amazon SimpleDBについて調べたことをまとめました
- 20111215 12 aws-meister-sqs_sns_sdb-public
使い方
以下のような感じDomainを作ったりItemを追加したり削除したりが出来ました。
※スクリプトとかではありません
# -*- coding: utf-8 -*- require 'net/http' require 'aws-sdk' sdb_region = 'sdb.' + Net::HTTP.get('169.254.169.254', '/latest/meta-data/placement/availability-zone').chop + '.amazonaws.com' domain_name = "milan_no_10" @sdb = AWS::SimpleDB.new(:simple_db_endpoint => sdb_region).client ## Domainを作成する @sdb.create_domain(:domain_name => domain_name) ## 作成されているDomainの一覧を見る @sdb.list_domains ## Domainのメタデータを確認する @sdb.domain_metadata(:domain_name => domain_name) ## Itemを追加する @sdb.put_attributes( :domain_name => domain_name, :item_name => "Keisuke Honda", :attributes => [{ :name => "Country", :value => "Japan"}, { :name => "Number", :value => "10"}] ) ## 追加したItemを見る @sdb.get_attributes(:domain_name => domain_name, :item_name => "Keisuke Honda") ## Attributeを削除する @sdb.delete_attributes(:domain_name => domain_name, :item_name => "Keisuke Honda", :attributes => [{ :name => "Number", :value => "10" }]) ## 追加したItemを削除する @sdb.delete_attributes(:domain_name => domain_name, :item_name => "Keisuke Honda") ## 一度に複数のItemを追加する @sdb.batch_put_attributes(:domain_name => domain_name, :items => [ { :name => "Keisuke Honda", :attributes => [{ :name => "Country", :value => "Japan"}, { :name => "Number", :value => "10"}] }, { :name => "Zvonimir Boban", :attributes => [{ :name => "Country", :value => "Croatia" }, { :name => "Number", :value => "10" }] }, { :name => "Rui Costa", :attributes => [{ :name => "Country", :value => "Portugal" }, { :name => "Number", :value => "10" }] } ]) ## ドメイン内のアイテムを取得する @sdb.select(:select_expression => "select Country from #{domain_name}") ## 一度に複数のAttributeを削除する @sdb.batch_delete_attributes(:domain_name => domain_name, :items => [ { :name => "Keisuke Honda", :attributes => [{ :name => "Country", :value => "Japan" }] }, { :name => "Rui Costa", :attributes => [{ :name => "Number", :value => "10" }] } ]) ## 一度に複数のItemを削除する @sdb.batch_delete_attributes(:domain_name => domain_name, :items => [ { :name => "Keisuke Honda"}, { :name => "Rui Costa"} ]) ## Domainを削除する @sdb.delete_domain(:domain_name => domain_name)
Clientクラスを使わずに以下のような感じもOKです。
# -*- coding: utf-8 -*- require 'net/http' require 'aws-sdk' sdb_region = 'sdb.' + Net::HTTP.get('169.254.169.254', '/latest/meta-data/placement/availability-zone').chop + '.amazonaws.com' domain_name = "milan_no_10" @sdb = AWS::SimpleDB.new(:simple_db_endpoint => sdb_region) ## ドメインを作成する mydomain = @sdb.domains.create(domain_name) ## 作成したドメインを確認する mydomain.exists? ## 作成したドメインにアイテムを登録する mydomain.items.create("Keisuke Honda", { "Country" => "Japan", "Number" => "10"}) ## 作成したドメインを削除する mydomain.delete!
まとめ
僕が個人レベルでちょっとしたものを保存するにはお手軽でとてもイイ。