AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

AWSコマンドラインツール:aws-cli

AWSの運用として、外せないのはブラウザベースのManagementConsole。まず最初はここからですし、ドキュメントも豊富ですしね。

次の一手というとEclipseのAWS Management?などでしょうか?

GUI系は便利なのですが、CUIでも使えるものが必要なのではということで、ここ半年で大きく進化した(らしい)aws-cliを使ってみました。

aws-cli

2012年12月のリリースからスゴイスピードでバージョンアップされてきたようです。PythonのAWS SDKをラップしたような形で実装されてるとのこと。2013年8月の最新は 0.14.x系ですね。でも手元のAmazon Linuxに標準インストールされているのは 0.9.3 で2013年5月ごろのバージョンでした。AWSの新しいサービスにどんどん対応していっているとの事なので、新しいサービスが必要な人は、手動でいれてもいいのかと。

インストール手順と準備

このマニュアルに沿って作業すればすぐに使えます。

インストール

Pythonのパッケージコマンド? pipi (easyinstallの後継?) でインストールする手順が書かれてるので、それにそって進めれば大丈夫だと思います。

僕は、Amazon Linuxに入ってるバージョンをそのまま使いました。

コマンド補完

これがやたら便利です。コマンド名 aws の後ろの引数を補完してくれる設定。

Amazon Linuxの場合、関連パッケージが入ってなかったので次のコマンドで追加インストール

# sudo yum install aws-cli-zsh

その後、README.rst に沿って設定すればOKです。 (Bashの場合のパッケージも *-zsh でOKでした)

使う準備

とりあえず使うなれば、次の環境変数を設定すれば使えます。リージョンは必須じゃないですが設定しておいたほうが、コマンドが簡潔かも。

$ export AWS_ACCESS_KEY_ID=
$ export AWS_SECRET_ACCESS_KEY=
$ export AWS_DEFAULT_REGION=

ガッツリ使う場合には、ConfigFileを読ませるようにすると、コンフィグ中のprofileを切り替えてコマンドを実行できるので、開発・本番とかを渡り歩いたりするのには良いようです。

便利なもの

現状、awsコマンドの出力はデフォルトがjson形式です。json prosessorのjqを使うと、出力結果の絞込みや色づけなどが出来て便利です。最初 jq のあとの . (ピリオド) の必要性がわからずコマンド実行できませんでした。。。

$ aws ec2 describe-availability-zones | jq .
{
  "ResponseMetadata": {
    "RequestId": "78fb91c4-12c2-4735-bf93-fe068d4547fd"
  },
  "AvailabilityZones": [
    {
      "RegionName": "ap-northeast-1",
      "Messages": ,
      "ZoneName": "ap-northeast-1a",
      "State": "available"
    },
    {
      "RegionName": "ap-northeast-1",
      "Messages": ,
      "ZoneName": "ap-northeast-1c",
      "State": "available"
    }
  ]
}

なお、次のように引数を与えると text形式とかtable形式にできます。

$ aws ec2 describe-availability-zones --output text

available       ap-northeast-1a ap-northeast-1
available       ap-northeast-1c ap-northeast-1
RESPONSEMETADATA        839df567-df82-4735-8f75-84680298ed58

参考サイト

次のサイトにお世話になりました。ありがとうございます。

その他

もともとJavaベースで開発されていたEC2 API Toolsというツールが発祥のようです。こういうツールが、どんどん出てくるところにサービスのダイナミックさを感じました。