Linux 環境で config を編集
config の確認
$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json
上記 config にスイッチロールを追記
# エディタを起動し config を編集
$ vi ~/.aws/config
エディタ起動時はコマンドモード
i
でカーソル位置から文字の入力が可能(インサートモード)となる
[default]
region = ap-northeast-1
output = json
[profile 【スイッチロールするプロファイル名】]
role_arn = arn:aws:iam::【スイッチロールするアカウント】:role/【スイッチロール名】
source_profile = default
編集後は Esc
でコマンドモードへ戻り、:wq
で上書き保存
保存せずに終了する場合は :q
強制終了は :q!
# スイッチロールで aws cli を利用
$ aws 【実行するコマンド等】 --profile 【スイッチロールするプロファイル名】
スイッチロールをデフォルトにしたい場合は credentials を編集
credentials の確認
$ cat ~/.aws/credentials
[default]
aws_access_key_id = ZZZZZZZZZZZZZZZZZZZZ
aws_secret_access_key = 9999999999999999999999999999999999999999
エディタを起動し credentials を編集
$ vi ~/.aws/credentials
デフォルトの aws_access_key_id
, aws_secret_access_key
に default
以外のプロファイルを命名
[default]
の role_arn
にスイッチロールを、source_profile
にデフォルトのプロファイル名をそれぞれ記載する
[【デフォルトのプロファイル名】]
aws_access_key_id = ZZZZZZZZZZZZZZZZZZZZ
aws_secret_access_key = 9999999999999999999999999999999999999999
[default]
role_arn = arn:aws:iam::【スイッチロールするアカウント】:role/【スイッチロール名】
source_profile =【デフォルトのプロファイル名】
現在使用しているプロファイルの確認
$ aws sts get-caller-identity
{
"UserId": "XXXXXXXXXXXXXXXXXXXXX",
"Account": "000000000000",
"Arn": "arn:aws:iam::000000000000:user/【ユーザ名】"
}
シェルスクリプトで sts assume-role を利用
AWS_STS_CREDENTIALS=`aws sts assume-role \
--role-arn arn:aws:iam::000000000000:role/【ロール名】\
--role-session-name【スイッチロールセッション中の名前】\
--duration-seconds【スイッチロールセッション時間 900秒(15分)~最大はIAMの設定次第】`
AWS_ACCESS_KEY_ID=`echo "${AWS_STS_CREDENTIALS}" | jq -r '.Credentials.AccessKeyId'`
AWS_SECRET_ACCESS_KEY=`echo "${AWS_STS_CREDENTIALS}" | jq -r '.Credentials.SecretAccessKey'`
AWS_SESSION_TOKEN=`echo "${AWS_STS_CREDENTIALS}" | jq -r '.Credentials.SessionToken'`
export AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY
export AWS_SESSION_TOKEN
【スイッチロール中に実行したいコマンド等】
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
【参考】
https://dev.classmethod.jp/etc/cli-switch-role/
https://dev.classmethod.jp/cloud/aws/get-aws-account-id-with-get-caller-identity/
https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html