aws-cliのラッパーモジュールを作りました - AWS::CLIWrapper
先日公開されたaws-cliのPerlのラッパーモジュールを作りました。
PerlでAWS EC2のAPIを叩くにはNet::Amazon::EC2が便利です。
一昔前に比べると多くのAPIに対応しているし、パッチ(pullreq)を送るとすぐにお返事が返ってくるのでいい感じです。
が、VPC関連のAPIサポートが乏しく、ちくちくパッチを送るのもしんどいなぁと思っていたところ、先日公開されたAWS本家のaws-cliが、
- Pythonで書かれている
- 既存のec2-*コマンドはJavaなんで起動時に時間がかかる
- レスポンスがJSONなのでparseしやすい
- awsコマンドだけでEC2やELBなどいろんなサービスに対応してる
と、いい感じだったんで週末サクッとラッパーモジュールを書いてみた次第です。
こんな感じ:
use AWS::CLIWrapper; my $aws = AWS::CLIWrapper->new( region => 'us-west-1', ); my $res = $aws->ec2('describe-instances'); if ($res) { for my $rs ( @{ $res->{reservationSet} }) { for my $is (@{ $rs->{instancesSet} }) { print $is->{instanceId},"\n"; } } } else { warn $AWS::CLIWrapper::Error->{Code}; warn $AWS::CLIWrapper::Error->{Message}; }
ぐらいなんですが、生でコマンド実行するよりかは楽だと思います。
ちなみに、aws-cli(0.4.5)でregion指定の環境変数 AWS_DEFAULT_REGION が効かないのは、
の2行パッチで治るので、/usr/{,local/}lib/python2.6/site-packages/awscli/clidriver.py とかにある clidriver.py をいじればいいと思います。
Enjoy!