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.1 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.1", "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,", "ownerIdentity":{ "principalId":"amzn-s3-demo-bucketThe 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.minorDie 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 Versionen der Ereignisstruktur kompatibel zu bleiben, empfehlen wir, dass Ihre Anwendungen neue Felder ignorieren.
Wenn neue Ereignistypen eingeführt werden, aber die Struktur des Ereignisses ansonsten unverändert bleibt, ändert sich die Ereignisversion 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 von Ihrer Anwendung erwarteten Felder vorhanden sind, empfehlen wir zudem, die Durchführung eines Größer-oder-Gleich-Vergleichs mit der Hauptversion.
-
Der
eventNameSchlüsselwert verweist auf die Liste der Ereignisbenachrichtigungstypen, enthält aber nicht dass3:Präfix. -
Der Schlüsselwert
userIdentityverweist auf die eindeutige ID der AWS Identity and Access Management (IAM)-Ressource (ein Benutzer, eine Rolle, eine Gruppe usw.), die das Ereignis verursacht hat. Eine Definition der einzelnen IAM-Identifikationspräfixe (z. B. KIDA, AROA, AGPA) und Informationen darüber, wie man den eindeutigen Identifikator erhält, finden Sie unter Einzige Identifikatoren im IAM-Benutzerhandbuch. -
Der Schlüsselwert
responseElementsist nützlich, wenn Sie eine Anfrage mit AWS -Support nachverfolgen möchten.x-amz-request-idundx-amz-id-2helfen 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 Schlüsselwert
s3liefert Informationen über den Bucket und das Objekt, die an dem Ereignis beteiligt sind. Der Wert des Objektschlüsselnamens ist URL-kodiert. Beispielsweise wirdred flower.jpgzured+flower.jpg. (Amazon S3 gibt als Inhaltstyp in der Antwort „application/x-www-form-urlencoded“ zurück.)Der Schlüsselwert
ownerIdentityentspricht der Kunden-ID des Bucket-Besitzers bei Amazon (Amazon.com). Dieser ID-Wert wird nicht mehr verwendet und wird nur noch aus Gründen der Abwärtskompatibilität beibehalten. -
Der Schlüsselwert
sequencerbietet 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 von Ereignissen, die Objekte erstellen (PUT-Anforderungen) und Objekte löschen, enthalten jedoch einsequencer. 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 Ereignis-Benachrichtigungen für denselben Objektschlüssel vergleichen, ist die Ereignis-Benachrichtigung mit dem größeren hexadezimalen Wert vonsequencerdas 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, diesequencer-Werte während der Verarbeitung jeder Ereignisbenachrichtigung zu vergleichen und zu speichern.Beachten Sie Folgendes:
-
Sie können den Schlüsselwert
sequencernicht verwenden, um die Reihenfolge der Ereignisse für verschiedene Objektschlüssel zu bestimmen. -
Die Zeichenketten
sequencerkönnen unterschiedlich lang sein. Um diese Werte zu vergleichen, wird also zunächst der kürzere Wert mit Nullen aufgefüllt und dann ein lexikografischer Vergleich durchgeführt.
-
-
Der
glacierEventDataSchlüsselwert ist nur fürs3:ObjectRestore:CompletedEreignisse sichtbar. -
Der Schlüsselwert
restoreEventDataenthält Attribute, die sich auf Ihre Wiederherstellungsanfrage beziehen. -
Der Schlüsselwert
replicationEventDataist nur für Replikationsereignisse sichtbar. -
Der Schlüsselwert
intelligentTieringEventDataist nur für S3 Intelligent-Tiering-Ereignisse sichtbar. -
Der Schlüsselwert
lifecycleEventDataist nur für S3-Lebenszyklus-Ü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":"", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }amzn-s3-demo-bucket
Anmerkung
Die Nachricht s3:TestEvent verwendet ein anderes Format als normale S3-Ereignisbenachrichtigungen. Im Gegensatz zu anderen Ereignisbenachrichtigungen, die die zuvor gezeigte Records -Array-Struktur verwenden, verwendet das Testevent ein vereinfachtes Format mit direkten Feldern. Achten Sie bei der Implementierung der Ereignisbehandlung darauf, dass Ihr Code zwischen beiden Nachrichtenformaten unterscheiden und diese korrekt verarbeiten kann.
Beispielnachricht, wenn ein Objekt mit einer PUT-Anforderung 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" } } } ] }