有没有一种方法可以按标签列出 CloudFront 发行版,而无需使用 ListDistributions 下载所有发行版?

Dmi*_*try 5 amazon-web-services amazon-cloudfront

这个问题是类似的,但唯一的答案是获取所有发行版的列表并在本地过滤它们,这不是我想要的。

此页面暗示可能可以按标签进行过滤(“您可以根据您添加的标签搜索和过滤您的资源”),但我只是不知道如何

Blo*_*ost 6

要添加到 Balu 的精彩答案中,如果您在设置时指定了默认区域,aws-cli而该区域不是 us-east-1那么它将无法工作(您将看到一个空数组ResourceTagMappingList)。

--region us-east-1请务必在命令末尾添加如下内容:

aws resourcegroupstaggingapi get-resources --tag-filters Key=tagName,Values=tagValue --resource-type-filters 'cloudfront' --tags-per-page 100 --region us-east-1
Run Code Online (Sandbox Code Playgroud)


Bal*_*ala 4

我只能想到一种方法,因为aws cloudfront不直接支持按标签获取发行版。我们可以使用resourcegroupstaggingapicli 来获取所有 Cloudfront 的 ResourceARN 并使用jqsed提取 DistributionIds

例如:标签 ApplicationID=APP1111

aws  resourcegroupstaggingapi get-resources --tag-filters Key=ApplicationID,Values=APP1111 --resource-type-filters 'cloudfront' --tags-per-page 100 | jq -r ".ResourceTagMappingList[].ResourceARN" | sed 's:.*/::'
Run Code Online (Sandbox Code Playgroud)

我们可以进一步使用 xargs 并为每个 Id 执行 get-distribution 。

aws  resourcegroupstaggingapi get-resources --tag-filters Key=ApplicationID,Values=APP1111 --resource-type-filters 'cloudfront' --tags-per-page 100 | jq -r ".ResourceTagMappingList[].ResourceARN" | sed 's:.*/::' | xargs -I {} aws cloudfront  get-distribution --id {}
Run Code Online (Sandbox Code Playgroud)