我可以以编程方式查找所有未标记的资源吗?

Nat*_*rot 6 boto amazon-web-services

AWS 网络控制台中的标签编辑器允许我搜索不存在特定标签的“所有资源类型”。例如,我可以列出缺少“环境”标签的所有内容。

我想将此作为定期检查运行,以强制没有创建新的未标记资源。一些 Boto 代码(作为 Lambda cron 作业运行)似乎很合适。但是,Boto 文档仅向我展示了如何查看特定资源类型(例如EC2 实例)。

是否有任何用于询问一般标签的 API?还是我需要枚举每个资源类型?

Ano*_*lip 6

如果将来有人寻找相同的问题,请在此处发布。

AWS Resource Group 提供了这样的功能。您可以通过https://console.aws.amazon.com/resource-groups/home在 AWS 控制台中访问资源组。我没有找到如何--tag-filters在 CLI 中使用unTagged 值,所以用来jq过滤结果。

这是一个示例命令,用于获取没有环境标签的所有资源。

aws resourcegroupstaggingapi get-resources --tags-per-page 100 | jq '.ResourceTagMappingList[] | select(contains({Tags: [{Key: "environment"} ]}) | not)'
Run Code Online (Sandbox Code Playgroud)

通过resourcegroupstaggingapi参考获取资源- https://docs.aws.amazon.com/cli/latest/reference/resourcegroupstaggingapi/get-resources.html

有关资源组 API 的更多信息,请访问https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html

  • 这确实有效(有限制)。API不会返回从未标记过的资源。只有当它们过去至少有一个标签时,它才会返回它们,即使它们不再有标签。 (2认同)

Mic*_*ens 5

根据这篇文章,您可以从控制台使用 AWS 资源组来查找标签值为空的资源。要查找具有标签键但没有标签值的资源,请选择(未标记)。 AWS 资源组和标签编辑器

如果您正在寻找自动警报,请考虑使用AWS Config Rules并查看此相关博客。特别是,有一个名为“required_tags”的规则模板,用于检查最多 5 个标签的存在。您可以根据需要运行更多规则实例,或修改代码。在此处查找该链接和其他规则模板

我还发现了一个不错的博客,它通过在通过 CLI 调用服务 API 时使用过滤来帮助回答这个问题。

我还发现使用 AWS Config 也很有效。为特定 AWS 区域设置 AWS Config 后,您可以提交高级查询以查找缺失标签,例如 EC2 资源上缺失标签的查询:

SELECT
  resourceId,
  resourceType,
  configuration.instanceType,
  configuration.placement.tenancy,
  configuration.imageId,
  tags,
  availabilityZone
WHERE
  resourceType = 'AWS::EC2::Instance'
  AND tags.key NOT LIKE 'owner'
Run Code Online (Sandbox Code Playgroud)