Come faccio a correggere l'errore "“Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting” (Il bucket non può avere ACL impostate con l'impostazione BucketOwnerEnforced di ObjectOwnership) in CloudFormation?

2 minuti di lettura
0

Quando provo a implementare un bucket Amazon Simple Storage Service (Amazon S3) tramite uno stack AWS CloudFormation, ricevo un errore.

Breve descrizione

Per i bucket appena creati, Amazon S3 attiva ObjectOwnership e lo imposta su BucketOwnerEnforced per impostazione predefinita. Questa impostazione disattiva le liste di controllo degli accessi (ACL) e il proprietario del bucket automaticamente ottiene la titolarità e il pieno controllo su tutti gli oggetti nel bucket. Pertanto, le implementazioni che tentano di richiamare gli ACL con questa impostazione genereranno il seguente errore:

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)

Ad esempio, il seguente modello di implementazione genera questo errore:

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

Per risolvere questo problema, modifica il valore di ObjectOwnership per il bucket per consentire gli ACL.

Importante: Non è consigliabile utilizzare gli ACL per Amazon S3. Se il tuo caso d'uso richiede ACL, consulta i seguenti passaggi per la risoluzione dei problemi per consentirli.

Risoluzione

  1. Imposta il valore di ObjectOwnership su ObjectWriter o BucketOwnerPreferred.
  2. Per implementare il tuo bucket S3, usa il seguente modello:
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

Ciò consente di attivare gli ACL sul bucket.

Per ulteriori informazioni sul comportamento predefinito di Amazon S3 con gli ACL, consulta la sezione Avviso: le modifiche alla sicurezza di Amazon S3 saranno implementate nell'aprile del 2023.

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa