LoginSignup
9
5

More than 3 years have passed since last update.

aws sts get-session-token の結果を環境変数に入れるシェルスクリプト

Posted at

MFA が必要な IAM ユーザで AWS CLI を利用する場合、GetSessionToken API を用いて一時的な Credentials を取得する必要がある。

参考: AWS CLI 経由で MFA を使用してアクセスを認証する

しかしこれが面倒くさい。

aws sts get-session-token コマンドを実行して表示された JSON から Credentials を抜き出して ~/.aws/credentials に書き込むなり環境変数に設定するなりを毎回手作業でやらなければならない。

そこで、環境変数へ設定する作業を自動でやってくれるシェルスクリプトを書いた。

set-aws-session-token
#!/bin/sh -eu

if [ ! -p /dev/stdin ]; then
  echo "Usage:"
  echo "  aws sts get-session-token [options] | source ${0}"
else
  json=$(cat - | tr -d '\n')
  export AWS_ACCESS_KEY_ID=$(echo ${json} | sed -E 's/^.*"AccessKeyId": *"([^"]+)".*$/\1/')
  export AWS_SECRET_ACCESS_KEY=$(echo ${json} | sed -E 's/^.*"SecretAccessKey": *"([^"]+)".*$/\1/')
  export AWS_SESSION_TOKEN=$(echo ${json} | sed -E 's/^.*"SessionToken": *"([^"]+)".*$/\1/')
  env | grep AWS
fi

macOS では動作確認をしているが、GNU 版 sed が入っている Linux では動かないかもしれない。
jq が入っている人は sed 部分を jq で書き直しても良さそう。

このスクリプトを PATH が通ってるどこかに置いておいて、以下のように使う。

$ aws sts get-session-token \
    --serial-number arn:aws:iam::0123456789:mfa/username \
    --token-code 000000 \
    | source set-aws-session-token

手作業でコピペする必要がなくなって便利。

9
5
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
9
5