yunomuのブログ

趣味のこと

AmazonLinuxにAWSSDK-for-Rubyを入れようとしたら面倒くさかった話

なんかもうすっかりソフトウェアインストール日記ですね。

AWSSDK-for-Ruby自体は実はgemで入るのでラクなもんなんですが、

# gem install aws-sdk

↑こんな感じ。
とにかくデフォのAmazonLinuxにはいろんなものが入っていない。びっくりするくらい入ってない。

とりあえずgemから入れていく。

# yum install rubygems
# gem install aws-sdk

extconf.rbが無くてコケる。これはgemでパッケージを入れる時に必要な何かで、だいたいはRuby本体に入ってるんだけど、何故かyumではdevelに入ってる。

# yum install ruby-devel

するとlibxml/parse.hが無いと言われるので、yumからそれっぽいパッケージを探すけどlibxml2ってのしか無くて、まあでもなんとなくそれでも大丈夫な感じがするので入れてしまう。ヘッダファイルのパスが違うのは、まあシンボリックリンクでも張っておけば大丈夫だろう。大丈夫なのかな?

# yum install libxml2 libxml2-devel
# cd /usr/include
# ln -s libxml2/libxml libxml

で、シンボリックリンク張ってて気付いたんだけど、よく見ると/usr/includeの下が空だった。libxml/parse.hが必要ってことはここら辺もたぶん必要なんだろう。ヘッダファイルはgccに入ってる。

# yum install gcc

次、libxslt/xslt.hが無い。こいつもXML関係のライブラリです。

# yum install libxslt libxslt-devel

最後、makeが無い。あれ、ここまでの依存関係でmakeって入らないの? まあ、入らないか。

# yum install make
# gem install aws-sdk

以上おわり。
と、微妙に面倒くさいというだけのお話でした。

まとめ

#!/bin/sh
yum -y install gcc make ruby-devel rubygems libxml2 libxml2-devel libxslt libxslt-devel
cd /usr/include
ln -s libxml2/libxml libxml
gem install aws-sdk

使い方

デフォルトでAccessKeyとSecretAccessKeyは環境変数から取得するという割とすごい仕様。

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...

設定ファイルなんぞに書いて読み込む方が便利かも。

# cat ~/.awsconfig
region: us-east-1
access_key_id: ...
secret_access_key: ...

とかやっといて、

#! /usr/bin/ruby

require 'rubygems'
require 'aws-sdk'

AWS.config(YAML.load("~/.awsconfig"))

ec2 = AWS::EC2.new
(略)

とかこんな感じで。

とここまで書いといてナンですが、Pythonの方がAWSの対応プロダクト多くて便利かもです。
http://aws.amazon.com/jp/python/