使用Boto3

时间:2017-10-17 22:19:48

标签: amazon-s3 bucket

尝试找出一种使用Boto3在S3存储桶中的对象上设置ACL的方法。 输入应该是S3存储桶名称,并将所有对象的ACL更改为仅由公共

读取

3 个答案:

答案 0 :(得分:3)

来自boto3 docs

要更改单个对象的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'