我需要将许多(1000+)个文件从GCS复制到s3以利用AWS lambda函数。我已对~/.boto.cfg
进行了编辑,并注释了2 aws身份验证参数,但是 GCE 或 EC2 VM中的简单gsutil ls s3://mybucket
失败。
错误是The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
。
我使用gsutil版本:4.28
, GCS 和 S3 存储区的位置分别为US-CENTRAL1
和US East (Ohio)
- 以防万一这是相关的。
由于AWS密钥有效且我启用了http / https,因此我很无能为力。从GCS下载并使用我的笔记本电脑的Cyberduck上传到S3是不切实际的(> 230Gb)
答案 0 :(得分:8)
根据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到GCS,我会考虑更少服务器Storage Transfer Service
API。
答案 1 :(得分:0)
我有类似的问题。这是我最终在GCE机器上做的事情:
步骤1:使用gsutil,我将文件从GCS复制到我的GCE硬盘 第2步:使用aws cli(aws s3 cp ...),我将文件从GCE硬盘复制到s3存储桶
上述方法对我来说可靠。我尝试使用gsutil rsync但它意外失败。
希望这有帮助