gc5*_*gc5 8 directory acl file-permissions amazon-s3 amazon-web-services
我正在尝试向s3中的现有帐户授予权限.
存储桶由该帐户拥有,但数据是从另一个帐户的存储桶中复制的.
当我尝试使用该命令授予权限时:
aws s3api put-object-acl --bucket <bucket_name> --key <folder_name> --profile <original_account_profile> --grant-full-control emailaddress=<destination_account_email>
Run Code Online (Sandbox Code Playgroud)
我收到错误:
An error occurred (NoSuchKey) when calling the PutObjectAcl operation: The specified key does not exist.
Run Code Online (Sandbox Code Playgroud)
如果我在一个文件上执行此操作,则命令成功.
如何使其适用于完整文件夹?
小智 17
这只能通过使用管道来实现.试试 -
aws s3 ls s3://bucket/path/ --recursive | awk '{cmd="aws s3api put-object-acl --acl bucket-owner-full-control --bucket bucket --key "$4; system(cmd)}'
Run Code Online (Sandbox Code Playgroud)
Str*_*tch 15
其他答案都可以,但最快的方法是使用aws s3 cp
带有选项的命令--metadata-directive REPLACE
,如下所示:
aws s3 cp --recursive --acl bucket-owner-full-control s3://bucket/folder s3://bucket/folder --metadata-directive REPLACE
Run Code Online (Sandbox Code Playgroud)
这给出了介于 50Mib/s 和 80Mib/s 之间的速度。
John R 的评论中的答案,建议使用“虚拟”选项,例如--storage-class STANDARD
. 虽然这有效,但只给了我 5Mib/s 和 11mb/s 之间的复制速度。
尝试此操作的灵感来自 AWS 关于该主题的支持文章:https : //aws.amazon.com/premiumsupport/knowledge-center/s3-object-change-anonymous-ownership/
注意:如果您的某些对象遇到“访问被拒绝”,这可能是因为您将 AWS 凭证用于存储桶拥有账户,而您需要对从中复制文件的账户使用凭证。
您将需要为每个对象单独运行该命令。
您可以使用以下方法来简化该过程:
aws s3 cp --acl bucket-owner-full-control --metadata Key=Value --profile <original_account_profile> s3://bucket/path s3://bucket/path
Run Code Online (Sandbox Code Playgroud)
也就是说,您将文件复制到它们自己,但是具有添加的ACL,该ACL向存储桶所有者授予权限。
如果您有子目录,请添加--recursive
。
归档时间: |
|
查看次数: |
6195 次 |
最近记录: |