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オプションで指定することで取得できました。
根本的な原因は追えてません・・・