Warum werden Amazon S3-Ereignisbenachrichtigungen nicht an eine Amazon SQS-Warteschlange übermittelt, die serverseitige Verschlüsselung verwendet?

Lesedauer: 5 Minute
0

Amazon Simple Storage Service (Amazon S3) Ereignisbenachrichtigungen werden nicht an meine Amazon Simple Queue Service (Amazon SQS)-Warteschlange für serverseitige Verschlüsselung (SSE) übermittelt.

Behebung

Gehen Sie wie folgt vor, um S3-Ereignisbenachrichtigungen zu konfigurieren und an eine Amazon SQS-Warteschlange zu senden, die serverseitige Verschlüsselung (SSE) verwendet.

Erstellen eines vom Kunden verwalteten AWS-KMS-Schlüssels und Konfigurieren der Schlüsselrichtlinie

Sie müssen Amazon SQS-Warteschlangen mit einem vom Kunden verwalteten AWS Key Management Service (AWS KMS)-Schlüssel verschlüsseln. Gewähren Sie dem Amazon S3-Serviceprinzipal dann Berechtigungen für die Arbeit mit verschlüsselten Warteschlangen.

Hinweis: Sie können den von AWS verwalteten Standard-KMS-Schlüssel nicht ändern. Stattdessen müssen Sie für diesen Vorgang einen vom Kunden verwalteten Schlüssel verwenden. Sie müssen dem AWS-KMS-Schlüssel auch Berechtigungen hinzufügen, um den Zugriff auf einen bestimmten Serviceprinzipal zu ermöglichen.

Um dem Amazon S3-Serviceprinzipal Berechtigungen zu gewähren, fügen Sie der vom Kunden verwalteten Schlüsselrichtlinie diese Anweisung hinzu:

{  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::"111122223333":root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

Hinweis: Ersetzen Sie „arn:aws:iam::"111122223333":root“ durch Ihre ARN.

Erstellen einer SQS-Warteschlange und Gewähren von Amazon S3-Berechtigungen

  1. Erstellen Sie eine Amazon SQS-Warteschlange, die für die Verwendung von SSE konfiguriert ist. Weitere Informationen finden Sie unter Konfiguration der serverseitigen Verschlüsselung (SSE) für eine Warteschlange (Konsole).
  2. Damit Amazon S3 Nachrichten an die Warteschlange senden kann, fügen Sie der SQS-Warteschlange diese Berechtigungsanweisung hinzu:
{  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:111122223333:sqs-s3-kms-same-account",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:hellobucket"
        }
      }
    }
  ]
}

Hinweis: Ersetzen Sie den Resource-Wert durch Ihren SQS-Warteschlangen-ARN, aws:SourceAccount durch Ihre AWS-Quellkonto-ID und aws:SourceArn durch Ihren Amazon S3-Bucket-ARN.

Im vorherigen Beispiel kann der S3-Bucket hellobucket für das Kundenkonto 123456789 ObjectCreated-Ereignisbenachrichtigungen an die angegebene SQS-Warteschlange senden. Weitere Informationen zu den erforderlichen Berechtigungen für die Arbeit mit verschlüsselten SQS-Warteschlangen finden Sie unter Schlüsselverwaltung.

Erstellen eines S3-Ereignisses

Gehen Sie wie folgt vor, um ein Amazon S3-Ereignis für Ihren Bucket hinzuzufügen:

  1. Öffnen Sie die S3-Konsole und wählen Sie dann den verlinkten Namen für Ihren S3-Bucket aus.
  2. Wählen Sie auf der Registerkarte Eigenschaften die Option Ereignisbenachrichtigung erstellen.
  3. Geben Sie auf der Seite Ereignisbenachrichtigung erstellen die folgenden Informationen ein:
    Geben Sie für Ereignisname einen Namen ein.
    Wählen Sie für Ereignistypen die Ereignistypen aus, für die Sie Benachrichtigungen erhalten möchten.
    Wählen Sie als Ziel die Option SQS-Warteschlange aus.
    Wählen Sie für SQS-Warteschlange Ihre Warteschlange aus.
  4. Wählen Sie Änderungen speichern aus.

