我使用AWS list-distributions CLI 命令获取系统中的所有 ClodFront。例如
$ aws cloudfront list-distributions
{
"DistributionList": {
"Items": [
{
"Id": "E2DMQDAA2UTH",
"ARN": "arn:aws:cloudfront::0123456789:distribution/E2DMQDAA2UTH",
"Status": "Deployed",
"LastModifiedTime": "2024-07-08T09:31:24.859000+00:00",
"DomainName": "abcdefghijk.cloudfront.net",
"Aliases": {
"Quantity": 1,
"Items": [
"sandbox.images.domain.com"
]
},
"Origins": {
...
},
...
},
{
// more items
}
}
}
}
使用选项--query
获取包含 和 的所有内容的DistributionList.Items.Aliases
CLI命令是什么?我尝试了以下 sandbox
domain.com
aws cloudfront list-distributions --query 'DistributionList.Items[?contains(Aliases.Items[*], `sandbox`) && contains(Aliases.Items[*], `domain.com`)].[{Id:Id}]' --output json
但我明白
In function contains(), invalid type for value: None, expected one of: ['array', 'string'], received: "null"
我想要做的事情的正确语法是什么?我知道我可以编写管道/Groovy 脚本来过滤掉一些东西,但我不想这么做。
问题是您传递的
Aliases.Items[*]
参数是一个数组。但是,在contains中,如果我们想在数组中查找元素,则必须传递数组的每个元素以供使用 进行比较@
。这是修改后的命令,