如何使用 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,如上所示,因为其中包含与号 (&
) 字符,并且许多操作系统和 shell 以特殊方式处理这些字符(通常为 start in background)。
【讨论】:
【参考方案2】:正如 @jarmod 提到的,一旦你有一个可访问的 URL,你应该能够使用像 wget
或 curl
这样的工具从 GCS 下载一个对象,然后将它上传到亚马逊 S3。
但是,GCP 也提供了其他 ways 来实现这一目标。例如,您可以通过运行gsutil cp
或gsutil rsync
来使用gsutil 工具与Amazon S3 进行交互。为此,您需要将您的 Amazon S3 凭证添加到 gsutil 的 .boto 配置文件中。
【讨论】:
以上是关于如何使用 gsutil 通过 http 链接从谷歌云存储下载到 AWS 实例或 s3 存储桶?的主要内容,如果未能解决你的问题,请参考以下文章