由于身份验证,gsutil 无法复制到 s3

Posted

技术标签:

【中文标题】由于身份验证,gsutil 无法复制到 s3【英文标题】:gsutil cannot copy to s3 due to authentication 【发布时间】:2018-06-04 10:13:44 【问题描述】:

我需要将许多(1000 多个)文件从 GCS 复制到 s3 以利用 AWS lambda 函数。我已编辑 ~/.boto.cfg 并注释掉了 2 个 aws 身份验证参数,但一个简单的 gsutil ls s3://mybucketGCEEC2 虚拟机中失败。

错误是The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.

我使用 gsutil 版本:4.28GCSS3 存储桶的位置分别是 US-CENTRAL1US East (Ohio) - 以防万一。 p>

我一无所知,因为 AWS 密钥有效并且我启用了 http/https。从 GCS 下载并使用我笔记本电脑的 Cyber​​duck 上传到 S3 是不切实际的 (>230Gb)

【问题讨论】:

【参考方案1】:

我遇到了类似的问题。这是我最终在 GCE 机器上所做的:

第 1 步:使用 gsutil,我将文件从 GCS 复制到 GCE 硬盘 第 2 步:使用 aws cli (aws s3 cp ...),我将文件从 GCE 硬盘复制到 s3 存储桶

上述方法对我来说很可靠。我尝试使用 gsutil rsync 但它意外失败。

希望对你有帮助

【讨论】:

谢谢 - 最终这样做是为了一次性转移,但我需要反过来做同样的事情才能加载到 BigQuery + 最终这将每天发生。在本地复制是一种解决方法,但仍然认为 gsutil 存在问题【参考方案2】:

根据https://issuetracker.google.com/issues/62161892,gsutil v4.28 确实支持AWS v4 签名,方法是向~/.boto 添加新的[s3] 部分,例如

[s3]
# Note that we specify region as part of the host, as mentioned in the AWS docs:
# http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
host = s3.eu-east-2.amazonaws.com
use-sigv4 = True

该部分的使用继承自boto3,但当前不是由gsutil config 创建的,因此需要为目标端点显式添加。

对于 s3-to-GCS,我会考虑更无服务器的Storage Transfer Service API。

【讨论】:

gsutil 从 4.28 版开始支持此功能 - 您链接的问题直到现在才更新,抱歉:) 请考虑更改您的答案以反映这一点。 @mhouglum 感谢您的提示!答案和问题跟踪器已更新。

以上是关于由于身份验证,gsutil 无法复制到 s3的主要内容,如果未能解决你的问题,请参考以下文章

从 GSUtil 对谷歌云存储的身份验证

身份验证后无法访问匿名上传的 S3 对象

Boto 无法使用 S3 IAM 角色进行身份验证

无法使用密钥身份验证 ssh 到服务器

使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中对独立 gsutil 进行身份验证

gsutil 从 s3 匿名复制?