AWS CLI(コマンドラインインターフェース)でAMIMOTOのインスタンスをいじってみる

AMIMOTO Advent Calendar 2015の20日目です!

ということで、AWS CLIでAMIMOTOインスタンスをいじってみます。

AWS CLIのホームページは、

まずはインストール。Macなのでターミナルで、

$ pip install awscli

だけ!

追記: 2015年12月28日
pyenvでPythonの環境を作ってると~/.pyenv/配下にインストールされるんで、brew install awscliの方がいいかも。

pipはPythonのパッケージ管理ツール。へー、AWS CLIはPython製なんですね。

次に設定。

$ aws configure
AWS Access Key ID [None]: YOURACCESSKEY
AWS Secret Access Key [None]: YOURSECRETKEY
Default region name [None]: ap-northeast-1
Default output format [None]: json

アクセスキーとシークレットアクセスキーはIAMコンソールから取得できます。
詳しくは
http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-set-up.html
のTo get your access key ID and secret access keyを参照してください。

リージョンは近いところを。日本ならap-northeast-1(アジアパシフィック(東京)リージョン)。

出力フォーマットはデフォルトでjson。ほかにtext、tableがあります。

ついでなんで、シェルでタブ補完できるようにします。bashなら以下のコマンドを実行
$ complete -C '/usr/local/bin/aws_completer' aws
すると、
$ aws s
とうってからタブキーを押すと

s3 ses ssm support
s3api sns storagegateway swf
sdb sqs sts

のように補完候補が表示されるはずです。

それ以外のシェルは
http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-command-completion.html
を参考にしてください。

さて、ではインスタンスの情報を取得してみます。

$ aws ec2 describe-instances

たぶんjson形式でずらずらっと表示されるはずです。

で、ちょっとここでインスタンスIDの一覧だけ表示してみましょう。ちょっと調べたのですがそういうコマンドなりコマンドオプションなりはないようなので
http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/controlling-output.html
に掲載されているように --query オプションを使って以下のようにしてみます。

$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | grep running | awk '{print $3}'

どうでしょう? 普通に網元を使ってるだけならインスタンスIDが一つだけ表示されたと思います。

次にそのインスタンスの状態をしらべてみます。

aws ec2 describe-instance-status --instance-id i-XXXXXXXX

(略)
"InstanceId": "i-9d58d538",
"InstanceState": {
"Code": 16,
"Name": "running"
},
(略)

“running”になってますね。
ではいきなりですが、停止してみます。

aws ec2 stop-instances --instance-ids i-XXXXXXXX

でふたたび

aws ec2 describe-instance-status --instance-id i-XXXXXXXX

とすると、

"InstanceStatuses": []

となりました。これでサイトにアクセスしても接続できないはず。
ではまた開始。

aws ec2 start-instances --instance-ids i-XXXXXXXX

起動するまで少し時間がかかるので、ちょっとたってからまた状態を確認すると、

aws ec2 describe-instance-status --instance-id i-XXXXXXXX

(略)
"InstanceId": "i-9d58d538",
"InstanceState": {
"Code": 16,
"Name": "running"
},
(略)

となりました!

以上、簡単な紹介でしたが、やっぱウェブサイトのインターフェースよりは楽ですなw
他にもいろいろできそうなので、おいおい調べていきたいと思います。

では快適な網元ライフを!