mofcloud

输入关键词开始搜索文章、分类或标签

用代理商开的 AWS 账号,怎么做成本分析?

通过代理商开的 AWS 想做成本分析?其实多数情况你能自己建账单导出(CUR)直接接进来;只有被代理商用 SCP 限制时,才需要他配合给 key 或开 S3。这篇给出自测方法、两种情况的完整接法和最小 IAM 权限。

用代理商开的 AWS 账号,怎么做成本分析?
MofCloud MofCloud
22 Aug, 2026 · 22 分钟阅读

很多公司的 AWS 不是自己直接开的,而是找代理商开的——付款、开票、支持都走代理商,方便。但等你想做成本分析,第一反应往往是:账单在代理商手里,我读得到吗?

好消息:多数情况下你自己就能搞定,不用求代理商。这篇讲清楚怎么判断你属于哪种情况,以及每种情况下怎么用最小权限把账单接进成本工具(以 MOF 为例)。

先看结论

  • 多数情况,你自己就能把账单接进来:在你自己账号里建一个 CUR 导出,MOF 直接自动读,不用求代理商(情况 A)。
  • 只有代理商限制了你(不让你自建导出)时,才需要他配合:把导出投递到你的桶,或给你一把只读 key、开个 S3(情况 B)。
  • 怎么判断走哪条?先花一分钟自测能不能自建 —— 下面手把手。

先搞清楚:代理商是怎么把你挂进来的?

你自己开的 AWS 既是 payer 又是 management,随手就能导账单。代理商场景里你是成员账号——但 AWS 官方文档说得明白:组织里的成员账号,默认也能给自己建 CUR 导出(只含自己账号的用量)。能不能自己动手,取决于代理商用哪种模式把你挂进来——今天都走 AWS Organizations,但分两档,区别正好卡在能不能用 SCP(服务控制策略)上:

模式代理商能治理 / 限制你吗你能自建导出吗怎么接
合并账单型
(挂 payer / Consolidated billing only)
不能,只合并账单付款
(这模式 AWS 不支持 SCP)
一定能直接走情况 A
完整组织型
(ORG / Organizations all features)
能,可能用 SCP 禁你自建默认能,除非被 SCP 禁 → 先自测能建→A,被挡→B

怎么知道自己是哪种?最直接是问代理商;嫌麻烦就跳过判断,直接按下一节「自测」试一下——能建就是能建,不用纠结档位。

所以卡住你的从来不是”代理商”这个身份,而是代理商这个模式下有没有专门限制你

三条要记住的 AWS 规则

把接法讲清楚前,先记住三条(已按官方文档确认):

  • 你能自建导出,但只能导到自己的桶。 成员账号默认能建 CUR / Data Export;AWS 要求导出的目的地 S3 桶,必须是建这个导出的账号自己拥有的(AWS 文档)。
  • 导出定义不能跨账号读。ListExports / GetExport 读出别的账号里的导出定义,做不到(没有资源策略,也不在 AWS RAM 可共享列表里)。所以你读不到代理商账号里那个导出的定义。
  • CUR 2.0 的 Data Exports 能跨账号投递输出(2026-03 起支持)。代理商可以把 CUR 2.0 导出的输出文件直接写进你的桶——注意是”投递输出”,不是”共享定义”。Legacy CUR 不支持跨账号投递。

先自测:你能不能自建导出?

你自己账号账单与成本管理(Billing and Cost Management)→ 数据导出(Data Exports),试着点「创建」。

  • 能进到创建流程 → 情况 A(下一节),自己建就行。
  • 提示被 SCP 拒绝 / 没有权限 → 情况 B,往下翻到「情况 B」。

情况 A:自己建导出(最省事)

不碰代理商,全程在你自己账号里:

  1. 打开 账单与成本管理 → 数据导出 → 创建(AWS 建导出指引);
  2. 类型选 标准数据导出(CUR 2.0)FOCUS 1.0;
  3. 目的地选一个你自己账号里的 S3 桶(没有就新建,AWS 会自动补上写入用的桶策略);
  4. 建完,AWS 每天把账单写进这个桶。

在 MOF 里: 添加 AWS 账号 → 「数据源接入方式」保持默认的选择数据源 → 填你自己账号的 accessKey / secretKey → MOF 列出你账号里的导出,勾选保存即可。

MOF 添加 AWS 账号:数据源接入方式,默认「选择数据源」

「数据源接入方式」有三种:选择数据源、手动填写 Export ARN、S3 存储桶。情况 A 用默认的「选择数据源」。

MOF 列出账号里的数据源,勾选一个

MOF 列出你账号里的 CUR 导出(CUR 2.0 / FOCUS / Legacy),勾选一个保存即可。

这条对大多数人就够了。只有当你在上一步自测里被 SCP 挡住,才需要往下看情况 B。

情况 B:被 SCP 挡了,让代理商配合

如果你不能自建,就得代理商出手。按”他肯给你多少”由优到兜底,有三种:

B-1:让代理商把导出投递到你的桶(最优,2026-03 起)

