📲

sts get-session-tokenを実行し、トークンを環境変数に設定するPowerShellスクリプト

2024/03/28に公開

概要

aws sts get-session-tokenを実行した後、セッションの設定をするのが煩わしいので、
PowerShell スクリプトを Copilot に組んでもらいました。

PowerShell スクリプト

aws_start_session.ps1
param(
    [Parameter(Mandatory=$true)]
    [ValidatePattern("^\d{6}$")]
    [string]$SixDigitNumber
)

# MFAデバイスのARNを定数として定義
$MfaDeviceArn = "arn:aws:iam::********:mfa/*****"

# AWS CLIを使用してセッショントークンを取得
$session = aws sts get-session-token --serial-number $MfaDeviceArn --token-code $SixDigitNumber --output json | ConvertFrom-Json

# 環境変数を設定
$env:AWS_ACCESS_KEY_ID = $session.Credentials.AccessKeyId
$env:AWS_SECRET_ACCESS_KEY = $session.Credentials.SecretAccessKey
$env:AWS_SESSION_TOKEN = $session.Credentials.SessionToken

使い方

スクリプトのファイル名をaws_start_session.ps1とした時、以下のように使用

.\aws_start_session.ps1 ******(MFAの確認コード)

エラーが出なければ以降、PowerShell を閉じるまで取得したセッションで
aws cli を使用できます

改善点

以下を実装することでより使いやすくなると考えています

  • 引数で profile を指定できるようにする
  • iam get-useriam list-mfa-devices を組み合わせて自身の MFA の ARN を取得するようにする
  • エラーメッセージの詳細化

Discussion