Nat*_*rot 6 boto amazon-web-services
AWS 网络控制台中的标签编辑器允许我搜索不存在特定标签的“所有资源类型”。例如,我可以列出缺少“环境”标签的所有内容。
我想将此作为定期检查运行,以强制没有创建新的未标记资源。一些 Boto 代码(作为 Lambda cron 作业运行)似乎很合适。但是,Boto 文档仅向我展示了如何查看特定资源类型(例如EC2 实例)。
是否有任何用于询问一般标签的 API?还是我需要枚举每个资源类型?
如果将来有人寻找相同的问题,请在此处发布。
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
根据这篇文章,您可以从控制台使用 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)
| 归档时间: |
|
| 查看次数: |
5907 次 |
| 最近记录: |