AWS CLI入門

2022-04-04

AWS CLI は AWS リソースの操作を行う Command Line Interface (CLI) ツールです。
AWS のマネージメントコンソールをボチボチする代わりにコマンドを叩くイメージです。
この記事では、AWS CLI のインストールと設定で役立つ情報(MFA・多要素認証など)を紹介します。

インストール

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

$ brew install awscli

プロファイル

AWS CLI を実行する際、以下のような環境変数でクレデンシャルを設定することにより認証され AWS にアクセスすることができます。

$ export AWS_ACCESS_KEY_ID=<アクセスキー>
$ export AWS_SECRET_ACCESS_KEY=<シークレットキー>
$ export AWS_DEFAULT_REGION=ap-northeast-1 # 任意のリージョン

しかし、複数の AWS 環境があるなど、いちいち環境変数を変えるのは面倒です。
そういう時に プロファイル が利用できます。

# プロファイルの作成
$ aws configure --profile <プロファイル名>

上記コマンドでプロファイルを作成すると以下のような ~/.aws/credentials~/.aws/config ファイルが作成されます。

# ~/.aws/credentials

[default]
aws_access_key_id = <デフォルトのアクセスキー>
aws_secret_access_key = <デフォルトのシークレットキー>

[<プロファイル名>]
aws_access_key_id = <プロファイル名のアクセスキー>
aws_secret_access_key = <プロファイル名のシークレットキー>
# ~/.aws/config

[default]
region = <デフォルトのリージョン>
output = <デフォルトの出力形式>

[profile <プロファイル名>]
region = <プロファイル名のリージョン>
output = <プロファイル名の出力形式>

なお、 --profile オプションで <プロファイル名> を指定しない場合は default という名前のプロファイルが設定されます。
各コマンドでプロファイルのクレデンシャルを指定して実行したい場合も以下のように --profile オプションを付けて実行します。

$ aws s3 ls --profile <プロファイル名>

いちいち --profile オプションを指定するのは面倒です。
そんな時は、以下の環境変数を指定すると --profile オプションを省略してもプロファイルが適用されます。

$ export AWS_DEFAULT_PROFILE=<プロファイル名>
# もしくは
$ export AWS_PROFILE=<プロファイル名>

プロファイルの一覧は以下のコマンドで取得できます。

$ aws configure list-profiles

MFA認証(多要素認証)

AWS CLI で MFA 認証(多要素認証)が必要な場合、通常、以下を実施する必要があります。

しかし、超面倒です。
そんな時は aws-mfa というサポートツールを利用することで少し楽になります。

aws-mfa を利用した MFA 認証

インストールは以下です。
なお、 Python(pip) のインストールについては asdf が楽なのでおすすめです。

$ pip install aws-mfa
or
$ pip3 install aws-mfa

~/.aws/credentials ファイルに以下を追記します。

[<プロファイル名>-long-term]
aws_access_key_id = <あなたのIAM Userのアクセスキー>
aws_secret_access_key = <あなたのIAM Userのシークレットキー>
aws_mfa_device = arn:aws:iam::<aws_account_id>:mfa/<あなたのIAM User ID>

任意のプロファイル名に -long-term がついているのがポイントです。
上記が出来たら、以下のコマンドを実行します。

$ aws-mfa --profile <プロファイル名>

ワンタイムトークンの入力が求められ、入力後 ~/.aws/credentials に以下が追記されます。

[<プロファイル名>]
assumed_role = False
aws_access_key_id = <一時的なアクセスキー>
aws_secret_access_key = <一時的なシークレットキー>
aws_session_token = <一時的なセッショントークン>
aws_security_token = <一時的なセキュリティトークン>
expiration = <キー・トークンの有効期限>

<プロファイル名>-long-term プロファイルを作成して aws-mfa --profile <プロファイル名> コマンドを実行したことにより、 <プロファイル名> のプロファイルが一時トークン・セッションを含んだ形で作成されるという流れです。
生成されたプロファイルを有効にするために以下を実行します。

$ export AWS_DEFAULT_PROFILE=<プロファイル名>
# もしくは
$ export AWS_PROFILE=<プロファイル名>

以上でトークン・セッションの有効期限内においては AWS CLI が利用可能になります。
有効期限が切れたら、 aws-mfa --profile <プロファイル名> を再実行すればよいです。

おすすめ書籍

おすすめ記事