【问题标题】:gsutil cannot copy to s3 due to authentication由于身份验证,gsutil 无法复制到 s3
【发布时间】: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)

【问题讨论】:

    标签: amazon-s3 google-cloud-storage gsutil


    【解决方案1】:

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

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

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

    希望对你有帮助

    【讨论】:

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

    根据https://issuetracker.google.com/issues/62161892gsutil 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 感谢您的提示!答案和问题跟踪器已更新。
    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 2015-04-11
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多