直接从S3复制到Google云端存储

时间:2014-01-29 17:05:38

标签: google-cloud-storage

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

3 个答案:

答案 0 :(得分:22)

gsutil命令行工具支持S3。运行configure命令后,您将在〜/ .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

答案 1 :(得分:5)

使用Google云端存储transfer tool

Google Cloud Storage Transfer Tool

答案 2 :(得分:1)

jterrace(aws密钥和.boto文件中的秘密)建议的答案是正确的,对我来说适用于许多地区,但不适用于仅需要AWS签名版本4的某些地区。例如,当连接到'孟买'地区时我得到了这个错误:

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

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

<强> [S3]
host = s3.ap-south-1.amazonaws.com
use-sigv4 = True

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