鉴于登录aws login sso
成功。
Successully logged into Start URL: *****
从这里我想启动我的服务,该服务需要设置以下环境变量和 AWS 凭证:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
如何将这些变量提取到当前 shell 中?
我目前正在使用的解决方法:
我找到了一种可能的解决方法,对我有用:我注意到在我登录并运行aws sts get-caller-identity
它后,它会在目录中创建文件~/.aws
,从那里可以使用如下脚本对其进行解析:
#!/usr/bin/env bash
set -e
AWS_ACCESS_KEY_ID=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.AccessKeyId' --raw-output)
AWS_SECRET_ACCESS_KEY=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SecretAccessKey' --raw-output)
AWS_SESSION_TOKEN=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SessionToken' --raw-output)
>&2 echo "✨ you need to eval output of this script in your current window:"
>&2 echo ' eval $('$0')'
>&2 echo ""
echo "export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"
echo "export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"
echo "export AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}"
在设置环境变量评估此脚本的输出后,我可以使用 AWS 凭证启动我的服务。eval $(./parse-aws-cache.sh)
它今天对我有用,但我对这个解决方案有一些疑问:
- 我看不到这种行为在 AWS 中的记录位置;
- 还从一个名为something cache的目录中读取数据似乎并不可靠;
- 我不知道在具有不同配置的其他机器上工作有多便携。
理想情况下,我希望得到一个答案:
- 提供另一种更可靠的方式来获取这些环境变量;
- 或者给出一个合理的确认,从缓存文件中解析这些变量的方法实际上是可以使用的。