如何使用 gsutil 通过 http 链接从谷歌云存储下载到 AWS 实例或 s3 存储桶?

Posted

技术标签:

【中文标题】如何使用 gsutil 通过 http 链接从谷歌云存储下载到 AWS 实例或 s3 存储桶?【英文标题】:How to use gsutil to download from google cloud storage to AWS instance or s3 bucket with a http link? 【发布时间】:2021-02-02 21:21:30 【问题描述】:

我有一个谷歌云存储下载 http 链接,我想直接将文件下载到 AWS 实例或 s3 存储桶。我尝试过 gsutil cp 或 rsync,但它们不支持将凭据作为参数发送。 这是链接。

https://storage.googleapis.com/<FILE PATH>?x-goog-signature=<SIGNATURE>&x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=<CREDENTIAL>goog4_request&x-goog-date=<DATE>Z&x-goog-expires=<EXPIRES>&x-goog-signedheaders=host

【问题讨论】:

这看起来像是一个签名的 URL。您不必提供任何凭据或使用 gsutil 或 rsync。只需使用 curl 或 wget。例如:wget -O filename.zip "thesignedurl" @jarmod 谢谢。我之前尝试过 wget 但它没有用。我想我没有使用双引号“”。 嘿@LionLai,你成功了吗? 是的,在 URL 周围添加双引号 "" 后,它可以工作。 【参考方案1】:

如果您手头有一个签名的 URL(看起来是这样),那么您不需要提供任何凭据(签名的 URL 包含所需的所有内容)并且您不需要使用 gsutil 或 rsync。

您可以使用 HTTP 客户端,例如 curl 或 wget。例如:

wget -O filename.zip "https://the-signed-url-here"

请务必引用已签名的 URL,如上所示,因为其中包含与号 (&amp;) 字符,并且许多操作系统和 shell 以特殊方式处理这些字符(通常为 start in background)。

【讨论】:

【参考方案2】:

正如 @jarmod 提到的,一旦你有一个可访问的 URL,你应该能够使用像 wgetcurl 这样的工具从 GCS 下载一个对象,然后将它上传到亚马逊 S3。

但是,GCP 也提供了其他 ways 来实现这一目标。例如,您可以通过运行gsutil cpgsutil rsync 来使用gsutil 工具与Amazon S3 进行交互。为此,您需要将您的 Amazon S3 凭证添加到 gsutil 的 .boto 配置文件中。

【讨论】:

以上是关于如何使用 gsutil 通过 http 链接从谷歌云存储下载到 AWS 实例或 s3 存储桶?的主要内容,如果未能解决你的问题,请参考以下文章

将数据从谷歌数据存储复制到 CSV

如何从谷歌分析中获取我的特定链接详细信息

使用 gsutil 下载

如何使用 JS Regex 从谷歌查询链接获取查询值? (Chrome 扩展)

如何通过输入城市/城镇名称从谷歌地图获取餐厅列表?

如何从谷歌地图路线中提取路线 GPX?