話題の記事

【初心者向け】MacユーザがAWS CLIを最速で試す方法

2014.08.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、虎塚です。

聞くところによると、最近 AWS コマンドラインインターフェイス(以下、AWS CLI)の人気が再燃しているそうですね。なんとAWS CLIがテーマのイベントまで開催されているではありませんか。これはすごい。

というわけで、今日はAWS初心者のMacユーザが最速でAWS CLIを試す手順を書いてみます。えっ、Windowsしか持ってない? Get Mac or Linux!

以下の作業は、AWSアカウントをすでに持っていることが前提です。また、Mac OS 10.9.3 (13D65) で動作確認しました。

pipのインストール

まず、pipをインストールします。pipとは、Pythonのプログラミング環境で使われるパッケージ管理システムです。

pipのインストールには、easy_installコマンドを利用します。easy_installは、Mac OS 10.9.xでは最初からインストールされていると思います。

% sudo easy_install pip
Password:

Searching for pip

Reading http://pypi.python.org/simple/pip/

Best match: pip 1.5.6

Downloading https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#md5=01026f87978932060cc86c1dc527903e

...

実行するとOSユーザのパスワードを求められるので、入力します。

最終的に次のような出力が表示されれば成功です。

Installed /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg

Processing dependencies for pip

Finished processing dependencies for pip

pipがインストールされたことを確認しておきましょう。

% which pip
/usr/local/bin/pip
% pip --version
pip 1.5.6 from /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg (python 2.7)

pip helpでヘルプを見ることができます。

AWS CLIのインストール

次に、AWS CLIをインストールします。先ほどインストールしたpipコマンドを使います。

% sudo pip install awscli

Downloading/unpacking awscli

  Downloading awscli-1.3.25.tar.gz (237kB): 237kB downloaded

  Running setup.py (path:/private/tmp/pip_build_root/awscli/setup.py) egg_info for package awscli

...

最終的に、次のような出力が表示されれば成功です。

Successfully installed awscli botocore bcdoc six colorama docutils rsa jmespath python-dateutil pyasn1

Cleaning up...

AWS CLIがインストールされたことを確認しておきます。

% which aws
/usr/local/bin/aws
% aws --v
aws-cli/1.3.25 Python/2.7.5 Darwin/13.2.0

aws helpでヘルプを見ることができます。

AWS CLIの設定

AWS CLIを実行するには、次の4つの情報をローカルマシン側で設定する必要があります。

  • アクセスキー
  • シークレットアクセスキー
  • 接続先のAWSリージョン
  • 出力フォーマット

アクセスキーとシークレットアクセスキーの確認

アクセスキーとシークレットアクセスキーは、AWS マネジメントコンソールから確認できます。

rootユーザの場合は、マネジメントコンソール右上のユーザ名をクリック→メニューから[Security Credentials]→[Access Keys (Access Key ID and Secret Access Key)]で、アクセスキーとシークレットアクセスキーを確認します。

しかし、AWSではセキュリティの維持対策として、IAMユーザを作って運用するのがベストプラクティスとされています。rootユーザで日常作業を行うのはよくありません。

これにしたがってIAMユーザを利用している場合は、マネジメントコンソールのIAMメニューを開きます。IAMメニューから[Users]→[(確認対象のUserName)]→[Security Credentials]→[Access Credentials ]で、アクセスキーとシークレットアクセスキーを確認します。

設定ファイルの作成

AWS CLIのconfigureコマンドを使うことで、対話的に設定ファイルを作成します。この方法の利点は、ローカルマシンで他に環境変数を設定しなくてもよいことです。

% aws configure
AWS Access Key ID [None]: XXXX
AWS Secret Access Key [None]: XXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: text

output formatには、json、table、textの3種類を指定できます。プログラムから扱う場合はjsonが使いやすく、ターミナルから目視で確認するにはtableが便利です。また、出力を他のシェルコマンドに渡して処理するにはtextがよいでしょう。詳細は次のページで確認ください。

上のコマンドを実行すると、~/.awsディレクトリに設定ファイルconfigが作成されます。確認しましょう。

% ls -la ~/.aws
total 8
drwxr-xr-x   3 username  staff  102  8  5 17:16 .
drwxr-xr-x+ 26 username  staff  884  8  5 16:56 ..
-rw-------   1 username  staff  154  8  5 16:56 config
% cat ~/.aws/config
[default]
output = text
region = ap-northeast-1
aws_access_key_id = XXXX
aws_secret_access_key = XXXXXXXX

ここで設定した情報は、awsコマンドの実行時にオプション引数を渡すことで、一時的に上書きすることができます。詳しくはaws helpを確認してください。

AWS CLIの動作確認

AWSへアクセスするコマンドが動作することを確認します。S3にバケットを作成して、作成したバケットを表示してみます。

% aws s3 mb s3://clitest20140805
make_bucket: s3://clitest20140805/
% aws s3 ls
2014-08-05 16:16:38 clitest20140805

ここまできたら、最新のドキュメント(http://docs.aws.amazon.com/cli/latest/)を見ながら、CLIからAWSを好きなだけ触れるようになりました。

エラーになる場合

コマンドを実行した時に、次のようなエラーが出ることがあります。

Unable to construct an endpoint for ec2 in region None

この場合は設定が正しくできていません。aws configureコマンドをもう一度実行して、既存の設定を上書きしましょう。

AWS CLIの練習方法

AWS CLIに慣れるには、自分が過去に実行した、あるいはこれから実行しようとしている操作に対応するAPIを、ドキュメントで逐一調べて、実際に書いてみるのが一番です。

たとえば、AWS初心者の頃は、起動したインスタンスをつい停止し忘れてしまうことがあるかもしれません。一日の作業の終わりに、東京リージョンで稼働中のインスタンスを確認する処理も、AWS CLIを使うとすぐに書けますね。

aws ec2 describe-instances --filters "Name=instance-state-code,Values=16" "Name=availability-zone,Values=ap-northeast-1a,ap-northeast-1c"

また、次の記事のように、公式ドキュメントのGetting Startedやサンプルなどに載っている操作をCLIに置き換えてみるのも、よい練習になると思います。

黒いターミナルに浮かぶ文字は、まるで夏の夜空に咲く花火のようです。AWS CLIで最高の夏にしましょう。それではまた!

参考

浴衣姿のくらめそちゃん

非公式キャラクター・くらめそちゃん