Struktur von Ereignismeldungen - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Struktur von Ereignismeldungen

Die Benachrichtigung, die Amazon S3 sendet, um ein Ereignis zu veröffentlichen, verwendet das JSON-Format.

Eine allgemeine Übersicht und Anweisungen zum Konfigurieren von Ereignisbenachrichtigungen finden Sie unter Amazon-S3-Ereignisbenachrichtigungen.

Dieses Beispiel veranschaulicht Version 2.2 der JSON-Struktur der Ereignisbenachrichtigung. Amazon S3 verwendet Versionen 2.1 und 2.2 und 2.3 dieser Ereignisstruktur. Amazon S3 verwendet Version 2.2 für regionsübergreifende Replikationsereignisbenachrichtigungen. Es verwendet Version 2.3 für S3 Lebenszyklus, S3 Intelligent-Tiering, Objekt-ACL, Objekt-Markierung und Objektwiederherstellungs-Löschereignisse. Diese Versionen enthalten zusätzliche Informationen, die für diese Vorgänge spezifisch sind. Die Versionen 2.2 und 2.3 sind ansonsten mit Version 2.1 kompatibel, die Amazon S3 derzeit für alle anderen Ereignisbenachrichtigungstypen verwendet.

{ "Records":[ { "eventVersion":"2.2", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request", "eventName":"The event type", "userIdentity":{ "principalId":"The unique ID of the IAM resource that caused the event" }, "requestParameters":{ "sourceIPAddress":"The IP address where the request came from" }, "responseElements":{ "x-amz-request-id":"The Amazon S3 generated request ID", "x-amz-id-2":"The Amazon S3 host that processed the request" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"The ID found in the bucket notification configuration", "bucket":{ "name":"The name of the bucket, for example, amzn-s3-demo-bucket", "ownerIdentity":{ "principalId":"The Amazon retail customer ID of the bucket owner" }, "arn":"The bucket Amazon Resource Name (ARN)" }, "object":{ "key":"The object key name", "size":"The object size in bytes (as a number)", "eTag":"The object entity tag (ETag)", "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled", "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests" } }, "glacierEventData": { "restoreEventData": { "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires", "lifecycleRestoreStorageClass": "The source storage class for restored objects" } } } ] }

Beachten Sie im Zusammenhang mit der Ereignistachrichtenstruktur Folgendes:

  • Der eventVersion-Schlüsselwert enthält eine Haupt- und eine Nebenversion im Format major.minor.

    Die Hauptversion wird erhöht, wenn Amazon S3 eine Änderung an der Ereignisstruktur vornimmt, die nicht abwärtskompatibel ist. Dies beinhaltet das Entfernen eines JSON-Feldes, das bereits vorhanden ist, oder das Ändern, wie die Inhalte eines Feldes dargestellt werden (Beispiel: ein Datumsformat).

    Die Nebenversion wird erhöht, wenn Amazon S3 der Ereignisstruktur neue Felder hinzufügt. Dies kann auftreten, wenn neue Informationen für einige oder alle vorhandenen Ereignisse bereitgestellt werden. Dies kann auch der Fall sein, wenn neue Informationen nur für neu eingeführte Ereignistypen bereitgestellt werden. Um mit neuen Nebenversionen der Ereignisstruktur kompatibel zu bleiben, empfehlen wir, dass Ihre Anwendungen neue Felder ignorieren.

    Wenn neue Ereignistypen eingeführt werden, die Struktur des Ereignisses aber ansonsten unverändert bleibt, ändert sich die Eventversion nicht.

    Um sicherzustellen, dass Ihre Anwendungen die Ereignisstruktur ordnungsgemäß analysieren können, empfehlen wir, dass Sie einen Vergleich mit der Hauptversionsnummer durchführen. Um sicherzustellen, dass die Felder, die von Ihrer Anwendung erwartet werden, vorhanden sind, empfehlen wir außerdem, mit der greater-than-or-equal Nebenversion einen -to-Vergleich durchzuführen.

  • Der eventName Schlüsselwert verweist auf die Liste der Typen von Ereignisbenachrichtigungen, enthält jedoch nicht das s3: Präfix.

  • Der userIdentity Schlüsselwert bezieht sich auf die eindeutige ID der AWS Identity and Access Management (IAM-) Ressource (Benutzer, Rolle, Gruppe usw.), die das Ereignis verursacht hat. Eine Definition der einzelnen IAM-Identifikationspräfixe (z. B. AIDA, AROA, AGPA) und Informationen zum Abrufen der eindeutigen Kennung finden Sie unter Eindeutige Identifikatoren im IAM-Benutzerhandbuch.

  • Der responseElements Schlüsselwert ist nützlich, wenn Sie eine Anfrage nachverfolgen möchten, indem Sie mit nachverfolgen. AWS -Supportx-amz-request-id und x-amz-id-2 helfen Amazon S3, eine einzelne Anfrage nachzuverfolgen. Diese Werte sind dieselben, die Amazon S3 in der Antwort auf die Anforderung zurückgibt, die die Ereignisse initiiert. Daher können Sie diese Werte verwenden, um das Ereignis der Anfrage zuzuordnen.

  • Der s3 Schlüsselwert enthält Informationen über den Bucket und das Objekt, die an dem Ereignis beteiligt sind. Der Wert des Objektschlüsselnamens ist URL-kodiert. Beispielsweise wird red flower.jpg zu red+flower.jpg. (Amazon S3 gibt "application/x-www-form-urlencoded" als Inhaltstyp in der Antwort zurück.)

    Der ownerIdentity Schlüsselwert entspricht der Amazon-Einzelhandelskundennummer des Bucket-Besitzers. Dieser ID-Wert wird nicht mehr verwendet und nur aus Gründen der Abwärtskompatibilität beibehalten.

  • Der sequencer Schlüsselwert bietet eine Möglichkeit, die Reihenfolge der Ereignisse zu bestimmen. Ereignis-Benachrichtigungen kommen nicht garantiert in der Reihenfolge an, in der die Ereignisse aufgetreten sind. Benachrichtigungen über Ereignisse, die Objekte (PUTAnfragen) erstellen und Objekte löschen, enthalten jedoch einesequencer. Sie können diesen Wert verwenden, um die Reihenfolge der Ereignisse für einen bestimmten Objektschlüssel zu bestimmen.

    Wenn Sie die sequencer-Zeichenfolgen von zwei Ereignisbenachrichtigungen für denselben Objektschlüssel vergleichen, ist die Ereignisbenachrichtigung mit dem größeren hexadezimalen Wert von sequencer das später aufgetretene Ereignis. Wenn Sie Ereignisbenachrichtigungen verwenden, um eine separate Datenbank oder einen separaten Index Ihrer Amazon-S3-Objekte zu verwalten, empfehlen wir Ihnen, die sequencer-Werte während der Verarbeitung jeder Ereignisbenachrichtigung zu vergleichen und zu speichern.

    Beachten Sie Folgendes:

    • Sie können den sequencer Schlüsselwert nicht verwenden, um die Reihenfolge von Ereignissen auf verschiedenen Objektschlüsseln zu bestimmen.

    • Die sequencer Zeichenketten können unterschiedlich lang sein. Um diese Werte zu vergleichen, füllen Sie also zuerst den kürzeren Wert mit Nullen mit der linken Maustaste auf und führen Sie dann einen lexikografischen Vergleich durch.

  • Der glacierEventData Schlüsselwert ist nur für Ereignisse sichtbar. s3:ObjectRestore:Completed

  • Der restoreEventData Schlüsselwert enthält Attribute, die sich auf Ihre Wiederherstellungsanforderung beziehen.

  • Der replicationEventData Schlüsselwert ist nur für Replikationsereignisse sichtbar.

  • Der intelligentTieringEventData Schlüsselwert ist nur für S3 Intelligent-Tiering-Ereignisse sichtbar.

  • Der lifecycleEventData Schlüsselwert ist nur für S3 Lifecycle-Übergangsereignisse sichtbar.

Beispielnachrichten

Im Folgenden finden Sie Beispiele für Amazon-S3-Ereignis-Benachrichtigungen.

Amazon-S3-Testnachricht

Nachdem Sie eine Ereignis-Benachrichtigung für einen Bucket konfigurieren, sendet Amazon S3 die folgende Testnachricht.

{ "Service":"Amazon S3", "Event":"s3:TestEvent", "Time":"2014-10-13T15:57:02.089Z", "Bucket":"amzn-s3-demo-bucket", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }
Anmerkung

Die s3:TestEvent Nachricht verwendet ein anderes Format als reguläre S3-Ereignisbenachrichtigungen. Im Gegensatz zu anderen Ereignisbenachrichtigungen, die die zuvor gezeigte Records Array-Struktur verwenden, verwendet das Testereignis ein vereinfachtes Format mit direkten Feldern. Stellen Sie bei der Implementierung der Ereignisbehandlung sicher, dass Ihr Code zwischen beiden Nachrichtenformaten unterscheiden und diese ordnungsgemäß verarbeiten kann.

Beispielnachricht, wenn ein Objekt mithilfe einer PUT Anfrage erstellt wird

Das Folgende ist ein Beispiel für eine Nachricht, die Amazon S3 sendet, um ein s3:ObjectCreated:Put-Ereignis zu veröffentlichen.

{ "Records":[ { "eventVersion":"2.1", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"172.16.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"amzn-s3-demo-bucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::amzn-s3-demo-bucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko", "sequencer":"0055AED6DCD90281E5" } } } ] }