share facebook facebook twitter menu hatena pocket slack

2011.07.27 WED

AWS SDK for Rubyを使ってみる

磯辺 和彦

WRITTEN BY 磯辺 和彦

はじめまして
職人見習いの磯辺です

cloudpackに参加してまだ間もなく、AWSの経験もまだ浅いですが、これまで行ってきたサーバの運用の経験を生かしつつ、従来のサーバ運用とは違うAWSらしさに慣れて行きたいと思っています。
よろしくお願いいたします。

さて、AWSの特徴のひとつとして、APIを使い、プログラムなどからインフラを扱えるというものがあります。
各種プログラミング言語で使える公式のSDKのうちのひとつ、AWS SDK for Rubyが、今年の7月14日にリリースされましたので、早速試してみたいと思います。

まずはRubyを導入します。今回はWindowsにインストールします。
AWS SDK for Rubyが対応しているRubyのバージョンは、1.8.7以降です。
今回は、RubyInstaller for Windowsにある最新版である、Ruby 1.9.2のパッケージを使います。

Ruby本体の他に、AWS SDK for Rubyが必要としているgemのパッケージのインストールに必要な
Development Kitをダウンロードします。

インストーラを起動して、インストールを開始します。

途中、オプションを指定する箇所では、[Add Ruby executables to your PATH]にチェックを入れます。
他はお好みで設定します。

Rubyがインストールできたら、Development Kitをインストールします。

exeファイルを実行すると、ファイルが展開されます。
コマンドプロンプトで展開されたディレクトリにcdして、ruby dk.rb initを実行します。

c:Ruby192devkit>ruby dk.rb init
[INFO] found RubyInstaller v1.9.2 at C:/Ruby192

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

次に、ruby dk.rb installを実行します。

c:Ruby192devkit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/Ruby192'
[INFO] Installing 'C:/Ruby192/lib/ruby/site_ruby/devkit.rb'

これで、Development Kitが導入できました。これで、RubyのパッケージシステムであるRubyGemsを使って、
AWS SDK for Rubyをインストールする準備ができました。

AWS SDK for Rubyのgemパッケージ名は、aws-sdkです。gem install aws-sdkを実行します。
すべて完了するまでに、少し時間がかかります。

c:>gem install aws-sdk
Fetching: uuidtools-2.1.2.gem (100%)
Fetching: crack-0.1.8.gem (100%)
Fetching: httparty-0.7.8.gem (100%)
When you HTTParty, you must party hard!
Fetching: nokogiri-1.4.7-x86-mingw32.gem (100%)
Fetching: json-1.5.3.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Fetching: aws-sdk-1.0.2.gem (100%)
Successfully installed uuidtools-2.1.2
Successfully installed crack-0.1.8
Successfully installed httparty-0.7.8
Successfully installed nokogiri-1.4.7-x86-mingw32
Successfully installed json-1.5.3
Successfully installed aws-sdk-1.0.2
6 gems installed
Installing ri documentation for uuidtools-2.1.2...
Installing ri documentation for crack-0.1.8...
Installing ri documentation for httparty-0.7.8...
Installing ri documentation for nokogiri-1.4.7-x86-mingw32...
Installing ri documentation for json-1.5.3...
Installing ri documentation for aws-sdk-1.0.2...
Installing RDoc documentation for uuidtools-2.1.2...
Installing RDoc documentation for crack-0.1.8...
Installing RDoc documentation for httparty-0.7.8...
Installing RDoc documentation for nokogiri-1.4.7-x86-mingw32...
Installing RDoc documentation for json-1.5.3...
Installing RDoc documentation for aws-sdk-1.0.2...

これでインストールできました。

では、さっそく使ってみましょう。今回はs3にbucketを作成して、公開されるファイルをアップしてみます。

まず、config.ymlという名前でファイルを作成し、下記のような内容にします。
your_access_keyには、あなたの使用しているAWSアクセスキーを、your_secret_keyには、
同様にAWSシークレットアクセスキーを、それぞれ記載します。

access_key_id: your_access_key
secret_access_key: your_secret_key

config.ymlと同じディレクトリに、s3upload.rbというファイルを作成して、下記の内容を記載します。
bucket_nameには、任意のバケット名を指定します。
upload_filenameには、アップロードしたいファイル名を指定します。

# s3upload.rb
bucket_name = 'rubysdktest-s3upload-20110727'
upload_filename = 'cloudpack.gif'

require 'aws-sdk'

AWS.config(YAML.load(File.read('config.yml')))
s3 = AWS::S3.new
bucket = s3.buckets.create(bucket_name)

basename = File.basename(upload_filename)
s3_obj = bucket.objects[basename]
s3_obj.write(:file => upload_filename, :acl => :public_read)

puts s3_obj.public_url.to_s

それでは、作成したコマンドを実行してみましょう。

c:>ruby s3upload.rb
https://rubysdktest-s3upload-20110727.s3.amazonaws.com/cloudpack.gif

コマンドが成功すれば、ファイルがアップロードされ、そのファイルのURIが表示されますので、
ブラウザでアクセスしてみましょう。

アップロードされたファイルがブラウザに表示されました。

今回の例はとても簡単なものなので、AWS Management Consoleを使うのと手間はあまり変わらないと思いますが、一度に大量に扱う場合などにはとても便利だと思います。
今後も、AWS SDK for Rubyについて記事にして行こうと思います。

※この記事は、なかの人(muramasa64)が書いています。

磯辺 和彦

磯辺 和彦

cloudpackに参加して以来、設計・構築・運用・開発・セキュリティなど様々な経験を経て、現在は主に社内インフラ関連を担当中。WEB+DB Press Vol.85に記事書きました。