AWS CLI(インストール, profileの設定, 使い方)

S3、RDSなどAWS上のサービスはコマンド(AWS CLI)で制御できます。ここでは、awscliのインストール方法、基本的な使い方について解説します。

インストール

作業環境

Dockerコンテナ上で作業します。OSは以下の通りです。

# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

# cat /proc/version
Linux version 4.9.125-linuxkit (root@659b6d51c354) (gcc version 6.4.0 (Alpine 6.4.0) ) #1 SMP Fri Sep 7 08:20:28 UTC 2018

pipをインストール

まず、Pythonパッケージ管理ツールの pip をインストールします。

Pythonがまだインストールされていません。

# python
bash: python: command not found

Python本体、pip、開発用パッケージをインストールします。

# apt update
# apt -y install python python-pip python-dev build-essential

インストールできたか確認します。

# python -V
Python 2.7.12
# pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

awscliをインストール

pip を利用して awscli をインストールします。

# pip install awscli

インストールできたか確認します。

# aws --version
aws-cli/1.16.72 Python/2.7.12 Linux/4.9.125-linuxkit botocore/1.12.62

awscliのアップグレードは以下のようにします。

# pip install awscli --upgrade

参考

awscliのセットアップ

IAMユーザーのアクセスキーを取得

awscli のセットアップをする前に、 awscli で利用するアクセスキーを取得します。
選択したIAMユーザーと同じ権限でAWSを操作できます。

486-aws-cli-basic_thumbnail.png

CLIの設定ファイル生成

aws configure で設定ファイルを生成できます。

# aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: text

~/.aws/config ~/.aws/credentials が生成されました。

# ls -l ~/.aws
total 8
-rw------- 1 root root  48 Dec  9 02:49 config
-rw------- 1 root root 116 Dec  9 02:49 credentials
# 
# cat ~/.aws/config 
[default]
output = text
region = ap-northeast-1
# 
# cat ~/.aws/credentials 
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

なお、 output(出力形式) には、json text table を選択できます。コマンド実行時に --outputオプション で変更することも可能です。

参考

使い方

基本的な書式

aws コマンド サブコマンド
  • コマンドにはAWSサービス名を指定します。
    • s3 rds ec2 などです。
  • サブコマンドにはリソース操作コマンドを指定します。
    • s3 であれば cp mv rm ls などです。

ヘルプ表示

awscliの基本的な使い方を確認したい場合、以下のようにします。

aws help

指定サービスで利用できるサブコマンド一覧を確認したい場合、以下のようにします。

aws s3 help
aws rds help

指定サービスのサブコマンドの詳細な使い方を確認したい場合、以下のようにします。

aws s3 ls help
aws s3 rm help

Web上で確認することもできます。
AWS CLI Command Reference

参考

複数profileを設定したい場合

セットアップ

aws configure で設定ファイルを作成する際、 --profileオプション を指定します。
新しいprofileを設定してください。

# aws configure --profile another-user
AWS Access Key ID [None]: YYYYYYYYYYYYYYYYYYYY
AWS Secret Access Key [None]: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Default region name [None]: ap-northeast-1
Default output format [None]: json

defaultanother-user のprofileが保存されました。

# cat ~/.aws/config 
[default]
output = text
region = ap-northeast-1
[profile another-user]
output = json
region = ap-northeast-1
#
# cat ~/.aws/credentials 
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[another-user]
aws_access_key_id = YYYYYYYYYYYYYYYYYYYY
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

profileの切り替え

default 以外のprofileでコマンド実行したい場合、 --profileオプション で指定します。

# aws s3 ls
# aws s3 ls --profile another-user

設定の優先順位

優先順位と注意点

CLIの設定は、今回紹介した以外の方法でも行うことができ、以下のような優先順位があります。

優先順位 設定
1 コマンドラインオプション
2 環境変数( AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN )
3 AWS認証情報ファイル( ~/.aws/credentials )
4 CLI 設定ファイル( ~/.aws/config )
5 認証情報
6 インスタンスプロファイルの認証情報(インスタンスに割り当てられたIAMロール)

例えば環境変数を設定している場合、設定ファイルよりも優先されます。
複数箇所で設定している場合、意図しない設定が使われていないか注意します。

参考

構成設定と優先順位