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を操作できます。
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
default
と another-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ロール) |
例えば環境変数を設定している場合、設定ファイルよりも優先されます。
複数箇所で設定している場合、意図しない設定が使われていないか注意します。