AWSで新たにリリースされたPython製コマンドラインツールを使ってみる

これまでJava版のコマンドラインツールがありましたが、先日新たにPython版のAWSコマンドラインツールがリリースされたようです。
Introducing the AWS Command Line Interface (Developer Preview)

まだDeveloper Previewらしいですが。
試しに使ってみます。
Ubuntu12.04の環境で試しています。

導入方法

1. Pythonのインストール(Python2.6以上のバージョンが必要らしい)

$ sudo apt-get install python

2. パッケージ管理ツール(easy_install)の導入
Pythonのパッケージ管理ツールでコマンドラインツールのインストールが可能であるため、まずはパッケージ管理ツールを導入します。

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py
pipを利用する場合は更に以下を実施
$ sudo easy_install pip

3. コマンドラインツールインストール
パッケージ管理ツールを利用してawscliをインストール。

$ sudo easy_install awscli
pipを利用する場合は以下でインストール
$ sudo pip install awscli

4. プロフィール設定ファイル作成
コマンドラインインタフェースを利用する際には、予め準備した設定ファイルから接続先のリージョン情報やAPIアクセスキー情報等を読み込んで実行します。
そこで、以下の設定ファイルを準備します。名前は適当に設定して下さい。

$ vi ~/myconfigfile.txt
[default]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
region = us-east-1

[account1-us]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
region = us-east-1

[account2-ap]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
region = ap-northeast-1

複数のアカウント情報を書いておくことが可能です。

5. 設定ファイルの場所指定
環境変数(AWS_CONFIG_FILE)で設定ファイルがある場所を指定します。

$ export AWS_CONFIG_FILE=~/myconfigfile.txt

実行方法

設定ファイルの[default]情報をもとにEC2インスタンスのリストを取得する方法は次の通り。

$ aws ec2 describe-instances

awsコマンドの引数は、1つ目の引数にターゲットとするAWSサービス名を、2つ目の引数に実行するAPIメソッドを指定します。
さらにオプションとして、次の項目が設定可能です。

オプション 説明
--region ap-northeast-1/us-east-1など リージョン指定。設定ファイルに書いたregion設定よりもオプション指定したregionの方が優先される
--output json/text 出力形式を指定可能。デフォルトはjson形式
--profile default/account1-usなど 設定ファイルに記載したプロフィールの内どの情報をもとに接続するかを指定。デフォルトはdefault
--debug なし デバッグ出力

cloudwatchの監視結果を取得

このpythonコマンドラインを使ってcloudwatchの監視データを取得するには次のように実行します。

$ aws cloudwatch list-metrics --endpoint-url http://monitoring.us-east-1.amazonaws.com  ←取得できるMetricsを確認
$ aws cloudwatch get-metric-statistics --metric-name CPUUtilization --statistics Average --dimensions '{"name": "InstanceId","value": "i-5xxxxx"}' --namespace AWS/EC2 --period 3000 --start-time "2012-12-21T12:00:00TZD" --end-time "2012-12-26T12:00:00TZD" --endpoint-url http://monitoring.us-east-1.amazonaws.com    ←CPU使用率を取得
  
    
      
        2012-12-24T19:20:00Z
        Percent
        2.4784
      
      
        2012-12-21T03:50:00Z
        Percent
        2.4364
      
      
        2012-12-25T16:10:00Z
        Percent
        2.4594
      
      
        2012-12-21T13:50:00Z
        Percent
        2.4578
      
      
        2012-12-21T03:00:00Z
        Percent
        2.9257999999999997
      
      
        2012-12-23T23:20:00Z
        Percent
        2.4592
      
      
        2012-12-24T06:00:00Z
        Percent
        2.5024
      
     ・・・省略

注意点

endpoint-urlを正しく指定しないと何故かcloudwatchのみエラーが発生しました。
http://cloudwatch.us-east-1.amazonaws.comに対してアクセスしに行って、500エラーで失敗しているようです。
cloudwatchのAPIのURLはhttp://monitoring.us-east-1.amazonaws.comなのでこのURLをendpoint-urlオプションで指定することで取得できました。
根本的な原因は追えてません・・・