0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】MFAセッショントークンを取得する【Powershell】

Last updated at Posted at 2023-04-14

PowerShellコマンド

MFAセッショントークンを取得し、環境変数に設定するPowershellコマンド。

# アカウントID、ユーザー名、ワンタイムパスワードは書き換える
# 有効期間は3600秒を設定(最大129600秒(36時間))
$session = aws sts get-session-token `
  --serial-number arn:aws:iam::{アカウントID}:mfa/{ユーザー名} `
  --token-code {ワンタイムパスワード} `
  --duration-seconds 3600 `
  --profile default | ConvertFrom-Json

# ユーザーの環境変数に設定
[System.Environment]::SetEnvironmentVariable("AWS_ACCESS_KEY_ID", $session.Credentials.AccessKeyId, "User")
[System.Environment]::SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", $session.Credentials.SecretAccessKey, "User")
[System.Environment]::SetEnvironmentVariable("AWS_SESSION_TOKEN", $session.Credentials.SessionToken, "User")

# プロンプトを開き直さなくてもよいように、プロンプト上の環境変数にも設定
$env:AWS_ACCESS_KEY_ID = $session.Credentials.AccessKeyId
$env:AWS_SECRET_ACCESS_KEY = $session.Credentials.SecretAccessKey
$env:AWS_SESSION_TOKEN = $session.Credentials.SessionToken
~\.aws\credentials
[default]
aws_access_key_id = {アクセスキー}
aws_secret_access_key = {シークレットキー}

Powershellのコマンドとして登録する

毎回スクリプトを実行するのは面倒なので、Powershell上のコマンドとしていつでも実行できるようにする。

Powershellのプロファイルに以下を記載する。
※プロファイルの場所は、\$PROFILE 変数の値。
 (現在のユーザーの場合は、$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1)
※初回作成時はファイルが存在しないので作成する

Microsoft.PowerShell_profile.ps1
function SetMFASessionToken() {
  Param([Parameter(Mandatory)]$token)

  # アカウントID、ユーザー名は書き換える
  # 有効期間は3600秒を設定
  $session = aws sts get-session-token `
    --serial-number arn:aws:iam::{アカウントID}:mfa/{ユーザー名} `
    --token-code $token `
    --duration-seconds 3600 `
    --profile default | ConvertFrom-Json

  # ユーザーの環境変数に設定
  [System.Environment]::SetEnvironmentVariable("AWS_ACCESS_KEY_ID", $session.Credentials.AccessKeyId, "User")
  [System.Environment]::SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", $session.Credentials.SecretAccessKey, "User")
  [System.Environment]::SetEnvironmentVariable("AWS_SESSION_TOKEN", $session.Credentials.SessionToken, "User")

  # プロンプトを開き直さなくてもよいように、プロンプト上の環境変数にも設定
  $env:AWS_ACCESS_KEY_ID = $session.Credentials.AccessKeyId
  $env:AWS_SECRET_ACCESS_KEY = $session.Credentials.SecretAccessKey
  $env:AWS_SESSION_TOKEN = $session.Credentials.SessionToken
}

Powershell上でコマンドレットのように呼び出せる

image.png

※動作確認環境※
AWS CLI:2.1.32
PowerShell:7.3.4

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?