« 週刊AWS - 2013年8月26日 | メイン | 【AWS発表】 Amazon ElastiCacheでRedisを利用可能に! »

【AWS発表】 新しいAWS コマンドラインインターフェース (CLI) が正式リリース

AWS Management ConsoleのようなGUIは素晴しいですが、コマンドラインの表現力に勝るものはありません!

本日、AWS Command Line Interface (CLI)をリリースいたしました。AWS CLIは、30以上あるAWSサービスに対して、単一の、統一されたインターフェースを提供します。 CLIをダウンロードし、設定を終えれば、Linux、OS X、Windowsのコマンドラインから、Amazon EC2、Amazon S3、Elastic Beanstalk、Simple Workflow Serive、および20の他のサービス(完全なリストはこちら)を操作することができるようになります。

ダウンロードと設定
Getting Startedのページに、AWS CLIのダウンロードと設定に関する情報があります。 Linux、OS Xの場合は、Python(2.6.xから3.3.xまでのいずれかのバージョンである必要があります。)がインストールされている必要がありますが、準備するのはそれだけです。後は、easy_installpip、Windows MSIを使って、CLIをインストールしてください。

環境変数もしくは、設定ファイルを使って、CLI用のAWSのクレデンシャルを設定することができます。EC2インスタンス上でCLIを実行する場合は、IAM roleを使うこともできます。

オススメは、コマンドラインから実行できるAWSの操作を完全に制御できる権限を持ったIAMユーザー(私はawscliというユーザーを作っています。)を作成する方法です。テストの目的のために、私は、Administrator Accessポリシーテンプレートを使いましたが、実際には、より制限されたテンプレートを使いましょう。

コマンドの実行
AWSのCLIコマンドは次の形式を取ります。

$ aws SERVICE OPERATION [OPTIONS]

SERVICE にはサービス名を指定します。(S3はサービス名以外にs3apiも指定できます) 例えば、s3を指定すれば、強力な一連のファイル操作コマンドを呼びだすことができます。

OPERATION はdescribe-instanceslist-bucketsといった、AWS APIの機能に対応した名前を指定します。 helpを指定すると、各サービスで利用可能なOPERATIONの一覧を確認することができます。

$ aws ec2 help

各操作の結果は、デフォルトでは、JSON形式で返されます。 --output text and --output tableを指定することで、出力形式をテキストやテーブルにすることもできます。それぞれの出力結果は次のようになります。



jq (JSON Query)というツールを使うと、JSONデータを簡単に処理することができます。例えば、Reddit最近の投稿にもあった、EC2インスタンスのタグデータの抽出は、AWS CLIとjqを使うと、次のように行えます。

$ aws ec2 describe-instances --output json | jq .Reservations[].Instances[].Tags[]
{
  "Key": "Name",
  "Value": "DevServer"
}

S3のファイル操作
AWS CLIはS3による一連のファイル操作もサポートしています。CLIから、一覧表示(ls)、コピー (cp)、移動 (mv)、および、ファイル (S3 objects)の同期 (sync) を行うことができます。また、S3バケットの作成 (mb) および 削除 (rb)もできます。いくつかの例を紹介します。

$ aws s3 mb s3://jbarr-book-code
make_bucket: s3://jbarr-book-code/

$  aws s3 sync . s3://jbarr-book-code
upload: CVS/Entries to s3://jbarr-book-code/CVS/Entries
upload: .cvsignore to s3://jbarr-book-code/.cvsignore
upload: Makefile to s3://jbarr-book-code/Makefile
upload: CVS/Repository to s3://jbarr-book-code/CVS/Repository
upload: LICENSE.txt to s3://jbarr-book-code/LICENSE.txt
upload: README to s3://jbarr-book-code/README
upload: NOTICE.txt to s3://jbarr-book-code/NOTICE.txt
upload: TODO.txt to s3://jbarr-book-code/TODO.txt
upload: aws.dot to s3://jbarr-book-code/aws.dot
upload: CVS/Root to s3://jbarr-book-code/CVS/Root
upload: aws_meta.dot to s3://jbarr-book-code/aws_meta.dot
upload: aws_meta.php to s3://jbarr-book-code/aws_meta.php
...

$ aws s3 ls s3://jbarr-book-code Bucket: jbarr-book-code Prefix: LastWriteTime Length Name ------------- ------ ---- PRE CVS/ PRE magpierss-0.72/ 2013-09-03 20:53:54 63 .cvsignore 2013-09-03 20:53:55 9189 LICENSE.txt 2013-09-03 20:53:55 401 Makefile 2013-09-03 20:53:55 406 NOTICE.txt 2013-09-03 20:53:55 470 README 2013-09-03 20:53:55 2190 TODO.txt 2013-09-03 20:53:55 5941 aws.dot 2013-09-03 20:53:55 763110 aws_meta.dot ... $ touch ch4*.php $ aws s3 sync . s3://jbarr-book-code upload: ch4_simple_crawl.php to s3://jbarr-book-code/ch4_simple_crawl.php upload: ch4_ec2_setup.php to s3://jbarr-book-code/ch4_ec2_setup.php

大容量のファイルや一度に複数のファイルをAmazon S3にアップロードするような場合は、自動的に並列化されたマルチパートアップロードを使用します。また、cpmvrmコマンドを実行する際、--recursiveオプションを指定することで、指定のディレクトリだけでなく、その配下の全てのサブディレクトリも処理することができます。

知っておくと便利なオプション
いくつかのAWSコマンドは、大量のテキストまたはJSONコンテンツをパラメータとして必要とします。この場合、次のように、パラメータの値をファイルやWebでアクセス可能な場所に配置し、参照することができます。

$ aws ec2 authorize-security-group-ingress --group-name MySecurityGroup  --ip-permissions file://ip_perms.json
$ aws ec2 authorize-security-group-ingress --group-name MySecurityGroup --ip-permissions http://mybucket.s3.amazonaws.com/ip_perms.json

ソースコード
AWS CLIはオープンソースプロジェクトであり、コードはGitHubのhttp://github.com/aws/aws-cliから取得可能です。必要に応じて、ソースコードを閲覧、提案の入力、問題提起、Pull Requestの送信を行えます。

堀内康弘 (Facebook, Twitter)

コメント

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c534853ef019aff2d7155970b

【AWS発表】 新しいAWS コマンドラインインターフェース (CLI) が正式リリースを参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31