有没有一种方法可以通过标签列出 CloudFront 分布,而无需使用 ListDistributions 将它们全部下载?
Is there a way to list CloudFront distributions by tag without downloading them all using ListDistributions?
This question 类似,但唯一的答案是获取 all 分布的列表并在本地过滤它们,这不是我想要的。
This page 提示可以按标签过滤(“您可以根据您添加的标签搜索和过滤您的资源”),但我只是想不通如何!
我只能想到一种方法,因为aws cloudfront
不直接支持通过标签获取分布。
我们可以使用 resourcegroupstaggingapi
cli 获取所有云端的 ResourceARN,并使用 jq
和 sed
提取 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:.*/::'
我们可以进一步使用 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 {}
添加到 Balu 的好答案中,如果您在设置 aws-cli
时指定了默认区域并且该区域是 not 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
This question 类似,但唯一的答案是获取 all 分布的列表并在本地过滤它们,这不是我想要的。
This page 提示可以按标签过滤(“您可以根据您添加的标签搜索和过滤您的资源”),但我只是想不通如何!
我只能想到一种方法,因为aws cloudfront
不直接支持通过标签获取分布。
我们可以使用 resourcegroupstaggingapi
cli 获取所有云端的 ResourceARN,并使用 jq
和 sed
提取 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:.*/::'
我们可以进一步使用 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 {}
添加到 Balu 的好答案中,如果您在设置 aws-cli
时指定了默认区域并且该区域是 not 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