代理商在他账号里建 CUR 2.0 导出,把目的地 S3 设成你的桶。文件落在你自己的桶里,你读自己的桶就行,连跨账号读都省了。

  • 代理商侧:建导出时,目的地填你的桶(桶所有者填你的账号 ID + 桶名);
  • 你这侧:给你自己的桶加下面这条 bucket policy,放行 AWS Data Exports 服务写入。⚠️ 注意 SourceArn / SourceAccount 里填的是建导出那个账号——也就是代理商的账号 ID,不是你自己的:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnableAWSDataExportsToWriteToS3",
            "Effect": "Allow",
            "Principal": { "Service": ["bcm-data-exports.amazonaws.com"] },
            "Action": ["s3:PutObject"],
            "Resource": "arn:aws:s3:::<你的桶>/*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:bcm-data-exports:us-east-1:<代理商账号ID>:export/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "<代理商账号ID>"
                }
            }
        }
    ]
}

这是 AWS 官方样板——只授权 s3:PutObject(给写,不给读、删);建完别再改这条桶策略或换桶主,否则投递会失败。中国区把 aws 换成 aws-cnus-east-1 换成 cn-northwest-1

  • 好处附赠:文件落你自己桶里,那几个值(name / prefix)你自己翻桶就能看到

在 MOF 里: 走下面 B-3 一样的 S3 存储桶 直读,只是桶换成你自己的。

MOF S3 存储桶直读的六字段表单

和 B-3 一样选「S3 存储桶」填六个值,只是「S3 存储桶」填你自己的桶。

B-2:代理商给一把缩权 key(手输 Export ARN)

适合代理商愿意在自己账号里发一把权限很小的 key:只能读一个指定的导出定义,加上对应的 S3 前缀。

注:B-2 只适用于 Standard data export(CUR 2.0 / FOCUS)——它才有 ARN。老版 Legacy CUR 没有 ARN(用 report 名标识),请走 B-3。

