AWS cli 查询以获取具有特定来源名称的云端“域名”

问题描述 投票:0回答:1

这是我从 awscli 得到的 JSON 输出,我想使用 Origin DomainName example1.com 仅通过 AWS cli 查询获取 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", 
         },
       ]
    }
amazon-web-services amazon-cloudfront aws-cli
1个回答
19
投票

由于 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"
}
© www.soinside.com 2019 - 2024. All rights reserved.