如何将S3存储桶迁移到另一个帐户

时间:2014-06-16 14:57:40

标签: amazon-s3

我需要在另一个帐户上将数据从S3存储桶移动到另一个存储桶。 我可以通过运行来同步存储桶:

aws s3 sync s3://my_old_bucket s3://my_new_bucket --profile myprofile

myprofile 内容:

[profile myprofile]
aws_access_key_id = old_account_key_id
aws_secret_access_key = old_account_secret_access_key

我还在原点和目的地都制定了政策。 Origins允许列出和获取,目的地允许发布。

命令工作正常,我可以登录到其他帐户并查看文件。但我无法取得所有权或公开新的广告。我需要能够在旧帐户中进行更改。新帐户与新帐户完全无关。看起来文件保留了权限,它们仍归旧帐户所有。

如何设置权限以获得使用新帐户的文件的完全访问权限?

2 个答案:

答案 0 :(得分:1)

“看起来文件正在保留权限,但仍由旧帐户拥有。”

  

对象的上传者拥有它。

由于新存储桶由新帐户拥有,因此您可以更新存储桶ACL,以通过传递Grants选项来授予存储桶所有者对对象的完全控制权限。 1

<script>
//To validate the form
function validateForm() {
  var a = document.forms["Order"]["Fname"].value;
  var b = document.forms["Order"]["Lname"].value;
  var c = document.forms["Order"]["topic"].value;

  if (a == "" || b == "" || c == "") {
     alert("Everything must be filled out");
     return false;
  }  
 }
 </script>

您可以从AWS S3控制台查看存储区所有者的规范ID。 2

答案 1 :(得分:1)

--acl bucket-owner-full-control添加到CLI调用中,因此您的命令应如下所示: aws s3 sync s3://my_old_bucket s3://my_new_bucket --acl bucket-owner-full-control --profile myprofile

bucket-owner-full-control是一个罐头ACL(简而言之,罐头ACL是预定义的授权),请检查此内容以查看还有哪些其他选项以及它们在S3 Canned ACL documentation中的作用。

这将导致对象归目标存储桶所有。