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
- Defina el valor de ObjectOwnership en ObjectWriter o BucketOwnerPreferred.
- 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.