让代理商这样配(在代理商账号里建 IAM 用户/角色,附下面这段策略):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "GetExportDef",
      "Effect": "Allow",
      "Action": "bcm-data-exports:GetExport",
      "Resource": "arn:aws:bcm-data-exports:us-east-1:<代理商账号ID>:export/<EXPORT_ID>"
    },
    {
      "Sid": "ListCurFiles",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::<账单桶>",
      "Condition": { "StringLike": { "s3:prefix": "<你的前缀>/*" } }
    },
    {
      "Sid": "GetCurFiles",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<账单桶>/<你的前缀>/*"
    }
  ]
}

代理商把 key、Export ARN、region 给你。这把 key 只有 GetExport、没有 ListExports——正好够用,列不出别人的导出;s3:ListBucket 也用 s3:prefix 条件锁死在你的前缀,读不到桶里别家的目录。

在 MOF 里: 添加 AWS 账号 → 「数据源接入方式」→ 手动填写 Export ARN → 粘贴 Export ARN,点「验证并使用」,MOF 会回显解析出的桶名、表类型、格式——对得上再保存。

MOF 手动填写 Export ARN,验证后回显解析结果

选「手动填写 Export ARN」,粘贴 ARN 点「验证并使用」,MOF 回显解析出的 Name / 类型 / 表。

B-3:代理商只开 S3(直读)

代理商连 CUR/Export 的 API 权限都不给,只把账单文件所在的 S3 开给你。多个成员账号的账单落在同一个桶、只开桶权限的情况,答案也是这条。B-1(投递到你自己的桶)在 MOF 里也是走这条,只是桶是你自己的。

代理商开 S3 有两种开法,二选一:

① 给桶加一条策略,放行你的账号(你用自己的 key 读):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCustomerList",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::<你的账号ID>:root" },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::<账单桶>",
      "Condition": { "StringLike": { "s3:prefix": "<你的前缀>/*" } }
    },
    {
      "Sid": "AllowCustomerGet",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::<你的账号ID>:root" },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<账单桶>/<你的前缀>/*"
    }
  ]
}

⚠️ 走 ① 这种桶策略,是两边都要放行:桶策略(上面,资源侧)+ 你自己账号里那把 key 的 IAM 也要允许 s3:GetObject / s3:ListBucket 访问这个外部桶。用管理员级 key 一般没问题;用缩权 key 记得把这两个 S3 权限也加上,否则会读不到还找不到原因。

② 或者在代理商账号里发一把只读 S3 的 key(策略就是 B-2 里的 ListCurFiles + GetCurFiles 两段,去掉 GetExport)。这条是单边授权,不用管你自己账号的 IAM,更省心——嫌 ① 麻烦就用 ②。

无论哪种,代理商还得告诉你这几个值(你看不到导出定义,只能问,或按下一节自己翻桶):

  • bucket(桶名)
  • prefix(你这个账号的前缀,通常一个子账号一个)
  • name(导出名——它是 S3 路径里的一段,必须精确)
  • region
  • 表类型:CUR 2.0FOCUS
  • 格式:ParquetCSV(gzip)

在 MOF 里: 添加 AWS 账号 → 「数据源接入方式」→ S3 存储桶 → 把上面几个值填进去(S3 存储桶 / 前缀 / Export 名称 / 区域 / 数据表类型 / 文件格式)。当前支持 CUR 2.0 和 FOCUS,Parquet 和 CSV(gzip)都行。

MOF S3 存储桶直读的六字段表单

选「S3 存储桶」,填 S3 存储桶 / 前缀 / Export 名称 / 区域 / 数据表类型 / 文件格式。

怎么在 AWS 里拿到这些值

B-2 的 Export ARN 和 B-3 的 S3 六个值,最省事的方式是让代理商在他账号里用 CLI 跑一下,把结果发给你(控制台的 Data Export 详情页其实不显示 ARN,得靠命令)。如果是 B-1(投递到你自己的桶),这些命令你自己在自己账号跑就行。

① 拿 Export ARN(B-2 要用):

aws bcm-data-exports list-exports --region us-east-1 \
  --query "Exports[].[ExportName,ExportArn]" --output table

② 一次拿全 S3 六个值(B-3 要用):

# Standard export(CUR 2.0 / FOCUS)
aws bcm-data-exports get-export --region us-east-1 --export-arn "<上一步的 ARN>" \
  --query "Export.{Name:Name,Bucket:DestinationConfigurations.S3Destination.S3Bucket,Prefix:DestinationConfigurations.S3Destination.S3Prefix,Region:DestinationConfigurations.S3Destination.S3Region,Format:DestinationConfigurations.S3Destination.S3OutputConfigurations.Format,Table:keys(DataQuery.TableConfigurations)}"

# 老版 Legacy CUR
aws cur describe-report-definitions --region us-east-1 \
  --query "ReportDefinitions[].{Name:ReportName,Bucket:S3Bucket,Prefix:S3Prefix,Region:S3Region,Format:Format}" --output table

输出字段直接对应表单:Bucket→桶名Prefix→前缀Name→Export 名称Region→regionTable(COST_AND_USAGE_REPORT→CUR 2.0FOCUS_1_0_AWS→FOCUS)、Format(PARQUET→ParquetTEXT_OR_CSV→CSV)。

没有 CLI 也能对:到桶里找这个路径,能找到 Manifest 就说明值填对了—— <prefix>/<name>/metadata/BILLING_PERIOD=YYYY-MM/<name>-Manifest.json(FOCUS 把 BILLING_PERIOD 换成小写 billing_period)。

一段可以直接转给代理商的话(仅情况 B 需要)

我要接一个成本分析工具,读我这个账号的 AWS 账单。三种方式任选(由简到繁):

  1. 最省事:把我账号的 CUR 2.0 导出投递到我的 S3 桶(2026-03 起支持跨账号投递),我自己读;
  2. 或在你账号里给我一把 IAM key,权限缩到 bcm-data-exports:GetExport(我这个导出)+ 对应 S3 前缀的只读,把 key、Export ARN、region 给我;
  3. 或把账单所在的 S3 开给我读(给我账号加 bucket policy,或发一把只读 S3 的 key),并告诉我:桶名、我的前缀、导出名、region、表类型(CUR 2.0 / FOCUS)、格式(Parquet / CSV)。

第 2、3 种的这几个值,你在 CloudShell 跑一条 aws bcm-data-exports get-export --export-arn <ARN> 就能一次导出发我。

接进来之后

账单进入 MOF 后,会按 line_item_usage_account_id 自动拆分到各个子账号——所以哪怕一个桶里落了十几个成员账号的账单,你也能在一个视图里,按账号、按服务把成本看清楚。这也是代理商多子账号场景真正想要的:不用一个个账号手动折腾,一处看全。

一个小提醒:确保给你的导出 / 前缀里只含你自己的账号。如果给的是代理商的全量 CUR(混着其他客户),这些数据也会一并读进来——所以最好单独导一份,或用一个只放你账号的前缀。

常见问题

我不是 payer,能自己建导出吗? 多数情况能。成员账号默认可以给自己建 CUR / Data Export(只含自己账号的用量),除非代理商用 SCP 专门禁掉。先到「账单与成本管理 → 数据导出」试建一下就知道。

建导出时提示没权限怎么办? 说明代理商用 SCP 限制了成员账号自建。走情况 B:让代理商投递到你的桶,或给你缩权 key / 开 S3。

代理商只肯给 S3,行不行? 行,走 B-3(S3 直读)。只要能读到桶里的账单文件,不需要任何 CUR/Export 的 API 权限。

支持哪些账单格式? 当前支持 CUR 2.0FOCUS,Parquet 和 CSV(gzip)都行。建议用 CUR 2.0 或 FOCUS 导出;跨账号投递到你的桶也只对 CUR 2.0 有效。

AWS 中国区(宁夏 / 北京)有什么不同? 机制一样,只是 ARN 的 partition 和 region 要换:把示例里的 aws 换成 aws-cnus-east-1 换成 cn-northwest-1(CLI 的 --region 同理)。


内容截至 2026 年 8 月。AWS 的 Data Exports / CUR 配置与权限可能随时间调整,请以 AWS 官方文档和你的实际环境为准。

推荐阅读

国内外多云成本,一处管清

看板现在就能用;云架构师 Agent 即将开放,加入等候名单抢先体验。

免费试用看板 · 看板 Demo