AWS SSO 登录凭证作为环境变量

Luk*_*tas 19 environment-variables command-line-interface amazon-web-services aws-sts aws-sso

至此登录aws login sso成功。

\n
Successully logged into Start URL: *****\n
Run Code Online (Sandbox Code Playgroud)\n

从这里我想启动我的服务,该服务需要设置以下带有 AWS 凭证的环境变量:

\n
    \n
  • AWS_ACCESS_KEY_ID
  • \n
  • AWS_SECRET_ACCESS_KEY
  • \n
  • AWS_SESSION_TOKEN
  • \n
\n

如何将这些变量提取到当前 shell 中?

\n

我目前正在使用的解决方法:

\n

我找到了一个可能适合我的解决方法:我注意到在我登录并运行后,aws sts get-caller-identity它会在目录中创建文件~/.aws,可以使用如下脚本对其进行解析:

\n
#!/usr/bin/env bash\n\nset -e\n\nAWS_ACCESS_KEY_ID=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.AccessKeyId' --raw-output)\nAWS_SECRET_ACCESS_KEY=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SecretAccessKey' --raw-output)\nAWS_SESSION_TOKEN=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SessionToken' --raw-output)\n\n>&2 echo "\xe2\x9c\xa8 you need to eval output of this script in your current window:"\n>&2 echo '    eval $('$0')'\n>&2 echo ""\necho "export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"\necho "export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"\necho "export AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}"\n
Run Code Online (Sandbox Code Playgroud)\n

在设置了环境变量并评估此脚本的输出后eval $(./parse-aws-cache.sh),我可以使用 AWS 凭证启动我的服务。

\n

它今天对我有用,但我对此解决方案有一些疑问:

\n
    \n
  • 我看不到 AWS 中记录此行为的位置;
  • \n
  • 从名为some cache 的目录中读取数据似乎也不可靠;
  • \n
  • 我不知道在具有不同配置的其他机器上工作的便携性如何。
  • \n
\n

理想情况下,我期望得到一个答案:

\n
    \n
  • 提供另一种更可靠的方式来获取这些环境变量;
  • \n
  • 或者给出一个合理的确认,即从缓存文件中解析这些变量的方法实际上可以使用。
  • \n
\n

Chr*_*est 53

现在可以使用AWS CLI 的内置功能来完成此操作。

只需运行eval "$(aws configure export-credentials --profile your-profile-name --format env)"即可。