Wie behebe ich den Fehler „Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting“ in CloudFormation?

Lesedauer: 2 Minute
0

Wenn ich versuche, einen Amazon Simple Storage Service (Amazon S3)-Bucket über einen AWS-CloudFormation-Stack bereitzustellen, erhalte ich eine Fehlermeldung.

Kurzbeschreibung

Für neu erstellte Buckets aktiviert Amazon S3 ObjectOwnership und legt es standardmäßig auf BucketOwnerEnforced fest. Mit dieser Einstellung werden Zugriffssteuerungslisten (ACLs) deaktiviert, der Bucket-Besitzer besitzt automatisch jedes Objekt im Bucket und hat die volle Kontrolle darüber. Daher führen Bereitstellungen, die versuchen, ACLs mit dieser Einstellung aufzurufen, zu dem folgenden Fehler:

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)

Die folgende Bereitstellungsvorlage führt beispielsweise zu diesem Fehler:

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

Um dieses Problem zu beheben, ändern Sie den Wert von ObjectOwnership für den Bucket, sodass ACLs zugelassen werden.

Wichtig: Es ist keine bewährte Methode, ACLs für Amazon S3 zu verwenden. Wenn Ihr Anwendungsfall ACLs erfordert, lesen Sie die folgenden Schritte zur Fehlerbehebung, um diese zuzulassen.

Lösung

  1. Setzen Sie den Wert von ObjectOwnership auf ObjectWriter oder BucketOwnerPreferred.
  2. Verwenden Sie die folgende Vorlage, um Ihren S3-Bucket bereitzustellen:
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

Auf diese Weise können Sie ACLs für den Bucket aktivieren.

Weitere Informationen zum Standardverhalten von Amazon S3 mit ACLs finden Sie unter Achtung: Die Sicherheitsänderungen von Amazon S3 werden im April 2023 eingeführt.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten