我有一个托管区域和记录集,可以路由到多个地址。我想通过在列表中添加或删除一个 IP 地址来更新记录集。不幸的是,AWS CLI不提供删除/添加route53中资源记录值的选项
{
"Comment": "Update the A record set",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "mydomain.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [
{
"Value": "XX.XX.XX.XX"
}
]
}
}
]
}
我可以像这样手动将多个 IP 地址添加到您的 json 中。但我想使用 bash 自动将多个 IP 添加到 json 文件中。
{
"Comment": "Update the A record set",
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "mydomain.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{
"Value": "XX.XX.XX.XX"
},
{
"Value": "XX.XX.XX.XX"
}
]
}
}]
}
答案1
添加、使用杰克
$ jq '.Changes[0].ResourceRecordSet.ResourceRecords += [{"Value": "foobar"}]' file.json
{
"Comment": "Update the A record set",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "mydomain.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [
{
"Value": "XX.XX.XX.XX"
},
{
"Value": "foobar"
}
]
}
}
]
}
答案2
你可能想尝试一下另一个 UNIX 实用程序:jtc
,它能够应用文件内的修改(带-f
选项):
bash $ jtc -w'<ResourceRecords>l' -i'{ "Value": "YY.YY.YY.YY" }' -f file.json
bash $ jtc file.json
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "mydomain.com",
"ResourceRecords": [
{
"Value": "XX.XX.XX.XX"
},
{
"Value": "YY.YY.YY.YY"
}
],
"TTL": 300,
"Type": "A"
}
}
],
"Comment": "Update the A record set"
}
bash $
并删除条目:
bash $ jtc -w'<ResourceRecords>l [0]' -p -f file.json
bash $ cat file.json
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "mydomain.com",
"ResourceRecords": [
{
"Value": "YY.YY.YY.YY"
}
],
"TTL": 300,
"Type": "A"
}
}
],
"Comment": "Update the A record set"
}
bash $