AssumeRoleに一時認証情報をリクエストして環境変数に適応するコマンド
はじめに
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]
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]
おしまい。
Author And Source
この問題について(AssumeRoleに一時認証情報をリクエストして環境変数に適応するコマンド), 我々は、より多くの情報をここで見つけました https://qiita.com/takat0-h0rikosh1/items/07dafd8e841d4650aa1d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .