Table of Contents
AWS CLIとは?
Def: AWS Command Line Interface
- AWSコマンドラインインターフェース(AWS CLI)は, コマンドラインシェルでコマンドを使用してAWSサービスと対話するためのオープンソースのツール
- AWS CLIを使用することで, ブラウザベースのAWS管理コンソールで提供される機能と同等の機能をターミナルプログラムのコマンドプロンプトから実行できるようになる
Example
1
2
3
4
5
6
## install versionの確認
% aws --version
aws-cli/2.13.21 Python/3.11.5 Darwin/20.6.0 exe/x86_64 prompt/off
## S3 hogehogeからcurrent directoryへのファイルのsync
% aws s3 sync "s3://hogehoge/" ./ --dryrun
How to Install AWS CLI
- AWS CLIのインストールはLinuxならば
.zip
, MacOSならば.pkg
というようにインストーラを直接用いてインストールする形式を取る - RPMやdebなどのパッケージ管理システムによってシステムに管理されないコマンドということになるので, コマンドの格納先は
/usr/local/bin
となる
Linux x86の場合を想定して以下解説する
Pre-requisites
- パッケージの取得と解凍に
curl
とunzip
- Python 3 version 3.3+ installed
- AWS CLIの依存コマンドとして
glibc
,groff
,less
Install
1
2
3
4
5
6
7
8
# current directoryにawscliv2.zipを取得
% curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# awscliv2.zipの解凍
% unzip awscliv2.zip
# install: デフォルトではaws commandを/usr/local/binへ, installerを/usr/local/aws-cliへ格納する
% sudo ./aws/install
commandのインストール先を確認してみると
1
2
3
4
5
% which aws
/usr/local/bin/aws
% ls -l /usr/local/bin/aws
lrwxrwxrwx 1 root root 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws*
Update
updateの実行手順は以下:
- インストーラーを新たにダウンロードし
./aws/install
の内容をupdate - その後,
--update
を用いてsudo ./aws/install
を実行する
1
2
3
4
5
6
7
8
9
# 余計なファイルを削除
% rm -r ./aws/install
# 新たにインストーラーを取得
% curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
% unzip awscliv2.zip
# update optionを用いてupdate
% sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
How to uninstall AWS CLI
install先情報をrm
するだけでよいです. AWS SDKやAWS CLI settingsといったconfig情報も消去したい場合は, デフォルトでは~/.aws/
を消去するので足ります.
1
2
3
4
5
6
7
8
9
10
11
12
13
## コマンド格納場所を確認する
% which aws
% ls -l /usr/local/bin/aws
## which awsで確認したbin-dirを消去する
% sudo rm /usr/local/bin/aws
% sudo rm /usr/local/bin/aws_completer
## ls -lで確認したinstall-dirを削除する
% sudo rm -rf /usr/local/aws-cli
## delete AWS SDK and AWS CLI settings
% sudo rm -rf ~/.aws/
Simple configuration
AWS CLIを利用するためにはconfigureを設定する必要があります. aws configure
コマンドを用いて対話的に設定することが一番シンプルです.
事前準備として,
- access key ID
- AWS secret access key
の2つが必要となります. これらが準備できたら以下のように対話式で設定することが可能です.
1
2
3
4
5
% aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
なお, これら設定は~/.aws/
以下の
- credential
- config
の2つのファイルに内容が結局は格納され, それらを参照してるだけなので直接上記を設定するだけでも足ります.
複数profileの設定
同時並行のprojectがあるとき, projectごとで簡単に切り替えながらAWS CLIを利用したい場合があります. AWS CLIは設定内容を複数のprofileで分けて登録することができるので, これを利用します.
AWS CLI設定ファイルは以下の形を想定しています:
ファイル名 | 説明 |
---|---|
config |
IAM user-sepecificな設定を格納 |
credentials |
aws access keyとsecret keyの設定 |
1
2
3
4
5
6
% tree
~/.aws
├── cli
│ └── cache
├── config
└── credentials
credentials
の設定は以下を想定しています. hogehoge
の部分は任意の文字列で設定して構いません.
1
2
3
[hogehoge]
aws_access_key_id = <your access key id>
aws_secret_access_key = <your secret access key>
config
ファイルは場面に応じてcredentials
の設定にIAMロールを付与設定をしたい場合に使用します.
例として以下です.
1
2
3
4
5
6
7
8
9
10
[profile hogehogedmondai]
region = ap-northeast-1
output = text
source_profile=hogehoge
[profile foofoocampaign]
region = ap-northeast-1
output = text
role_arn=arn:aws:iam:123456773456:role/foofoocampaign
source_profile=hogehoge
このように設定することで, IAMロールを一時的にassumeしないと見れないS3バケットに対しても以下のコマンドでアクセスすることができます
1
% aws s3 ls "s3://foofoocampaign/ponpokoko/"
References
(注意:GitHub Accountが必要となります)