由于身份验证,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://mybucket
在 GCE 或 EC2 虚拟机中失败。
错误是The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
。
我使用 gsutil 版本:4.28
和 GCS 和 S3 存储桶的位置分别是 US-CENTRAL1
和 US East (Ohio)
- 以防万一。 p>
我一无所知,因为 AWS 密钥有效并且我启用了 http/https。从 GCS 下载并使用我笔记本电脑的 Cyberduck 上传到 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中对独立 gsutil 进行身份验证