Linux(Fedora)にAWSのEC2-API-TOOLSをインストールする


Paris045AWSをコマンドラインで操作するための ec2-api-tools のお話。Linux の cron などでインスタンスを自動起動したり、動作状況を確認したり、AWSをコマンドラインで処理することも多々あると思います。

というか実際に自分がそういう状況に陥っただけですけれど。今回はそんな環境を構築してみます。

Creative Commons License photo credit: Hiroyuki Nakano

ec2-api-tools を使うにはJavaのインストールが不可欠です。まずはJavaをインストールします。

Javaのインストール

http://java.com/ja/download/manual.jspからJava のLinux RPM(自己解凍形式)をダウンロードします。この時Internet Explorerを使用していると、バイナリファイルをそのまま開くだけになってしまいますので、右クリック>対象をファイルに保存をしてください。ダウンロードしたファイルを、ec2-api-toolsをインストールするサーバにアップします。

その後は、このバイナリファイルを実行すれば、インストールが自動的に始まります。

1
2
3
4
5
6
7
8
[root@hogehoge ~]# chmod +x jdk-6u27-linux-i586-rpm.bin
[root@hogehoge ~]# ./jdk-6u27-linux-i586-rpm.bin
...インストール開始...
[root@hogehoge ~]# ls /usr
bin etc games include java kerberos ...   <- java ができている
[root@hogehoge ~]# rm jre-6u27-linux-i586-rpm.bin
[root@hogehoge ~]# rm jre-6u27-linux-i586-rpm
[root@hogehoge ~]# rm sub-javadb-*

これでJavaのインストールが完了です。

ec2-api-toolsを設置する

http://aws.amazon.com/developertools/351?_encoding=UTF8&jiveRedirect=1からツールをダウンロードし解凍します。ちなみにダウンロードしたものは Windows でも使えますので、Javaインストールを含むこの記事全体の内容を Windows でも同様に行うと、Windowsからでもec2-api-toolsを使うことができます。

さて、解凍したデータを/usr/local内に設置し、パスを /usr/local/ec2-api-tools となるようにディレクトリをリネームしておきます。

次にAWSで使用しているキー(pk-xxxx.pem と cert-xxxx.pem)を今作ったec2-api-toolsの中に入れておきます。

最後にLinuxの環境変数を変更すれば完了です。今回は root でもなんでもどのユーザでもec2-api-toolsを使えるようにするため/etc/profileを編集します。ユーザを限定する場合は、そのユーザでの~/.bash_profileを編集すればいいでしょう。

1
2
3
4
5
6
7
8
9
10
11
12
[root@hogehoge ~]# vi /etc/profile
...最終行に追加する...

# for amazon web service
export EC2_HOME=/usr/local/ec2-api-tools
export EC2_PRIVATE_KEY=$EC2_HOME/cert/pk-xxxxxx.pem  <- キーの位置
export EC2_CERT=$EC2_HOME/cert/cert-xxxxxx.pem
export EC2_JVM_ARGS="-Dhttp.proxyHost=proxy.hogehoge.co.jp -Dhttp.proxyPort=9999 \
  -Dhttps.proxyHost=proxy.hogehoge.co.jp -Dhttps.proxyPort=9999"
 <- プロキシ設定がある場合
export EC2_URL=https://ap-northeast-1.ec2.amazonaws.com  <- 東京リージョンを使う設定

[root@hogehoge ~]# source /etc/profile <- 設定を反映

これで設定が完了です。動作を確認してみましょう。

1
2
3
4
[root@hogehoge ~]# ec2-describe-instances i-xxxxxx
RESERVATION r-xxxxxxxx      xxxxxxxxx  default
INSTANCE    i-xxxxxxxx      ami-12345678  pending
...

と、結果が得られればOKです。