最近のaws-cli事情(2013-06版)

よく訓練されたアップル信者、都元です。Pythonで書かれたAWSのコマンドラインツールであるawsコマンド、通称aws-cli (awscli)はもう皆様ご存知かと思います。当ブログでも、リリース直後にレポートいたしました。

従来、このようなCLIのツールはサービス毎にパッケージが存在し、個別にインストールする *1ものでした。また、各パッケージ毎にインターフェイス(使い方)が違うため、少々使いづらい点もありました。さらにこれらのCLIは、Java SDKを利用していたため、軽量なCLIツールであるにもかかわらず、コマンド実行毎にJVMを立ち上げるためのオーバーヘッドがあり、若干のもたつきがあったのも事実です。

このあたりの問題点を一挙に解決したのが、aws-cliでした。あれから半年、何が変わったのか。最新のaws-cli事情をまとめてみました。

サポートプロダクトの増加

出た当初、弊社ブログが書かれた時点(2013/1/5 v0.4.5)ではS3やRoute53に対応していませんでした。 現在(2013/6/21)では、新しめのサービスも含めてほとんどのサービスに対応し、一部対応していないサービス *2への対応も時間の問題かと思います。

awscli-001

↓↓↓↓↓↓↓↓

2013-06-21_1438

個人的にはS3に対応してくれたのが嬉しいですね。

Amazon Linuxにおけるサポート強化 & Tips

Amazon Linuxにデフォルトでインストール済み

「Amazon Linux AMI 2013.03」より *3、デフォルトでインストールされています。

$ sudo yum -y update
$ aws --version
aws-cli/0.9.3 Python/2.6.8 Linux/3.4.43-43.43.amzn1.x86_64

bashの補完

ただし、シェルによるコマンドライン補完機能は、初期状態では使えません。 補完を実現するにはaws-cli-zshパッケージが必要なので、以下のコマンドで補完環境を整備しておきましょう。

$ sudo yum -y install aws-cli-zsh
$ echo 'complete -C aws_completer aws' >>~/.bash_profile
$ source ~/.bash_profile

(別に最新事情ではないですが)IAM Roleに対応してます

aws-cliは、IAM Roleに対応しています。一部の従来版(Java版)もIAM Roleに対応していますが、一部対応していなかったり、色々ややこしい状況です。使える状況にある方は、みなさん IAM Roleを使いましょう。IAM Roleが割り当てられたインスタンスから利用する場合は、アクセスキー等の設定が省略できます。インスタンス内にクレデンシャルを直書きせずに済むのは大きなメリットですね。

うっかりIAM Roleを付け忘れたEC2インスタンスで試す場合は、以下のようにしてAPIキーを書き込んだファイルを設定しましょう。

$ cat <<_EOF_ >>~/aws_config 
[default]
aws_access_key_id=<access key>
aws_secret_access_key=<secret key>
_EOF_
$ echo 'export AWS_CONFIG_FILE=~/aws_config' >> ~/.bashrc

aws-cliのお伴「jq」

aws-cliを使う場合、一緒にjqを使うことが多いかと思います。当初は自分でgit cloneしてビルドしてインストール、なんてことをする必要がありましたが、現在はyumにて簡単にインストール可能です。

$ sudo yum -y install jq

脚注

  1. まぁ、Amazon Linuxには大抵元々入ってますが。
  2. DynamoDB, SimpleDB, Glacier, CloudFront
  3. リリースノート