如何从 aws configure sso 命令获取 aws 配置文件 ID

问题描述 投票:0回答:1

作为自动连接到 postgres 实例的 bash 脚本的一部分,我需要配置 aws cli 工具并设置 AWS_PROFILE 变量。该命令在其输出的最后一行中输出此内容。

问题是

aws configure sso
是交互式的,所以我不能将输出转储到变量中。所以我做了以下事情:

AWS_OUTPUT=$(aws configure sso | tee /dev/tty)
export AWS_PROFILE=$(tail -1 <<< "$AWS_OUTPUT" | cut -d' ' -f5)

这可行,但很难使用,因为每次我在

aws configure sso
运行时按任意键,也会插入回车符,并且输出非常混乱(尽管几乎无法使用)。

有没有更好的方法来获取个人资料ID?或者有办法防止回车问题吗?

amazon-web-services bash aws-cli tee
1个回答
0
投票

感谢 Caldazar 的评论,我意识到我的问题是基于对个人资料和帐户概念的混淆。似乎配置文件(例如 SSO 会话)是本地的,可以链接到任何帐户。

因此,与其尝试从 aws 命令检索自动生成的配置文件 ID,不如通过命令行参数或作为导出的环境变量提供配置文件 ID。

此外,我们只需为每个配置文件执行一次即可在本地设置配置文件,而不是每次登录时都运行

aws configure sso

aws configure sso --profile prefix-dev
aws configure sso --profile prefix-qa
aws configure sso --profile prefix-prod

然后在脚本中我们首先确定正确的配置文件,然后运行

aws sso login
。我的用例是检索 rds 密码。所以我的脚本的相关部分如下所示:

export AWS_PROFILE="prefix-$env"
DB_PASSWORD=$(aws rds generate-db-auth-token --hostname $DB_HOST --port 5432 --username $SERVICE)
while [ $? != 0 ]; do
    aws sso login
    DB_PASSWORD=$(aws rds generate-db-auth-token --hostname $DB_HOST --port 5432 --username $SERVICE)
done
© www.soinside.com 2019 - 2024. All rights reserved.