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

使用Python Boto3生成的Cloudflare R2大文件预签名URL无法访问

Cloudflare R2 大文件(>1GB)预签名URL访问拒绝问题解决

问题原因

Cloudflare R2对超过1GB的存储对象,强制要求使用Range分段请求进行下载,而默认通过get_object生成的预签名URL未授权Range请求;若客户端使用AWS Signature Version 2签名,也会触发大文件访问被拒绝的问题。

解决步骤

  1. 强制使用AWS Signature Version 4创建R2客户端
    初始化boto3客户端时显式指定签名版本,确保兼容R2大文件下载要求:
import boto3
from botocore.config import Config

s3 = boto3.client(
    's3',
    endpoint_url='https://<你的账号ID>.r2.cloudflarestorage.com',
    aws_access_key_id='<你的访问密钥>',
    aws_secret_access_key='<你的密钥密码>',
    config=Config(signature_version='s3v4')
)
  1. 生成支持Range请求的预签名URL
    修改预签名URL生成逻辑,构造允许分段请求的签名链接:
# 构造get_object请求并生成预签名URL
request = s3.generate_presigned_request(
    'get_object',
    Params={
        'Bucket': bucketName,
        'Key': File_key,
        'ResponseContentDisposition': 'attachment'
    },
    ExpiresIn=3600*8
)

# 追加参数以支持任意Range请求
temp_link = request['url'] + '&x-amz-content-sha256=UNSIGNED-PAYLOAD'

验证说明

修改后,下载大文件时客户端会自动发起Range分段请求,R2将正常返回对应分段数据,不再触发访问拒绝错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:07:12