尝试找出一种使用Boto3在S3存储桶中的对象上设置ACL的方法。 输入应该是S3存储桶名称,并将所有对象的ACL更改为仅由公共
读取答案 0 :(得分:3)
要更改单个对象的ACL,首先获取Object
实例,然后更改ACL。下一个示例同时执行:
(boto3
.session
.Session(region_name=<region_name>)
.resource('s3')
.Object(<bucket_name>, <key>)
.Acl()
.put(ACL='public-read'))
要更改存储桶的ACL,假设您已经拥有存储桶实例:
bucket.Acl().put(ACL='public-read')
答案 1 :(得分:0)
在设置ACL时,您可以copy_object()
对象自身。
因此,源将与目标相同,但将ACL设置为所需的值。
答案 2 :(得分:0)
就我而言,我必须为在 S3 中编写的新对象指定 ACL,因此基于 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Object.put
import boto3
s3 = boto3.resource("s3")
s3.Object(my_bucket_name, my_key_path).put(Body=my_body, ACL=my_acl)
其中 my_acl
可以是以下之一:
'private'|'public-read'|'public-read-write'|'authenticated-read'|'aws-exec-read'|'bucket-owner-read'|'bucket-owner-full-control'