ローカルから aws コマンドを実行する場合、一時的なセキュリティ認証情報を取得する必要がある。
それを環境変数に設定すれば良い訳だが、そんなこと何度もやってられない。ググるとそれっぽい BAT ファイルが見つかるので暫くはそれを使っていたのだが、気に入らない部分があったりプロファイル指定も欲しかったので、結局自作した。
aws-mfa.cmd:
@echo off
set _aws_profile=myprofile
set _aws_default_region=ap-northeast-1
set _aws_mfa_arn=arn:aws:iam::123456789012:mfa/mymfa
set /p _mfa_code="Enter MFA code: "
for /f "usebackq tokens=2,4,5" %%i in (`
aws sts get-session-token
--profile "%_aws_profile%"
--serial-number "%_aws_mfa_arn%"
--token-code "%_mfa_code%"
--duration-seconds 86400
--output text
`) do (
set AWS_DEFAULT_REGION=%_aws_default_region%
set AWS_ACCESS_KEY_ID=%%i
set AWS_SECRET_ACCESS_KEY=%%j
set AWS_SESSION_TOKEN=%%k
setlocal ENABLEDELAYEDEXPANSION
echo AWS_DEFAULT_REGION=!AWS_DEFAULT_REGION!
echo AWS_ACCESS_KEY_ID=!AWS_ACCESS_KEY_ID!
echo AWS_SECRET_ACCESS_KEY=!AWS_SECRET_ACCESS_KEY!
echo AWS_SESSION_TOKEN=!AWS_SESSION_TOKEN!
endlocal
)
set _aws_profile=
set _aws_default_region=
set _aws_mfa_arn=
set _mfa_code=
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。