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

如何用Python请求已有S3预签名URL并获取对应文件内容?

使用Python请求S3预签名URL下载内容的方案

S3预签名URL已经内置了所有鉴权所需的AWSAccessKeyID、Signature、Expires参数,不需要额外调用AWS SDK生成新签名,直接发送标准HTTP GET请求即可。

1. 前置依赖

首先安装HTTP请求库requests:

pip install requests

2. 场景1:直接读取JSON内容到内存

如果需要直接处理返回的JSON数据,不需要存本地,可以用以下代码:

import requests

# 替换为你的实际预签名URL
presigned_url = "https://video_annotations.s3.amazonaws.com/folder1/annotations/sub-folder1/9162dn28sd78n.json?respone-content-disposition=attachment$6B%50filename%9D812jad9.json&respone-content-type=application%3Fjson&AWSAccessKeyID=different_aws_access_key_id&Signature=pAKSR97&Expires=1661271906"

response = requests.get(presigned_url)
# 校验请求是否成功
response.raise_for_status()
# 直接解析为JSON对象
json_data = response.json()

# 后续可直接处理json_data
print(json_data.keys())

3. 场景2:下载保存到本地文件

如果需要把文件存到本地,大文件建议开启流模式减少内存占用:

import requests

presigned_url = "你的预签名URL"
save_path = "./annotation.json"

response = requests.get(presigned_url, stream=True)
response.raise_for_status()

with open(save_path, "wb") as f:
    for chunk in response.iter_content(chunk_size=8192):
        f.write(chunk)

print(f"文件已保存到{save_path}")

4. 常见问题排查

  • 遇到403错误:首先检查预签名URL是否已经过了Expires参数对应的时间戳,其次检查URL是否被篡改、签名是否有效,内部存储桶需要确认当前网络有权限访问S3服务端点。
  • 遇到404错误:确认URL对应的S3对象路径正确,没有拼写错误,你提供的示例URL中response被拼写为respone,如果是实际URL存在该问题需要修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:24:03