首页 > 解决方案 > 如何生成 URL 以从 S3 存储桶下载文件

问题描述

我想从亚马逊的哥白尼数字高程模型存储桶中获取指向云优化 geoTIFF 的 URL。

安装boto3(使用pip3 install boto3)后,我依赖于这个问题的答案Can I use boto3 anonymous? 下载单个文件:

import boto3
from botocore import UNSIGNED
from botocore.client import Config

s3 = boto3.client('s3', region_name='eu-central-1', config=Config(signature_version=UNSIGNED))

然后我查询存储桶中的对象列表,使用此问题答案的第二行Use boto3 to download from public bucket

objects = s3.list_objects(Bucket='copernicus-dem-30m')

然后我访问 中的一个值objects['Contents'],例如第一个值(即 index 0):

key = objects['Contents'][0]['Key']

key就是现在:

Copernicus_DSM_COG_10_N00_00_E006_00_DEM/Copernicus_DSM_COG_10_N00_00_E006_00_DEM.tif

我通过以下方式下载此文件:

s3.download_file('copernicus-dem-30m', key, key.split('/')[-1])

除了下载之外,我如何生成一个 URL,稍后我可以使用它来下载文件,也许使用wget或只是将其粘贴到浏览器?


上面显示的代码基于线程:如何使用 Python 获取边界框的 Copernicus DEM GeoTIFFs

标签: pythonamazon-web-servicesamazon-s3

解决方案


S3 使用这种格式:https://<bucket-name>.s3.amazonaws.com/<key>

url = 'https://copernicus-dem-30m.s3.amazonaws.com/' + key

所以上面的例子看起来像这样: https ://copernicus-dem-30m.s3.amazonaws.com/Copernicus_DSM_COG_10_N00_00_E006_00_DEM/Copernicus_DSM_COG_10_N00_00_E006_00_DEM.tif


推荐阅读