🙄

AWS CLIをAssumeRole+MFAの場合に利用する方法

2021/05/22に公開

はじめに

MFAが必要なAWS CLIコマンドはいくつか方法がありますがaws-vaultを利用すると簡単です。

aws-valutのインストール方法

macOSであれば以下のコマンドからインストール可能です

$ brew cask install aws-vault

AWS認証情報の登録

xxxxは任意の識別子を指定して下さい

$ aws-vault add xxxx
Enter Access Key ID: <ベースとなるAWSアカウントのAcceccKey>
Enter Secret Access Key: <ベースとなるAWSアカウントのSecretAcceccKey>
Added credentials to profile "xxxx" in vault

$ cat ~/.aws/config
[profile xxxx]

プロファイルの登録

スイッチしたいプロファイル

$ vi ~/.aws/config

[profile xxxx]
region=ap-northeast-1
mfa_serial=arn:aws:iam::<ベースとなるAWSアカウントID>:mfa/<ユーザID>
region=ap-northeast-1

[profile xxxx-AAA]
source_profile=xxxx
role_arn=arn:aws:iam::<スイッチ先AWSアカウントIDのA>:role/assumerole/<割り当てるロール>

[profile xxxx-BBB]
source_profile=xxxx
role_arn=arn:aws:iam::<スイッチ先AWSアカウントIDのB>:role/assumerole/<割り当てるロール>

認証情報の取得

aws-vault exec xxxx-AAA

うまく行かない場合は

間違った設定を記憶している場合、~/.aws/configが正しくてもうまく行かない場合があります。
その場合は一度プロファイルを消してみてください

aws-vault remove xxxx-AAA
aws-vault exec xxxx-AAA

動作確認

aws s3 ls

別のプロファイルに切り替える場合

環境変数AWS_VAULTを一旦クリアする必要があります

unset AWS_VAULT

AWSコンソールへのログインも以下から実施できる

aws-vault login xxxx-AAA

Discussion