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/