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

S3访问被拒:桶所有者无法下载CloudFront上传的对象

解决方案:S3桶所有者无法下载CloudFront上传对象的问题

1. 强制让桶所有者访问所有对象的方法

有三种可行方式解决该问题:

  • 启用桶所有者强制控制(Bucket Owner Enforcement)
    在S3桶的权限设置中开启该选项,开启后所有上传至桶的对象,所有者会自动变为桶所有者,无论上传来源是谁。桶所有者默认拥有所有对象的完全权限,包括下载操作。

    注意:开启前需确认现有对象权限状态,开启后新上传对象自动归桶所有;对于已存在的对象,可通过批量修改ACL或aws s3 cp重新同步的方式获取所有权。

  • 修改桶策略,添加桶所有者权限
    在现有桶策略中新增允许桶所有者IAM用户的语句,可直接将IAM用户ARN加入Principal列表,或者单独添加允许桶账户访问的规则:

    {
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EY********",
                        "arn:aws:iam::你的AWS账户ID:user/你的IAM用户名"
                    ]
                },
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject",
                    "s3:ListMultipartUploadParts",
                    "s3:AbortMultipartUpload",
                    "s3:PutObjectAcl",
                    "s3:PutObjectVersionAcl"
                ],
                "Resource": "arn:aws:s3:::my-bucket/*"
            },
            {
                "Sid": "AllowBucketOwnerAccess",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::你的AWS账户ID:root"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::my-bucket/*"
            }
        ]
    }
    
  • 批量修改现有对象的ACL
    针对已存在的CloudFront上传对象,可通过AWS CLI命令批量修改ACL,让桶所有者获得完全控制权限:

    aws s3 cp s3://my-bucket/ s3://my-bucket/ --recursive --acl bucket-owner-full-control
    

    执行该命令后,桶所有者即可下载这些对象。

2. 关于赋予IAM用户CloudFront OAI权限的说明

CloudFront Origin Access Identity(OAI)是CloudFront服务专属身份,IAM用户无法直接"拥有"该OAI,但可通过以下方式获得同等访问权限:

  • 在桶策略中添加IAM用户ARN
    直接将IAM用户ARN加入现有桶策略的Principal列表(如上述第一个方案中的修改方式),即可让IAM用户拥有OAI的所有S3操作权限(GetObject、PutObject等)。
  • 为IAM用户附加S3权限策略
    在IAM控制台给目标用户添加权限策略,允许其访问目标S3桶的对象:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject"
                ],
                "Resource": "arn:aws:s3:::my-bucket/*"
            }
        ]
    }
    
    注意:若桶策略为"白名单"模式(仅允许指定Principal访问),必须同时在桶策略中添加IAM用户ARN,否则即使IAM用户自身有权限,桶策略仍会拒绝访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:10:15