🥷

AWSの2FA認証をCLIからおこなうワンライナー

2022/06/22に公開

めっちゃ小ネタです🍣
AWSログインに多要素認証を有効化している環境でCLIを使うときに、接続情報をガッと環境変数に突っ込むワンライナーになります

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa.html

前提として、 <() が使えるシェルと、jq のインストールが必要です
rcファイル等で以下のaliasを設定します

.zshrc
alias aws2fa='echo -n "enter token: " && read token && source <(aws sts get-session-token --token-code "$token" --serial-number "arn:aws:iam::1234567890:mfa/HogeHoge" | jq -r ".Credentials | [\"export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\", \"export AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\",\"export AWS_SESSION_TOKEN=\(.SessionToken)\", \"echo Expiration: \(.Expiration)\"] | @tsv" | tr "\t" "\n")'

--serial-number で指定している arn:aws:iam::1234567890:mfa/HogeHoge の内容は、各自IAMの MFAデバイスの割り当て を確認してください

使い方は以下の感じです
コマンドを実行すると対話でトークンを聞かれます
正しいトークンを入力すると、現在のログインセッションに資格情報が設定されます

$ aws2fa
enter token: 123456
Expiration: 2022-06-22T14:44:52+00:00

$ printenv | grep -i AWS
AWS_SECRET_ACCESS_KEY=xxxx
AWS_ACCESS_KEY_ID=xxxx
AWS_SESSION_TOKEN=xxxx

そんだけ😌

Discussion