Amazon Linux は AWS が用意しているだけあって repository に色々入っています。とりあえず使ってみるには最適。
Access Key ID と Secret Access Key を書くようにしてますけど、IAM role 使うとか色々方法あると思うんでよしなに。
aws-sdk
$ ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]
Amazon Linux 2014.03 だと /usr/bin/ruby は version 2.0 ですね。一方どんな SDK パッケージが用意されているかというと?
$ yum list | grep ruby | grep sdk
rubygem18-aws-sdk.noarch 1.37.0-0.14.amzn1 amzn-main
rubygem18-aws-sdk-doc.noarch 1.37.0-0.14.amzn1 amzn-main
rubygem20-aws-sdk.noarch 1.37.0-0.14.amzn1 amzn-main
rubygem20-aws-sdk-doc.noarch 1.37.0-0.14.amzn1 amzn-main
ということで rubygem20-aws-sdk をインストールしてみます。
$ sudo yum -y install rubygem20-aws-sdk
(snip)
完了しました!
$ rpm -qa | grep aws-sdk
rubygem20-aws-sdk-1.37.0-0.14.amzn1.noarch
完了してしまいました。1.37 が入りました。
require 'rubygems'
require 'aws-sdk'
cw = AWS::CloudWatch.new(
:region => 'us-west-2',
:access_key_id => 'YOUR ACCESS KEY ID',
:secret_access_key => 'YOUR SECRET ACCESS KEY',
)
metrics = cw.client.list_metrics()
p metrics[:metrics][0]
これを実行するとこんな感じです
$ ruby cw.rb
{:dimensions=>[], :metric_name=>"NetworkIn", :namespace=>"AWS/EC2"}
logging 設定に関しては http://ruby.awsblog.com/post/Tx3NGT0543C4DOX/Logging-HTTP-Wire-Traces を眺めつつ
cw = AWS::CloudWatch.new(
:region => 'us-west-2',
:access_key_id => 'YOUR ACCESS KEY ID',
:secret_access_key => 'YOUR SECRET ACCESS KEY',
:http_wire_trace => true, # <- これ!!
)
と一つ引数を足してあげれば request/response が見れます。続きはドキュメントで。
aws-sdk-core
Ruby 用 SDK は version 2 も準備中だそうですが、まだ gem
などで直接インストールしてやる必要があります。
$ sudo gem install aws-sdk-core --pre
Fetching: aws-sdk-core-2.0.0.rc6.gem (100%)
Successfully installed aws-sdk-core-2.0.0.rc6
Parsing documentation for aws-sdk-core-2.0.0.rc6
Installing ri documentation for aws-sdk-core-2.0.0.rc6
Done installing documentation for aws-sdk-core after 4 seconds
1 gem installed
素の gem
使うなよ、という声も聞こえてきますが、進んじゃいます。
require 'rubygems'
require 'aws-sdk-core'
cw = Aws::CloudWatch.new(
:region => 'us-west-2',
:access_key_id => 'YOUR ACCESS KEY ID',
:secret_access_key => 'YOUR SECRET ACCESS KEY',
p cw.list_metrics[:metrics][0]
似たようなファイルを作ったら、ゲットできました。
$ ruby cw_listMetrics2.rb
#<struct namespace="AWS/EC2", metric_name="NetworkOut", dimensions=[]>
:http_wire_trace => true
も同様に動きました。クライアント作成時のその他の引数含めて、続きはドキュメントをご参照下さい。
まとめ
"Version 2 offers a wide range of enhancements over version 1" って書いてあるので、aws-sdk-core を使っていってみたい気分になりますね!!