AWS CLIの初期設定

AWSをコマンドラインから操作できるCLIツールの初期設定を行います。今回はS3のバケット一覧を表示することをゴールにしています。

ここではLightsailで試していますが、EC2や他のクラウド(サーバ)環境でも同じように設定できます。LightsailはAWSのコンソールとは見た目は分離されていますが、要所要所で連携できるので必要な機能だけ本家から持ってくるといったことが可能で助かりますね。

追記

このページに記載しているのは1系のインストール方法になります。最新の2系のインストール方法は公式ドキュメントをご覧ください。

CLIのインストール

AmazonLinux

Amazon Linuxを選択した場合は、デフォルトでCLI(コマンドラインツール)がインストールされています。特にすることはありません。

$ aws --version
aws-cli/1.14.9 Python/2.7.12 Linux/4.9.62-21.56.amzn1.x86_64 botocore/1.8.13

AmzonLinux以外のLinux

ドキュメントに沿ってインストールを行います。

Pythonのパッケージ管理ソフトpipが入っていればコマンド一発です。

### バージョン&インストール確認
$ pip --version

### インストール
$ pip install awscli --upgrade --user
$ aws --version
aws-cli/1.2.9 Python/3.4.3 Linux/3.13.0-128-generic

もしpipが入っていない場合、まずはPythonが入っているか確認します。Python2の場合は2.6.5以上、Python3の場合はバージョン3.3以上が必要です。インストールされていない場合はyumやaptなどでインストールしましょう。

### Python2 
$ python --version

### Python3
$ python3 --version

Pythonを入れてもpipが存在しない場合、次のようにpipをインストールします。

### ダウンロード
$ curl -O https://bootstrap.pypa.io/get-pip.py

### pipのインストール
$ python get-pip.py --user

### パスを通す
$ vi ~/.bashrc
export PATH=~/.local/bin:$PATH
$ source ~/.bashrc

macOS

追記

Catalinaでインストールした場合、以下のようにpip3で入れたあとにパスを通してやります。

### インストール
$ pip3 install awscli --upgrade --user

### パスを通す
$ vi ~/.zshrc
export PATH=$HOME/Library/Python/3.7/bin:$PATH
$ source ~/.zshrc

### 確認
$ aws --version
aws-cli/1.18.53 Python/3.7.3 Darwin/19.4.0 botocore/1.16.3

IAMの作成

CLIを動作させるためのIAMを作成します。IAMは情報が漏れた場合などを考え、使いまわさずに環境ごとに作成しています。

AWSのコンソールにあるIAMにアクセスし、左側メニュー「ユーザー」をクリック。
IAM

「ユーザーを追加」ボタンをクリック。
IAM

ユーザー名には適当な文字列を入力します。個人的には「ユーザー名@サーバ名」的な感じでつけることが多いです。アクセスの種類は今回はCLIからの利用になりますので「プログラムによるアクセス」にチェックします。コンソールにはログインさせません。
IAM

最後にこのIAMに付与する権限を設定します。グループなど作ってまとめて管理した方が楽なんですが、今回はS3が使えれば良いので「既存のポリシーを直接アタッチ」をクリックし、「AmazonS3FullAccess」にチェックします。
IAM

最終的に作成が完了したら、「アクセスキーID」と「シークレットアクセスキー」をどこか適当な場所にメモしておきます。 IAM

CLIの設定

aws configure

最後にaws configureコマンドを叩き、先ほど作成したIAM情報などを登録します。

$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

リージョンはデフォルトで使用したい地域を入力します。 リージョンの一覧から1つ選びます。ここでは東京リージョンを選択しています。

output format はjson、text、tableのいずれかの文字列を入力します。特にこだわりがなければjsonあたりで良いかと思います。

登録内容の確認

aws configureで入力した内容はホームディレクトリの.awsディレクトリ以下に保存されるので、正常に記録されたのかのぞいてみましょう。まぁ、直接ここを書き換えても良いのですけどねw

$ ls ~/.aws
config  credentials

$ cat ~/.aws/config
[default]
output = json
region = ap-northeast-1

$ cat ~/.aws/credentials 
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

パーミションが600になってますのでオーナー以外は見れないのですが、特に暗号化などされず素の状態で記録されますので取り扱いに注意してください。

CLIの実行

試しにS3のバケット一覧を表示してみましょうか。次のようにコマンドを打って結果が返ってくれば成功です。

$ aws s3 ls
2017-07-24 07:11:26 backup.example.com
2017-05-09 11:44:04 logs.example.com

CLIのアップデート

バージョンアップもpipで行えます。定期的に実行しましょう。

$ pip install --upgrade awscli

お疲れ様でした! これで様々なコマンドを試すことができるようになりました。IAMの権限を増減することも忘れずに。