Überprüfen, ob der Amazon-S3-Ereignistyp korrekt konfiguriert ist

Wenn Sie eine Amazon-S3-Ereignisbenachrichtigung konfigurieren, müssen Sie angeben, welche unterstützten Ereignistypen Amazon S3 veranlassen, die Benachrichtigung zu senden. Wenn ein Ereignistyp, den Sie nicht angegeben haben, in Ihrem Amazon-S3-Bucket auftritt, sendet Amazon S3 die Benachrichtigung nicht.

Vergewissern, dass die Objektschlüssel-Namensfilter in URL-codiertem Format vorliegen

Wenn Ihre Ereignisbenachrichtigungen so konfiguriert sind, dass sie das Filtern nach Objektschlüsselnamen verwenden, werden Benachrichtigungen nur für Objekte mit bestimmten Präfixen oder Suffixen veröffentlicht.

Wenn Sie Sonderzeichen in Ihren Präfixen oder Suffixen verwenden, müssen Sie diese in URL-codiertem Format eingeben. Weitere Informationen finden Sie unter Konfigurieren von Ereignisbenachrichtigungen mithilfe der Filterung von Objektschlüsselnamen.

Hinweis: Sie können ein Platzhalterzeichen („*“) in Filtern nicht als Präfix oder Suffix verwenden, um ein beliebiges Zeichen darzustellen.

Sicherstellen, dass alle Ereignisziele existieren

Der Fehler „Unable to validate the following destination configurations“ tritt auf, wenn kein Amazon S3-Ziel für Ereignisbenachrichtigungs-Buckets existiert.

Wenn Sie eine vorhandene Ereignisbenachrichtigung so konfiguriert haben, dass Ereignisse an ein Ziel gesendet werden, das nicht mehr existiert, müssen Sie diese Ereignisse entfernen. Stellen Sie sicher, dass Sie die Ereignisse entfernen, bevor Sie die Konfiguration der Ereignisbenachrichtigung aktualisieren.

Hinweis: Es hat sich bewährt, alle Ereignisse mit nicht existierenden Zielen mit der PutBucketNotificationConfiguration -API zu löschen.

Überprüfen der S3-Bucket- und SQS-Warteschlangenregionen

Sie können keine Benachrichtigungen von einem S3-Bucket in einer AWS-Region an eine Amazon SQS-Warteschlange in einer anderen Region senden. Legen Sie stattdessen ein Amazon Simple Notification Service (Amazon SNS)-Thema als S3-Bucket-Ziel mit einer Amazon SQS-Warteschlange in einer anderen Region fest. Amazon SNS unterstützt die regionsübergreifende Übermittlung von Benachrichtigungen an Amazon SQS-Warteschlangen und AWS Lambda-Funktionen.

Weitere Informationen finden Sie unter Senden von Amazon SNS-Nachrichten an eine Amazon SQS-Warteschlange oder Lambda-Funktion in einer anderen Region.

Bestätigen, dass Nachrichten an die Amazon SQS-Warteschlange gesendet wurden

Verwenden Sie die Amazon CloudWatch-Metrik NumberOfMessagesSent, um zu überprüfen, ob die Nachrichten an die Amazon SQS-Warteschlange gesendet wurden.

Weitere Informationen finden Sie unter Warum empfängt meine Amazon SQS-Warteschlange keine Nachrichten?

Problembehebung mit AWS Support

Wenn die vorherigen Schritte zur Fehlerbehebung das Problem nicht lösen, wenden Sie sich an den AWS Support. Nehmen Sie die RequestId und den Zeitstempel mit der Zeitzone der fehlgeschlagenen API-Aufrufe in Ihre Korrespondenz auf.

Verwandte Informationen

Wie kann ich mein Amazon SQS-Abonnement erhalten, um erfolgreich eine Benachrichtigung von meinem Amazon SNS-Thema zu erhalten?

Amazon S3-Ereignisbenachrichtigungen

Anleitung: Konfiguration eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten