这是来自awscli的我的JSON输出我希望仅使用AWS cli查询使用Origin DomainName example1.com 来获取 xxxxxxxx.cloudfront.net 。 {我知道用jq,awk和cut,grep}过滤。
"DistributionList": {
"Items": [
{
"WebACLId": "",
"Origins": {
"Items": [
{
"OriginPath": "",
"CustomOriginConfig": {
"OriginProtocolPolicy": "http-only",
"HTTPPort": 80,
"HTTPSPort": 443
},
"Id": "DNS for Media Delivery",
"DomainName": "example1.com"
}
],
"Quantity": 1
},
"DomainName": "xxxxxxxx.cloudfront.net",
},
{
"WebACLId": "",
"Origins": {
"Items": [
{
"OriginPath": "",
"CustomOriginConfig": {
"OriginProtocolPolicy": "http-only",
"HTTPPort": 80,
"HTTPSPort": 443
},
"Id": "DNS for Media Delivery",
"DomainName": "example2.com"
}
],
"Quantity": 1
},
"DomainName": "yyyyyyyyyy.cloudfront.net",
},
]
}
答案 0 :(得分:8)
由于AWS CLI --query
参数在JMESPath之上工作,您可以构建出色的过滤器。
您的问题的答案将是:
--query "DistributionList.Items[].{DomainName: DomainName, OriginDomainName: Origins.Items[0].DomainName}[?contains(OriginDomainName, 'example1.com')] | [0]"
它将返回给你:
{
"DomainName": "xxxxxxxx.cloudfront.net",
"OriginDomainName": "example1.com"
}
P.S。希望它会帮助别人。