【问题标题】:Copy objects between buckets using aws sdk使用 aws sdk 在存储桶之间复制对象
【发布时间】:2021-01-20 02:22:46
【问题描述】:

使用 AWS CLI;我们可以直接从一个存储桶复制或同步文件到另一个存储桶。使用 SDK;我可以看到用于下载和上传的 api。但是我们可以使用 sdk 直接将文件从一个存储桶复制到另一个存储桶(在不同的 aws 帐户中)吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    是的。 CopyObject API 调用可以在 Amazon S3 存储桶之间复制一个对象,包括不同区域和不同账户的存储桶。

    要在账户之间复制对象,一组凭据需要足够的权限才能从源存储桶读取并写入目标存储桶。您可以:

    • 使用来自目标帐户的凭据,并使用源存储桶上的存储桶策略授予读取权限,
    • 使用来自源帐户的凭据,并使用目标存储桶上的存储桶策略授予写入权限。确保将ACL=public-read 设置为将对象的所有权传递给目标帐户。

    请注意,它一次只复制一个对象,因此如果您希望复制多个对象,则需要遍历对象列表并为每个对象单独调用CopyObject

    【讨论】:

    • 谢谢约翰...这很有帮助;我不知道这个。这些是 REST API。我们有任何机会在 Go 中有任何 SDK!
    【解决方案2】:

    很简单,在帮助下查看所有 CLI 命令:

    aws s3 --help

    上传文件:

    aws s3 cp <path-to-file-from-local> s3://<S3_BUCKET_NAME>/<file-name> 
    

    下载文件:

    aws s3 cp s3://<S3_BUCKET_NAME>/<file-name> <path-to-file-from-local> 
    

    移动文件:

    aws s3 mv s3://<S3_BUCKET_NAME>/<file-name> s3://<S3_BUCKET_NAME>/<file-name>
    

    您可以使用.来指定当前目录,例如:

    aws s3 cp s3://MyBucket/Test.txt .
    

    【讨论】:

    • 正如我在问题中提到的,我使用 CLI 知道这一点。
    • @DeepakSinghal - 抱歉,我刚刚阅读使用 AWS CLI;我们可以直接将文件从一个存储桶复制或同步到另一个存储桶。 并立即开始输入。马克约翰的答案是否正确。
    • 非常感谢 :) 无论如何感谢您的宝贵时间
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2017-03-17
    • 1970-01-01
    • 2021-07-03
    • 2012-02-14
    相关资源
    最近更新 更多