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

因SSE致访问被拒,如何修改Boto3代码添加ServerSideEncryption='AES256'

解决Boto3 SSE加密导致的访问被拒问题

我来帮你搞定这个SSE加密的问题!你的访问被拒大概率是因为上传对象时没有满足目标S3桶的服务器端加密要求,或者下载的加密对象请求配置不对。下面是修改后的完整代码,我会详细说明改动点:

def download(self):
    s3 = boto3.client('s3')
    try:
        with open(self.flow_cells +'.zip', 'wb') as data:
            # 下载加密对象时Boto3会自动处理解密,无需额外参数(只要权限足够)
            s3.download_fileobj(self.source_s3_bucket, self.source_key, data)
        return True
    except botocore.exceptions.ClientError as error:
        print(error.response['Error']['Code'])

def upload(self):
    s3 = boto3.client('s3')
    try:
        with open(self.flow_cells +'.zip', 'rb') as data:
            # 添加SSE加密配置,指定使用AES256加密存储对象
            s3.upload_fileobj(
                data, 
                self.output_s3_bucket, 
                self.flow_cells +'.zip',
                ExtraArgs={'ServerSideEncryption': 'AES256'}
            )
        return True
    except botocore.exceptions.ClientError as error:
        print(error.response['Error']['Code'])

关键改动说明:

  • 上传方法(upload):在upload_fileobj调用中新增了ExtraArgs参数,明确指定ServerSideEncryption='AES256'。这会强制S3在存储你上传的对象时使用AES-256服务器端加密,完全符合SSE的要求,这也是解决上传时访问被拒的核心修改。
  • 下载方法(download):通常不需要额外配置,因为当目标对象是SSE加密时,Boto3会自动处理解密流程(前提是你的IAM账号拥有s3:GetObject权限)。如果下载仍然报错,建议检查你的IAM权限是否包含读取加密对象的相关权限(比如s3:GetObjectVersion如果是版本化桶)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:51:16