¿Cómo puedo solucionar el error «El bucket no puede tener ACL definidas con la configuración BucketOwnerEnforced de ObjectOwnership» en CloudFormation?

2 minutos de lectura
0

Cuando intento desplegar un bucket de Amazon Simple Storage Service (Amazon S3) a través de una pila de AWS CloudFormation, aparece un error.

Breve descripción

En los buckets recién creados, Amazon S3 activa ObjectOwnership y lo establece en BucketOwnerEnforced de forma predeterminada. Esta configuración desactiva las listas de control de acceso (ACL) y el propietario del bucket posee automáticamente todos los objetos del bucket y tiene el control total sobre ellos. Por lo tanto, los despliegues que intentan invocar las ACL con esta configuración producen el error siguiente:

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 ejemplo, la siguiente plantilla de despliegue produce este error:

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 este problema, cambie el valor de ObjectOwnership para que el bucket permita las ACL.

Importante: No se recomienda utilizar las ACL para Amazon S3. Si su caso de uso requiere las ACL, consulte los siguientes pasos de solución de problemas para permitirlas.

Resolución

  1. Defina el valor de ObjectOwnership en ObjectWriter o BucketOwnerPreferred.
  2. Para desplegar su bucket de S3, utilice la plantilla siguiente:
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

Esto le permite activar las ACL en el bucket.

Para obtener más información sobre el comportamiento predeterminado de Amazon S3 con las ACL, consulte Aviso: Los cambios de seguridad de Amazon S3 llegarán en abril de 2023.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año