Comment corriger l'erreur « Impossible de définir les ACL du compartiment à l’aide du paramètre BucketOwnerEnforced de ObjectOwnership » dans CloudFormation ?

Lecture de 2 minute(s)
0

Lorsque j'essaie de déployer un compartiment Amazon Simple Storage Service (Amazon S3) via une pile AWS CloudFormation, une erreur se produit.

Brève description

Pour les compartiments récemment créés, Amazon S3 active ObjectOwnership et le définit par défaut sur BucketOwnerEnforced. Ce paramètre désactive les listes de contrôles d'accès (ACL), et le propriétaire du compartiment possède immédiatement tous les objets du compartiment et en a le contrôle total. Par conséquent, les déploiements qui tentent d'invoquer des ACL avec ce paramètre génèrent l'erreur suivante :

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)

Par exemple, le modèle de déploiement suivant entraîne cette erreur :

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

Pour résoudre ce problème, modifiez la valeur de ObjectOwnership pour le compartiment afin d'autoriser les ACL.

**Important :**Il n'est pas recommandé d'utiliser des ACL pour Amazon S3. Si votre cas d'utilisation nécessite des ACL, reportez-vous aux étapes suivantes de résolution pour les autoriser.

Résolution

  1. Définissez la valeur de ObjectOwnership sur ObjectWriter ou BucketOwnerPreferred.
  2. Pour déployer votre compartiment S3, utilisez le modèle suivant :
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

Ainsi, vous activez les ACL sur le compartiment.

Pour plus d'informations sur le comportement par défaut d'Amazon S3 avec les ACL, consultez la sectionHeads-up (En vedette) : Des modifications de sécurité d'Amazon S3 seront apportées en avril 2023.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois