如何获取并持续更新AWS组织内所有用户创建的资源?
列出AWS组织内用户创建的资源并持续更新的方案
下面是几个可落地的实现方式,解决批量追踪用户创建资源并保持更新的需求:
1. 利用AWS Config实现自动化资源追踪
AWS Config是AWS官方的资源配置管理服务,天然支持跟踪资源的创建者和生命周期变更:
- 先在AWS控制台启用AWS Config,选择覆盖所有区域和所有支持的资源类型(包括S3、EC2等)
- 通过AWS Config控制台的资源Inventory功能,直接按
createdBy属性筛选,就能看到每个资源的创建用户 - 配置SNS通知规则,当有新资源创建或资源属性变更时,自动推送通知到指定邮箱/消息服务,实现实时更新
- 也可以用CLI命令批量导出:
结合aws configservice list-discovered-resources --resource-type AWS::EC2::Instance --include-deleted-resourcesjq工具提取createdBy字段:aws configservice list-discovered-resources --resource-type AWS::EC2::Instance | jq '.resourceIdentifiers[] | {resourceId: .resourceId, createdBy: .tags[] | select(.key=="createdBy") | .value}'
2. CloudTrail + Athena 回溯与实时查询
CloudTrail会记录所有AWS API操作事件,包括资源创建的请求,结合Athena可以高效分析:
- 确保CloudTrail已开启,并且日志存储到指定S3桶
- 在Athena中创建基于CloudTrail日志的表(可以用AWS提供的模板脚本)
- 编写SQL查询筛选资源创建事件,关联用户身份:
SELECT eventName, userIdentity.arn, resourceName, eventTime FROM cloudtrail_logs WHERE eventName IN ('CreateBucket', 'RunInstances') AND userIdentity.type = 'IAMUser' ORDER BY eventTime DESC; - 配置Athena查询的定时任务(结合CloudWatch Events),定期将查询结果导出到S3或发送到内部报表系统
3. 强制资源标签 + 批量扫描
通过IAM策略强制用户创建资源时必须添加CreatedBy标签,再结合资源标签API批量获取:
- 创建IAM策略,禁止未添加
CreatedBy标签的资源创建操作(比如针对EC2、S3的创建动作) - 用Resource Groups Tagging API批量获取带标签的资源:
aws resourcegroupstaggingapi get-resources --tag-filters Key=CreatedBy --resource-type-filters ec2:s3 - 配合Lambda函数和CloudWatch Events,每天定时执行上述命令,将结果汇总到数据库或生成CSV报表
注意事项
- 确保执行操作的IAM角色拥有
AWSConfigReadOnlyAccess、CloudTrailReadOnlyAccess、ResourceGroupsTaggingApiFullAccess等必要权限 - 多区域部署的资源需要在所有区域执行扫描,或启用AWS Config的多区域聚合功能
- 对于历史无标签的资源,可通过AWS Config的批量标签功能补全
CreatedBy信息
内容的提问来源于stack exchange,提问作者Redteamer0101
相关产品推荐
相关产品推荐

