无AWS组织架构情况下,将成员账户AWS Cost & Usage Report共享至主账户的简便方法咨询
直接跨账户导出成员账户CUR到主账户S3桶(无需Lambda)
当然有更省心的方案!你之前用Lambda跨账户传输CUR的方法确实可行,但AWS原生就支持直接把独立成员账户的Cost & Usage Report(CUR)导出到主账户的S3桶,全程不用维护额外代码,稳定性和效率都更高。下面是具体步骤:
1. 主账户S3桶配置跨账户写入权限
首先要给主账户的目标S3桶添加桶策略,允许成员账户的CUR服务角色写入文件:
- 登录主账户S3控制台,找到你要接收CUR的桶,进入「权限」>「桶策略」
- 粘贴以下策略代码,替换占位符(如果有多个成员账户,可复制Statement块重复添加):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cur.amazonaws.com" }, "Action": ["s3:PutObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::你的主账户S3桶名/*", "arn:aws:s3:::你的主账户S3桶名" ], "Condition": { "StringEquals": { "aws:SourceAccount": "成员账户ID" } } } ] }
- 注意:保持桶的「阻止公共访问」默认配置即可,无需开放公共权限。
2. 成员账户配置CUR目标为跨账户S3桶
每个成员账户单独配置CUR直接导出到主账户桶:
- 登录成员账户的「Billing and Cost Management」控制台,进入「Cost & Usage Reports」
- 点击「Create report」,填写报告名称,勾选你需要的报告字段(比如
Include resource IDs) - 到「Delivery options」步骤:
- 选择「Amazon S3」作为交付目标
- 在「S3 bucket」栏输入主账户的桶名(不用加
s3://前缀) - 选择「CSV」作为输出格式,设置交付频率(每日/每月等)
- 点击「Verify access」,AWS会自动验证权限是否生效,验证通过后完成报告创建
- 之后AWS会定期把生成的CUR CSV文件直接上传到主账户的S3桶,默认路径是
主账户桶名/你的报告名/YYYY-MM-DD/,你也可以设置自定义前缀来区分不同成员账户的报告。
3. 主账户QuickSight对接CUR数据
现在主账户S3桶里已经有成员账户的CUR数据了,直接在QuickSight配置数据源即可:
- 登录主账户QuickSight控制台,进入「Manage data」>「New data set」
- 选择「S3」数据源,输入名称后,在「S3 manifest file」处填写CUR文件的存储前缀(比如
s3://你的主账户桶名/成员账户报告前缀/) - 配置QuickSight的IAM角色(自动创建的角色会默认添加S3访问权限)
- 完成数据源创建后,就可以构建数据集、制作可视化报表了。
额外小贴士
- 多个成员账户只需重复步骤2,无需额外配置主账户桶策略以外的内容
- CUR服务角色是创建报告时自动生成的,无需手动调整权限
- 可以给不同成员账户的CUR设置不同的报告前缀,方便在主账户S3桶里分类管理
这种方案完全替代了Lambda传输的方式,是AWS原生支持的功能,不用维护代码,也不会有Lambda执行故障的风险,更适合长期使用。
内容的提问来源于stack exchange,提问作者fish
相关产品推荐
相关产品推荐

