Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Struktur von Ereignismeldungen

Die Benachrichtigung, die Amazon S3 sendet, um ein Ereignis zu veröffentlichen, verwendet das JSON-Format. Das folgende Beispiel zeigt die Struktur der JSON-Nachricht.

Beachten Sie Folgendes im Zusammenhang mit dem Beispiel:

  • 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 neue Felder zur Ereignisstruktur hinzufügt. Dies kann geschehen, wenn neue Informationen für einige oder alle vorhandenen Ereignisse oder neue Informationen zu neu eingeführten Ereignistypen bereitgestellt werden. Anwendungen sollten neue Felder ignorieren, um weiter aufwärtskompatibel mit neuen Nebenversionen der Ereignisstruktur zu sein.

    Falls neue Ereignistypen eingeführt werden, aber die Struktur des Ereignisses anderweitig unmodifiziert ist, ä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 Schlüsselwert responseElements ist nützlich, wenn Sie eine Anfrage mit AWS Support nachverfolgen möchten. x-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 Anfrage zurückgibt, die die Ereignisse initiiert. Daher können sie verwendet werden, um das Ereignis der Anfrage zuzuordnen.

     

  • Der s3-Schlüssel bietet 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 als Inhaltstyp in der Antwort „application/x-www-form-urlencoded“ zurück).

     

  • Der sequencer-Schlüssel bietet eine Möglichkeit, die Reihenfolge von Ereignissen zu bestimmen. Ereignisbenachrichtigungen kommen nicht garantiert in der Reihenfolge an, in der die Ereignisse aufgetreten sind. Benachrichtigungen von Ereignissen, die Objekte erstellen (PUTs) und Objekte Löschen, enthalten jedoch einen sequencer, der verwendet werden kann, um die Reihenfolge von Ereignissen 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 Index Ihrer Amazon S3-Objekte zu verwalten, sollten Sie während der Verarbeitung der einzelnen Benachrichtigungen die sequencer-Werte vergleichen und speichern.

    Beachten Sie Folgendes:

    • Sie können sequencer nicht verwenden, um die Reihenfolge von Ereignissen für unterschiedliche Objektschlüssel zu bestimmen.

    • Die Sequenzer können unterschiedliche Längen haben. Um diese Werte zu vergleichen, füllen Sie zuerst den kürzeren Wert links mit Nullen auf und führen dann einen alphabetischen Vergleich durch.

     

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

     

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

Das folgende Beispiel zeigt Version 2.1 der JSON-Struktur der Ereignisbenachrichtigung. Dies ist die zurzeit von Amazon S3 verwendete Version.

{ "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":"event-type", "userIdentity":{ "principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event" }, "requestParameters":{ "sourceIPAddress":"ip-address-where-request-came-from" }, "responseElements":{ "x-amz-request-id":"Amazon S3 generated request ID", "x-amz-id-2":"Amazon S3 host that processed the request" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"ID found in the bucket notification configuration", "bucket":{ "name":"bucket-name", "ownerIdentity":{ "principalId":"Amazon-customer-ID-of-the-bucket-owner" }, "arn":"bucket-ARN" }, "object":{ "key":"object-key", "size":object-size, "eTag":"object eTag", "versionId":"object version if bucket is versioning-enabled, otherwise null", "sequencer": "a string representation of a hexadecimal value used to determine event sequence, only used with PUTs and DELETEs" } }, "glacierEventData": { "restoreEventData": { "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, of Restore Expiry", "lifecycleRestoreStorageClass": "Source storage class for restore" } } } ] }

Das folgende Beispiel zeigt Version 2.0 der Struktur der Ereignisnachricht. Diese Version wird nicht mehr von Amazon S3 verwendet.

{ "Records":[ { "eventVersion":"2.0", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":The time, in ISO-8601 format, for example, 1970-01-01T00:00:00.000Z, when S3 finished processing the request, "eventName":"event-type", "userIdentity":{ "principalId":"Amazon-customer-ID-of-the-user-who-caused-the-event" }, "requestParameters":{ "sourceIPAddress":"ip-address-where-request-came-from" }, "responseElements":{ "x-amz-request-id":"Amazon S3 generated request ID", "x-amz-id-2":"Amazon S3 host that processed the request" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"ID found in the bucket notification configuration", "bucket":{ "name":"bucket-name", "ownerIdentity":{ "principalId":"Amazon-customer-ID-of-the-bucket-owner" }, "arn":"bucket-ARN" }, "object":{ "key":"object-key", "size":object-size, "eTag":"object eTag", "versionId":"object version if bucket is versioning-enabled, otherwise null", "sequencer": "a string representation of a hexadecimal value used to determine event sequence, only used with PUTs and DELETEs" } } } ] }

Hier einige Beispielmeldungen:

  • Testnachricht – Wenn Sie eine Ereignisbenachrichtigung 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":"bucketname", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }
  • Beispielnachricht, wenn ein Objekt mit der PUT-Anfrage erstellt wird – Die folgende Meldung ist ein Beispiel für eine Meldung, 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":"127.0.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"mybucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::mybucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko", "sequencer":"0055AED6DCD90281E5" } } } ] }

Eine Definition der einzelnen IAM-Identifikationspräfixe (AIDA, AROA, AGPA etc.) finden Sie hier: Mehr über eindeutige ID-Präfixe.