使用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 個月前檢視次數 48 次
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 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南