Quando tento implantar um bucket do Amazon Simple Storage Service (Amazon S3) por meio de uma pilha do AWS CloudFormation, recebo um erro.
Breve descrição
Para buckets recém-criados, o Amazon S3 ativa ** ObjectOwnership** e o define como BucketOwnerEnforced por padrão. Essa configuração desativa as listas de controle de acesso (ACLs), e o proprietário do bucket torna-se automaticamente proprietário e tem controle total sobre cada objeto no bucket. Portanto, implantações que tentam invocar ACLs com essa configuração resultam no seguinte erro:
Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting (Service: Amazon S3; Status Code: 400; Error Code: InvalidBucketAclWithObjectOwnership; Request ID: VCC82DDB; S3 Extended Request ID: itIVupTUTYxdhtOqXHTRxiwthYK4I/AvFqgNCWSqs8=; Proxy: null)
Por exemplo, o modelo de implantação a seguir resulta nesse erro:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
PortalBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
VersioningConfiguration:
Status: Enabled
WebsiteConfiguration:
IndexDocument: 'index.html'
ErrorDocument: 'error.html'
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
Para resolver esse problema, altere o valor de ObjectOwnership do bucket para permitir ACLs.
Importante: Não é uma prática recomendada usar ACLs para o Amazon S3. Se seu caso de uso exigir ACLs, consulte as etapas de solução de problemas a seguir para permiti-las.
Resolução
- Defina o valor de ObjectOwnership como ObjectWriter ou BucketOwnerPreferred.
- Para implantar seu bucket do S3, use o seguinte modelo:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
PortalBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
VersioningConfiguration:
Status: Enabled
WebsiteConfiguration:
IndexDocument: 'index.html'
ErrorDocument: 'error.html'
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
OwnershipControls:
Rules:
- ObjectOwnership: ObjectWriter
Isso permite que você ative ACLs no bucket.
Para mais informações sobre o comportamento padrão do Amazon S3 com ACLs, consulte Atenção: as mudanças de segurança do Amazon S3 chegarão em abril de 2023.