使用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
EXPERTE
gefragt vor 5 Monaten48 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen