python - 如何生成 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。
解决方案
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
推荐阅读
- javascript - SyntaxError:JSON 输入的意外结束↵ 在 http://localhost:3000/static/js/0.chunk.js:974:41
- function - 我们可以在 Azure 功能中使用 Microsoft.Office.Interop.excel.dll 吗?
- c# - 派生类中的 HttpContext 为空
- css - office-ui-fabric-react:loadTheme 更改全局 CSS?
- libgdx - 如何检测 libGDX 中两个演员之间的碰撞?
- visual-studio-code - 如何在 VS Code 中禁用 C++ 错误检查?
- c# - OpenID Connect AllowedRedirectUris 为空,导致 IdentityServer4 上出现“无效的 redirect_uri”
- angularjs - AngularJS 当前时间
- python - 无法安装 RPy2
- android - 为自定义标签设置的字体在 Android 8.0 中不起作用