Amazon web services 如何将bucket owner完全控制权分配给s3 bucket中已有的数百万个文件?

Amazon web services 如何将bucket owner完全控制权分配给s3 bucket中已有的数百万个文件?,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我有一个s3存储桶,里面有数百万个文件,这些文件是由我无法控制的Java进程复制到这里的。Java进程在“AWS帐户a”中的EC2中执行,但写入“AWS帐户B”拥有的bucket中。B能够看到这些文件,但无法打开它们 我发现了问题所在,并请求更改Java进程,以编写具有“acl=bucket owner full control”的新文件。。。而且它有效!可以从“AWS帐户B”读取新文件 但我的问题是,我仍然有数百万个acl不正确的文件。我可以很容易地修复一个旧文件 aws s3api put-

我有一个s3存储桶,里面有数百万个文件,这些文件是由我无法控制的Java进程复制到这里的。Java进程在“AWS帐户a”中的EC2中执行,但写入“AWS帐户B”拥有的bucket中。B能够看到这些文件,但无法打开它们

我发现了问题所在,并请求更改Java进程,以编写具有“acl=bucket owner full control”的新文件。。。而且它有效!可以从“AWS帐户B”读取新文件

但我的问题是,我仍然有数百万个acl不正确的文件。我可以很容易地修复一个旧文件

aws s3api put-object-acl --bucket bucketFromAWSAccountA--key datastore/file0000001.txt --acl bucket-owner-full-control
最好的方法是什么? 我在想什么

# Copy to TEMP folder
aws s3 sync s3://bucketFromAWSAccountA/datastore/ s3://bucketFromAWSAccountA/datastoreTEMP/ --recursive --acl bucket-owner-full-control
# Delete original store
aws s3 rm s3://bucketFromAWSAccountA/datastore/
# Sync it back to original folder
aws s3 sync s3://bucketFromAWSAccountA/datastoreTEMP/ s3://bucketFromAWSAccountA/datastore/ --recursive --acl bucket-owner-full-control
但这将非常耗时。我想知道是否

  • 有没有更好的方法来实现这一点?
  • 这可以从桶级别轻松实现吗?我的意思是一些更改“放置桶acl”,允许所有者准备好一切

一个选项似乎是递归地将bucket中的所有对象复制到自身上,指定要进行的ACL更改

比如:
aws s3 cp——递归——acl bucket owner完全控制s3://bucket/folder s3://bucket/folder——元数据指令替换

该代码段取自此答案:

值得回顾一下该问题答案中提供的其他选项,因为如果您没有正确地生成命令,可能会丢失内容类型标记或元数据信息。

您可以使用。