使用boto3创建启用ACL的桶。

0

【以下的问题经过翻译处理】 你好。 我正在使用boto3创建一个存储桶:

s3X = boto3.resource('s3') s3X.create_bucket(Bucket=’my_bucket_name’)

这会创建一个存储桶,但会阻塞所有公共访问(并禁用ACL设置)。我尝试修改最后一行为:

s3X.create_bucket(Bucket='my_bucket_name',ACL=’public-read-write’)

然而,这会生成错误消息:

botocore.exceptions.ClientError:当调用CreateBucket操作时发生InvalidBucketAclWithObjectOwnership错误:存储桶无法设置带有ObjectOwnership的BucketOwnerEnforced设置的ACLs

该实例具有AWS凭据,我希望能够通过boto3设置存储桶属性。

profile picture
专家
已提问 5 个月前42 查看次数
1 回答
0

【以下的回答经过翻译处理】 对不起,我刚刚查看了文档,发现默认设置是禁止公共访问。https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html 换句话说,在创建存储桶后,需要禁用公共访问设置并设置访问控制列表(ACL),所以代码应该看起来像下面这样。

s3X.create_bucket(Bucket='my_bucket_name', ObjectOwnership='ObjectWriter')
s3X.put_public_access_block(Bucket=bucket_name, PublicAccessBlockConfiguration={'BlockPublicAcls': False, 'IgnorePublicAcls': False, 'BlockPublicPolicy': False, 'RestrictPublicBuckets': False})
s3X.put_bucket_acl(ACL='public-read-write', Bucket='my_bucket_name')
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则