Como corrijo o erro “O bucket não pode ter ACLs definidas com a configuração BucketOwnerEnforced de ObjectOwnership” no CloudFormation?

2 minuto de leitura
0

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

  1. Defina o valor de ObjectOwnership como ObjectWriter ou BucketOwnerPreferred.
  2. 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.

AWS OFICIAL
AWS OFICIALAtualizada há 10 meses