You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用S3 Sync下载AWS合并账单报告时遭遇Access Denied错误求助

解决AWS合并账单S3 Sync跨账户访问被拒绝的问题

我来帮你排查这个S3 Sync的访问拒绝问题——你提到能成功列出桶内文件但下载每个文件都报错,这种场景在跨账户访问AWS合并账单桶时非常常见,核心问题通常出在IAM权限与桶策略的组合授权逻辑上,下面一步步拆解:

1. 确认IAM用户的权限覆盖范围

你已经拥有s3:ListBucket权限(否则无法列出文件),但下载文件必须同时具备s3:GetObject权限,而且要注意权限的资源路径:

  • 只给桶级别的资源(arn:aws:s3:::your-billing-bucket)只能操作桶本身(比如列表),无法访问桶内的具体对象
  • 必须添加对象级别的资源路径arn:aws:s3:::your-billing-bucket/*才能获取文件

你的IAM用户策略应该类似这样:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::your-billing-bucket"
    },
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-billing-bucket/*"
    }
  ]
}

2. 检查桶策略的跨账户授权逻辑

AWS的权限是IAM策略 + 桶策略的逻辑与,两者都允许才能生效。你当前的桶策略可能只授权了列表权限,没有覆盖对象的读取权限,需要明确给跨账户IAM用户添加s3:GetObject权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789:user/IAMUser"
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::your-billing-bucket",
        "arn:aws:s3:::your-billing-bucket/*"
      ]
    }
  ]
}

特别注意:合并账单桶内的文件默认属于AWS账单账户的根用户,ACL通常是私有,所以必须通过桶策略授予跨账户用户访问权限,仅靠IAM用户权限是不够的。

3. 单独测试单个文件下载定位问题

如果还是报错,建议先用s3api命令单独测试一个文件的下载,获取更精确的错误信息:

aws s3api get-object --bucket your-billing-bucket --key 2024-01/aws-billing-report.csv test-download.csv

这个命令会返回更具体的拒绝原因,比如是IAM权限缺失还是桶策略限制,帮你快速定位问题。

关于上传文件的补充(针对你提到的场景)

如果上传文件也遇到访问拒绝,需要在IAM策略和桶策略中同时添加s3:PutObject权限,资源路径同样要覆盖your-billing-bucket/*,确保权限覆盖到上传的对象。

内容的提问来源于stack exchange,提问作者Culture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:07:28