LoginSignup
0
0

More than 5 years have passed since last update.

AssumeRoleに一時認証情報をリクエストして環境変数に適応するコマンド

Last updated at Posted at 2019-02-21

はじめに

SQSにメッセージするEC2で動く既存プロダクトをローカルで動作確認しようとしたら、怒られた。

Error in custom provider,
com.amazonaws.services.sqs.model.AmazonSQSException: The security token included in the request is invalid.
(Service: AmazonSQS; Status Code: 403; Error Code: InvalidClientTokenId; Request ID: xxx)

なぜ怒られた?

調査してみると、EC2への認証情報は Instance Profile で提供しているらしいことがわかった。

どうする?

ということで、一時認証情報をリクエストしてローカルに適用することにした。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_temp_use-resources.html

一発で環境変数を適応するコマンド

前提

  • AWS CLI インストール済
  • jq コマンドインストール済
  • 私は fish ユーザーなので bash、zsh の方は良しなに。

実際のコマンド

set aws_secrets (aws sts assume-role \
--role-arn <arn of assume-role> \
--role-session-name "local_session" \
--profile <your profile> \
| jq .Credentials | jq '.AccessKeyId, .SecretAccessKey, .SessionToken' | sed "s/\"//g") \
;and set -x AWS_ACCESS_KEY_ID $aws_secrets[1] \
;and set -x AWS_SECRET_ACCESS_KEY $aws_secrets[2] \
;and set -x AWS_SESSION_TOKEN $aws_secrets[3]

おしまい。

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