我正在使用下面的脚本,出现语法错误,因为无法从机密管理器获取凭据。“用户名”:“我已输入的访问密钥的 AWS CLI 命令”,“密码”:“我已输入的密钥的 AWS CLI 命令”。如果有人能帮忙就太好了
#!/bin/bash
# Send the POST request and capture the response
response=$(curl -k \
-H "Content-Type: application/json" \
-X POST \
-d \
'{
"username":"'aws secretsmanager get-secret-value --region ap-south-1 --secret-id poc | jq --raw-output '.SecretString' | jq -r '.Access_Key''",
"password":"'aws secretsmanager get-secret-value --region ap-south-1 --secret-id poc | jq --raw-output '.SecretString' | jq -r '.Secret_Key''"
}' \
https://<region>/api/v1/authenticate)
我会做什么,使用 shell 的here doc:
-X POST
使用时不需要-d
。如果你掌握了
jq
,也许选择@Kusalananda 答案,或者混合它们。如果没有,如果您不熟悉jq
.您在有效负载数据中引用时遇到问题,并且这些命令管道不会自动执行。
相反,请考虑首先准备 JSON 有效负载文档,然后
curl
使用准备好的数据进行调用:这只需要一次
aws
+jq
调用即可获取 AWS 凭证,因为jq
可以一次性将多条数据提取到 JSON 对象中。键SecretString
的值是一个嵌入的 JSON 对象,因此我们在访问嵌入字段之前fromjson
在表达式中对其进行解码。jq