【发布时间】:2021-04-28 14:13:22
【问题描述】:
This question 类似,但唯一的答案是获取 all 分布列表并在本地过滤它们,这不是我想要的。
This page 暗示可能可以按标签过滤(“您可以根据添加的标签搜索和过滤资源”),但我就是想不通怎么样!
【问题讨论】:
标签: amazon-web-services amazon-cloudfront
This question 类似,但唯一的答案是获取 all 分布列表并在本地过滤它们,这不是我想要的。
This page 暗示可能可以按标签过滤(“您可以根据添加的标签搜索和过滤资源”),但我就是想不通怎么样!
【问题讨论】:
标签: amazon-web-services amazon-cloudfront
我只能想到一种方法,因为aws cloudfront 不直接支持按标签获取分发。
我们可以使用 resourcegroupstaggingapi cli 来获取所有云端的 ResourceARNs 并使用 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 {}
【讨论】:
aws resourcegroupstaggingapi get-resources 似乎根本没有返回任何 Cloudfront 发行版。 This page 说:“CloudFront 目前不支持标签编辑器和资源组”。可能是这个原因吗?
ApplicationID 的所有云端分发ID 返回为APP1111。
aws resourcegroupstaggingapi get-resources 的响应中也看不到任何云端分布,只有一些arn:aws:ec2 资源,而我显然有一些aws cloudfront list-distributions 列出的资源。你知道为什么吗?
us-east-1,否则您将看不到您的发行版(可能是因为 Cloudfront 发行版是全球性的,但仍需要在某个地方创建,us-east-1 基本上是 aws默认区域)
添加到 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
【讨论】: