【问题标题】:Copying directly from S3 to Google Cloud Storage直接从 S3 复制到 Google Cloud Storage
【发布时间】:2014-02-21 15:37:10
【问题描述】:

我可以使用 AWS SDK for Java 和 Azure SDK for Java 将数据从 Amazon AWS S3 迁移到 Azure。现在我想使用 Java 将数据从 Amazon AWS S3 迁移到 Google Cloud 存储。

【问题讨论】:

    标签: google-cloud-storage


    【解决方案1】:

    gsutil 命令行工具支持 S3。在你 configured gsutil 之后,你会在你的 ~/.boto 文件中看到这个:

    # To add aws credentials ("s3://" URIs), edit and uncomment the
    # following two lines:
    #aws_access_key_id = 
    #aws_secret_access_key = 
    

    使用您的 S3 凭据填写 aws_access_key_idaws_secret_access_key 设置并取消注释变量。

    设置完成后,从 S3 复制到 GCS 非常简单:

    gsutil cp -R s3://bucketname gs://bucketname
    

    如果您有很多对象,请使用-m 标志运行以与多个线程并行执行复制:

    gsutil -m cp -R s3://bucketname gs://bucketname
    

    【讨论】:

    • 在将文件从本地复制到 S3 时如何在 gstuil 中使用基于配置文件的操作?
    • rsync 命令不是更适合这个用例吗?如果它真的是一次性迁移,那将是相同的,但如果它需要多次或持续进行,rysnc 将节省大量迁移。 cloud.google.com/storage/docs/interoperability
    • 请注意,我相信此答案中提到的“配置命令”(创建.boto 文件)是gcloud init。我对自己的知识不太自信,所以我不会编辑答案,但我想把它放在那里。
    • @Stephen 抱歉,自 2014 年我最初写答案以来发生了很多变化。我编辑了答案以使其现在更清楚。
    【解决方案2】:

    使用谷歌云存储transfer tool

    【讨论】:

    • 不幸的是,没有gsutil transfer 可以从命令行执行此操作。传输工具很好,但仅限网络,因此无法编写脚本。或者有人知道如何以编程方式处理传输工具?
    【解决方案3】:

    jterrace 建议的答案(.boto 文件中的 aws 密钥和秘密)是正确的,并且适用于许多区域,但不适用于仅需要 AWS 签名版本 4 的某些区域。例如,在连接到“孟买”区域时,我收到此错误:

    BadRequestException: 400 无效请求 不支持您提供的授权机制。请使用 AWS4-HMAC-SHA256

    为了克服这个问题(让 gsutil 使用 AWS Signature v4),我必须在 ~/.boto 文件中添加以下附加行。这些行在配置文件中创建了一个新部分 [s3]:

    [s3]
    主机 = s3.ap-south-1.amazonaws.com
    use-sigv4 = True

    参考:
    Interoperability support for AWS Signature Version 4
    Gsutil cannot copy to s3 due to authentication

    【讨论】:

      【解决方案4】:

      创建一个新的 .boto 文件

      [Credentials]
      aws_access_key_id = ACCESS_KEY_ID
      aws_secret_access_key = SECRET_ACCESS_KEY
      

      还有这个命令

      BOTO_CONFIG=.boto gsutil -m cp s3://bucket-name/filename gs://bucket-name
      

      或者这个

      BOTO_CONFIG=.boto gsutil -m cp gs://bucket-name/filename s3://bucket-name
      

      【讨论】:

        猜你喜欢
        • 2018-06-18
        • 2017-11-29
        • 2016-08-22
        • 2018-11-18
        • 2018-01-28
        • 2017-01-12
        • 2019-07-11
        • 2018-06-15
        • 2017-07-06
        相关资源
        最近更新 更多