LoginSignup
15
14

More than 5 years have passed since last update.

Amazon Linux を使って AWS SDK for Ruby を使おう

Posted at

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 が入りました。

cw_listMetrics.rb
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 使うなよ、という声も聞こえてきますが、進んじゃいます。

cw_listMetrics2.rb
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 を使っていってみたい気分になりますね!!

15
14
0

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
15
14