我编写了一个脚本来:1)生成随机密码2)创建新的IAM用户3)使用生成的密码为该用户设置登录配置文件。 下面是我在bash中的代码:
RANDOM_PASS=$(aws secretsmanager get-random-password --include-space --password-length 20 --require-each-included-type | jq '.RandomPassword' | tr -d '"')
aws iam create-user --user-name $USERID
aws iam create-login-profile --user-name $USERID --password $RANDOM_PASS --password-reset-required
如您所见,我使用jq获取了特定的密码字符串,然后将其截断了,因此可以将其放在create-login-profile中。但是它看起来不是很优雅,我觉得必须有一个更好的方法。有什么建议吗?
答案 0 :(得分:2)
重新讨论此部分:
jq '.RandomPassword' | tr -d '"')
收件人:
jq -r '.RandomPassword'
-r
表示不带引号的原始输出。
答案 1 :(得分:1)
实际上您根本不需要JQ。
代替:
aws secretsmanager get-random-password --include-space --password-length 20 \
--require-each-included-type | jq '.RandomPassword' | tr -d '"'
您只需要:
aws secretsmanager get-random-password --include-space --password-length 20 \
--require-each-included-type --output text
AWS CLI命令允许您通过传递--output
开关在JSON和文本(和表)输出之间切换。
关于脚本的一般可读性,我也尽量避免使用长行,因此我将其重构为:
RANDOM_PASS=$(aws secretsmanager get-random-password \
--require-each-included-type \
--password-length 20 \
--include-space \
--output text)
aws iam create-user --user-name $USERID
aws iam create-login-profile \
--user-name $USERID \
--password $RANDOM_PASS \
--password-reset-required
显然,这只是个人喜好。