使用jq解析AWS Secrets Manager返回JSON时遇语法错误:意外'['
问题排查与解决
错误原因
你的jq语法存在两个问题:
- 语法错误:
.SecretString.[$keyvar]中,.SecretString后面多了一个多余的点,jq的方括号属性访问语法不需要这个额外的点。 - 未解析嵌套JSON:AWS Secrets Manager返回的
SecretString字段是JSON格式的字符串,而非直接可访问的JSON对象,直接取值会无法识别内部的键值对。
修正后的脚本
db_secret_data=$(aws secretsmanager get-secret-value --secret-id "$db_secret_name" --output json) echo "$db_secret_data" db_secret_str=$(echo "$db_secret_data" | jq --arg keyvar "${uid_str}-TY" '.SecretString | fromjson | .[$keyvar]' -r)
关键修正说明
- 移除
.SecretString后的多余点,修复基础语法错误。 - 通过
| fromjson将SecretString字段的JSON字符串解析为可操作的JSON对象。 - 解析完成后,使用
.[$keyvar]通过变量指定的键名获取对应的值。
内容的提问来源于stack exchange,提问作者xil3
相关产品推荐
相关产品推荐

