初めてのAWS CLI

By | 2015年11月13日

はじめまして。

私は今年の4月から入社した新入社員です。

初のブログへの投稿ということで、何を書こうか悩んでしまったのですが、
入社して間もないころに先輩社員の方に「CLIでも操作出来ますよ」と教えて頂いた時に
困ってしまったことがあったのを思い出しました。
なので、今回はAWS CLIの導入について書きたいと思います。

導入の前にAWS CLIとは何かについて簡単に書きます。
AWS CLIとはAWS Command Line Interface(CLI)のことです。
簡単に言ってしまうとAWSに用意されている多種多様なサービスをコマンドで操作するためのツールになります。
AWSのサービスを操作する方法は主に以下の2つです。

・CLIでコマンドを使って操作する。
・WEBのGUIコンソールを使って操作する。

どちらもそれぞれに利点と欠点があります。
どちらも不慣れな初心者ですが、私の所感でCLIとGUIを比べたものを簡単にまとめました。

GUI CLI
操作性 直感的な操作可能で、日本語化されている部分も多いので操作しやすいので、操作性は高い コマンドや操作するサービスの項目名、IDを調べなければならないので、操作性は低い
記録の残しやすさ 誰にでも分かるように記録をとろうとした場合画面のキャプチャが多数必要で簡単な作業でも手順を残すのが大変 実際に使用したコマンドと出力を記載すればよいだけなので記録するのが楽
汎用性 同じ作業に同じだけの手順が掛かるので汎用性を持たせるにはそれに適したサービスを別途使用する必要があるので汎用性は低い 一度コマンドを調べてしまえば中の値を変更するだけで操作をすることが可能なので汎用性は高い

まとめます。
セキュリティグループに値を追加するといった簡単な作業や設定変更をした後に反映の確認をするなど、
すぐに終わる作業は操作が分かり易く、内容を一目で見れるようになっているGUIの方が向いています。
また、複雑なサービス(私にとってはCloudFormationでした)はGUIの方が入り易いです。
複数のサービスに対して起動や設定の操作を行う場合はCLIの方が手順を残し易く、汎用性を持たせ易いので向いています。
また、CLIはシェルスクリプトと組み合わせて操作することが可能なので、応用性もあります。

AWS CLIの導入

CLI導入は簡単です。

Windowsの場合

  1. インストーラをダウンロード
    64 ビット用
    32 ビット用
  2. ダウンロードした MSI インストーラを実行します
  3. 表示される手順に従います

Linux, OS X, or Unixの場合

  1. pip のウェブサイトからインストールスクリプトをダウンロードし実行します
    [vagrant@localhost ~]$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
    ~出力略~
    [vagrant@localhost ~]$ sudo python get-pip.py
    ~出力略~
    
  2. pip を使用して AWS CLI をインストールします。
    [vagrant@localhost ~]$ sudo pip install awscli
    ~出力略~
    
  3. インストール確認
    [vagrant@localhost ~]$ aws --version
    aws-cli/1.9.1 Python/2.6.6 Linux/2.6.32-504.el6.x86_64 botocore/1.3.1
    

AWS CLI プロフィール設定

インストールが完了したら、設定です。
CLIでAWSのサービスを操作する場合
どのユーザでどのリージョンにアクセスするかを設定する
必要があります。
設定はaws configureコマンドを使用します。

[vagrant@localhost ~]$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:

上記の4つを入力します。
この4つの項目はaws configureコマンドを
使用することでいつでも変更が可能です。

AWS Access Key ID [None]:
AWS Secret Access Key [None]:

この2つでどのアカウントのどのユーザとして操作するかを
設定します。2つはセットです。

Default region name [None]:

どこのリージョンを使うかの設定です。
リージョンとは物理的に離れている
Amazonのデータセンターのことです。
現在指定できるリージョンは以下の10個です。
指定するときは”コード”の方を入力します。

コード 名前
ap-northeast-1 アジアパシフィック(東京)
ap-southeast-1 アジアパシフィック(シンガポール)
ap-southeast-1 アジアパシフィック(シンガポール)
ap-southeast-2 アジアパシフィック(シドニー)
eu-central-1 欧州(フランクフルト)
eu-west-1 欧州 (アイルランド)
sa-east-1 南米(サンパウロ)
us-east-1 US East (N. Virginia)
us-west-1 米国西部(北カリフォルニア)
us-west-2 米国西部(オレゴン)
Default output format [None]:

出力形式の設定です。

現在指定できる形式は[ json | text | table ]の3つです。

複数のプロフィール設定を保持する

aws configure --profile 【profile名】を使って
4つの項目を設定すると、複数の設定を用意することが出来ます。

--profileで設定したユーザを使用する場合は以下の方法でコマンドを実行します。

aws 【コマンド】 --profile 【profile名】

これを使うことで、例えばテスト用の環境と本番用の環境両方に対して頻繁にコマンドを打ちたい時などに
いちいちaws configureを使って対象を変更する手間を省くことが出来ます。
ただし、--profile 【profile名】を指定しないでコマンドを打ってしまうと、
aws configureで設定した先にコマンドを実行してしまいます。
「テスト環境に試すはずだったコマンドを本番環境に行ってしまった」というような事故も有り得るので、注意が必要です。

AWS CLI コマンド補完設定

この作業は必須の作業ではありませんが、AWSのコマンドは種類が多く、長いコマンドも多いので補完機能が使えると大変便利です。
設定はShellによって若干違います。

現在のShellは以下のコマンドで確認出来ます。

[vagrant@localhost ~]$ echo $SHELL
/bin/bash

今回はbashの場合の作業です。

  1. aws_completerを探す
    [vagrant@localhost ~]$ type aws_completer
    aws_completer is /usr/bin/aws_completer
    
  2. completeコマンドで設定
    [vagrant@localhost ~]$ complete -C '/usr/bin/aws_completer' aws
    
  3. bashrcに追加
    [vagrant@localhost ~]$ echo "complete -C '/usr/bin/aws_completer' aws" >> $HOME/.bashrc
    

まとめ

AWS CLIとは何か調べる時は少し敷居が高いように感じましたが、
実際に作業してしまえば導入は簡単でした。
最初はGUIだけでもいいのではないかと思ったこともありましたが、
実際に使ってみると必須と言っても過言では無いツールでした。

(参考)
https://aws.amazon.com/jp/cli/
http://docs.aws.amazon.com/ja_jp/kinesis/latest/dev/kinesis-tutorial-cli-installation.html