amazon-web-services - 获取所有 aws 资源的所有者电子邮件
问题描述
我正在尝试使用 boto3 和 lambda 构建一个脚本,以获取所有者的电子邮件地址,以获取aws 中跨区域创建的所有资源(至少从 EC2 开始)。这样做的目的是通知所有者他们拥有这么多资源。
import boto3
ec2 = boto3.client('ec2')
iam = boto3.client('iam').list_users()
iam json 包含所有用户信息,但没有电子邮件地址,ec2 具有所有者 ID,但我不确定如何获取所有者 ID。
如果有第三方服务,我也愿意考虑。
解决方案
AWS 中没有“资源所有权”的概念。
相反,当用户进行 API 调用(或使用控制台)来创建资源时,AWS 会确认他们有权进行 API 调用。如果是,则创建资源并且资源属于 AWS 账户。没有指向请求资源的用户的链接。
AWS CloudTrail服务保留 API 调用的审计日志,因此可以检查 CloudTrail 记录以查看哪个用户进行了创建资源的 API 调用。
有些人更喜欢使用标签来跟踪资源的所有权或用途。例如,使用标签来跟踪部门、项目或成本中心。
此外,请注意,资源可以由IAM 用户、IAM 角色(由用户承担,也可以通过 CloudTrail 进行跟踪)或其他AWS 服务(例如 Amazon EC2 Auto Scaling 自动启动 EC2 实例)创建。因此,在资源和创建它的“人”之间找到一对一的关系并不总是那么容易。
推荐阅读
- c - 将二维数组与自身相乘的最佳方法
- vb.net - 如何在不使用依赖项的主键作为外键的情况下在 EF 中建模 1:M 关系?
- postgresql - 我怎样才能对这个表进行分区?
- javascript - 使用 Postgres 的 Express REST API 的 HTTP 方法
- awk - 如何在 Bash 中使用 AWK 使用 2 个键提取值?
- typescript - 从联合中提取非索引类型
- amazon-s3 - 将 AWS 角色传递给使用默认 boto3 配置的应用程序
- html - IE 中的渐变效果
- python - Seaborn在应该是白色的时候用灰色背景保存地块
- c# - 对象(通用)的 Protobuf-net 序列化抛出错误没有为类型定义序列化程序:System.Object