【发布时间】:2022-05-05 13:46:29
【问题描述】:
我有以下从 AWS 机密返回的 JSON:
{
"ARN": "MyArn",
"Name": "MySecret",
"SecretString": "{\"ConnectionString\":\"MyConnectionString;\",\"SqlCommandTimeout\":\"60\",\",\"ServiceAccountPrincipal\":\"MyServicePrincipal\"}",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": "2022-01-13T09:08:55.442000-08:00"
}
我希望能够修改 ConnectionString、SqlCommandTimeout 和 ServiceAccountPrincipal 值。为简洁起见,我只是展示了对 ConnectionString 的更改。
“新”JSON 如下所示:
{
"ARN": "MyArn",
"Name": "MySecret",
"SecretString": "{\"ConnectionString\":\"MyNewConnectionString;\",\"SqlCommandTimeout\":\"60\",\",\"ServiceAccountPrincipal\":\"MyServicePrincipal\"}",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": "2022-01-13T09:08:55.442000-08:00"
}
但是,我不确定如何使用 JQ。
我想做的是让 JQ 修改每个字段的值并输出带有更新值的 JSON 对象。
我遇到的问题是修改嵌入 JSON 对象内的这些值。我希望这样的事情能够奏效,但它没有:
猫 json.txt | jq 'SecretString.ConnectionString = "MyNewConnectionString"'
我收到此错误:
jq: error (at <stdin>:8): Cannot index string with string "ConnectionString"
exit status 5
我做错了什么?
谢谢
【问题讨论】:
-
\"SqlCommandTimeout\":\"60\"后面有一个无效的\"字符,导致该字段无法转换回 JSON -
这是出乎意料吗?
-
不幸的是,AWS 正在添加这些字符。
标签: json jq aws-secrets-manager