【小ネタ】AWS CLIでスイッチロールして作業を行うための設定をやってみた

2019.09.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Loft好きのKyoです。CLIも好きで修行中です。

AWS CLIでスイッチロールする際の設定に困ったので情報を残しておきたいと思います。

前提

  • aws-cli/1.16.232 Python/3.7.3 Darwin/18.7.0 botocore/1.12.222
  • ベースとなるアカウントのIAMユーザから、別アカウントのIAMロールにスイッチロールして、CLIから操作を行う
  • AWS CLIの設定は完了済み
    • ~/.aws/にスイッチロール元のIAMユーザの aws_access_key_idaws_secret_access_key が設定されている
    • ~/.aws/config も以下の様に設定されている

~/.aws/config

[default]
region=ap-northeast-1
output=json

設定

スイッチロール先のプロファイルをtest001と名付け、default の下にパラメタを追加しました。

~/.aws/config

[default]
region=ap-northeast-1
output=json

[profile test001]
region = ap-northeast-1
mfa_serial = arn:aws:iam::xxxxxxxxxxxx:mfa/hoge
role_arn = arn:aws:iam::yyyyyyyyyyyy:role/fuga
source_profile = default

ざっくり解説

  • mfa_serial

これはスイッチロール元でMFAを設定している場合に必要です。スイッチロール元のIAMユーザの画面から取得します。

  • role_arn

スイッチロール先のIAMロールの画面から取得します。

  • source_profile

IAMユーザー認証情報を含む別の名前付きプロファイルです。今回はスイッチロール元のプロファイルであるdefaultを利用します。

作業前にやること

プロファイル名test001を環境変数に設定します。

export AWS_DEFAULT_PROFILE=test001

正しくスイッチロール出来たかを確認します。この際にMFAのコードを求められるので入力します。

aws sts get-caller-identity

返ってきたJSONの中のAWSアカウントIDおよびロール名が正しければスイッチロール成功です。

以上、何かの参考になれば幸いです。それでは良いCLIライフを!