AWS CLI入門

 ツイート 1  シェア 0  Hatena 1

AWS

AWS CLI をの使い方を 1 から教える機会があったのでそのときのメモを残しておきます。AWS の自動化に興味がある方の参考になれば幸いです、

目次

  1. AWS CLI とは
  2. インストール
  3. 使い方
  4. 設定
  5. 動作確認
  6. 名前付きプロファイル
  7. 対話形式で設定を行いたくない場合は
  8. help を使いこなそう
  9. コマンドの入力補完

AWS CLI とは

AWS CLI は、AWS をターミナルなどコマンドラインから操作できるツールです。AWS の操作を自動化するときによく使います。マニュアルによると、AWS マネジメントコンソールの操作はすべて AWS CLI から行うことができるようです。

AWS Command Line Interface とは – AWS Command Line Interface

インストール

Python の pip コマンドでインストールします。インストール方法は AWS Command Line Interface のインストール – AWS Command Line Interface を参照されるのが確実です。

私は MacにpyenvをインストールしてPython環境を構築する に書いた手順で Python3 の最新版をインストールし、pip で AWS CLI をインストールしています。


$ pip install aws-cli

aws コマンドが使えるようになっていれば OK です。


$ aws --version

aws-cli/1.14.30 Python/3.6.4 Darwin/16.7.0 botocore/1.8.34

使い方

AWS CLI コマンドは以下の形式で使います。


aws [options]   [parameters]

aws — AWS CLI Command Reference もさらっと眺めておきましょう。

設定

AWS CLI を利用するには IAM ユーザーのアクセスキー ID とシークレットアクセスキーの設定が必要です。アクセスキー ID とシークレットアクセスキーは、AWS CLI を利用するときに必要な認証キーで、IAM ユーザーの分身のようなイメージです。

アクセスキーとシークレットアクセスキーは以下の手順でIAM コンソールから取得します。

  1. IAM コンソールを開きます。
  2. コンソールのナビゲーションペインで、[Users] を選択します。
  3. IAM のユーザー名 (チェックボックスではありません) を選択します。
  4. [Security credentials] タブを選択し、次に [Create access key] を選択します。
  5. 新しいアクセスキーを表示するには、[Show] を選択します。

詳しくは AWS CLI の設定 クイック設定 – AWS Command Line Interface を参考にしてください。

次に、aws configre コマンドで取得した IAM ユーザーのアクセスキー ID とシークレットアクセスキーを設定します。


$ aws configure

AWS Access Key ID [None]: AKIAXXXXXXXXXXXX
AWS Secret Access Key [None]: vlxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: us-west-2
Default output format [None]: json

設定が完了すると ~/.aws/credentials~/.aws/config に入力した内容が書き込まれます。直接ファイルを編集しても大丈夫です。

環境変数でもキーは設定できる
Environment Variables – AWS Command Line Interface にあるように、環境変数からも AWS のキーは設定できます。状況に応じて使い分けましょう。

動作確認

aws コマンドを実行してみましょう。以下のコマンドは サブネットの一覧を返すコマンドです。エラーが出ずにサブネットの一覧が返ってくれば OK です。


$ aws ec2 describe-subnets
{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1c",
            "AvailableIpAddressCount": 4091,
            "CidrBlock": "172.31.0.0/20",
            "DefaultForAz": true,
            "MapPublicIpOnLaunch": true,
            "State": "available",
            "SubnetId": "subnet-30e19d68",
            "VpcId": "vpc-49ee852d",
            "AssignIpv6AddressOnCreation": false,
            "Ipv6CidrBlockAssociationSet": []
        },
        ...
    ]
}

名前付きプロファイル

AWS を扱うプロジェクトが増えてくると、管理する IAM ユーザーのアクセスキーも増えてきます。プロジェクトに応じて ~/.aws 以下のファイルや環境変数を書き換えるのは大変です。そんな時のために、名前付きプロファイルという機能があります。名前付きプロファイルを使うと、複数のアクセスキーをローカルに保存しておき、それらを簡単に切り替えることができるようになります。

名前付きプロファイルを作成するには、aws configure コマンドに profile オプションを指定します。


$ aws configure --profile project1

すると、こんな感じで ~/.aws/credentials ファイルと ~/.aws/config ファイルに情報が書き込まれます。default と project1 という 2 つの鍵が保存されているのがわかります。


[default]
aws_access_key_id = AKIAAAAAAAAAAAAA
aws_secret_access_key = vlaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[profile]
aws_access_key_id = AKIABBBBBBBBBBBB
aws_secret_access_key = vlbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

プロファイルを使い分けるには、aws コマンドのオプションで指定するか、環境変数で設定します。

profile オプションでプロファイルを指定する場合


$ aws ec2 describe-instances --profile project1

環境変数で指定する場合は、.bash_profile などに AWS_PROFILE 環境変数を設定します。


export AWS_PROFILE=profile1

詳しくは 名前付きプロファイル – AWS Command Line Interface を参照ください。

対話形式で設定を行いたくない場合は

対話形式での設定が嫌な場合は以下のように aws configure set コマンドを使います。自動化のときに便利なので覚えておきましょう。confugure set — AWS CLI Command Reference


$ aws configure set aws_access_key_id AKIAAAAAAAAAAAAA
$ aws configure set aws_secret_access_key vlaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
$ aws configure set default.region us-west-2
$ aws configure set region us-west-1 --profile testing
$ aws configure set profile.testing2.region eu-west-1

help を使いこなそう

aws-cli は help がとても充実しています。たいていのことは help を見れば書いてあるので、 help コマンドの使い方をマスターしましょう。こんな感じで使います。


$ aws help
$ aws ec2 help
$ aws ec2 describe-instances help

それぞれのコマンドに対応した help の結果が返されます。ec2 関連のコマンドを探したいときは aws ec2 help と入力してほしいコマンドを探し、さらにそのコマンドの help を確認してパラメータを確認します。

コマンドの入力補完

aws-cli はたくさんのコマンドを持っています。毎回 help コマンドで確認しているとしんどいので、tab キーでコマンドの入力補完をできるようにしましょう。入力補完用のスクリプトは aws-cli に同梱されています。設定方法は コマンド補完 – AWS Command Line Interface を参照ください。

私の環境は zsh と pyenv なので、.zshrc に以下のように書いています。


source "$(pyenv which aws_zsh_completer.sh)"

次回は aws-cli のフィルタの使い方について書きます。

 ツイート 1  シェア 0  Hatena 1