2026-10-28

Windows batch: aws sts get-session-token

ローカルから 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 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。