Estructura de mensaje de evento - Amazon Simple Storage Service

Estructura de mensaje de evento

El mensaje de notificación que Amazon S3 envía para publicar un evento está en formato JSON.

Para obtener información general e instrucciones sobre cómo configurar notificaciones de eventos, consulte Notificaciones de eventos de Amazon S3.

En este ejemplo se muestra versión 2.2 de la estructura JSON de notificación de eventos. Amazon S3 utiliza versiones 2.1, 2.2 y 2.3 de esta estructura de eventos. Amazon S3 utiliza la versión 2.2 para las notificaciones de eventos de replicación entre regiones. Utiliza la versión 2.3 para S3 Lifecycle, S3 Intelligent-Tiering, la ACL de objetos, el etiquetado de objetos y los eventos de eliminación de restauración de objetos. Estas versiones contienen información adicional específica de estas operaciones. Las versiones 2.2 y 2.3 son compatibles con la versión 2.1, que Amazon S3 utiliza actualmente para todos los demás tipos de notificaciones de eventos.

{ "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":"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 in bytes", "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" } } } ] }

Tenga en cuenta lo siguiente en relación con la estructura de mensajes de eventos:

  • El valor de clave eventVersion contiene una versión principal y una versión secundaria con el formato <major>.<minor>.

    La versión principal se incrementa si Amazon S3 realiza un cambio en la estructura del evento que no es compatible con versiones anteriores. Esto incluye eliminar un campo JSON existente o cambiar la forma en que se representa el contenido de un campo (por ejemplo: un formato de fecha).

    La versión secundaria se incrementa si Amazon S3 añade campos a la estructura del evento. Esto puede ocurrir si se proporciona información nueva para algunos o todos los eventos existentes. Esto también puede ocurrir si se proporciona información nueva solo sobre los tipos de eventos recientemente introducidos. Las aplicaciones deben pasar por alto los campos nuevos para mantener la compatibilidad con versiones secundarias posteriores de la estructura de eventos.

    Si se introducen tipos de eventos nuevos, pero la estructura del evento no se modifica de ninguna otra forma, la versión del evento no cambia.

    Para asegurarse de que las aplicaciones pueden analizar la estructura de eventos correctamente, le recomendamos que haga una comparación de igualdad con el número de la versión principal. Para asegurarse de que los campos previstos por la aplicación están presentes, también recomendamos realizar una comparación mayor o igual que con la versión secundaria.

  • El eventName hace referencia a la lista de tipos de notificaciones de eventos, pero no contiene el prefijo s3:.

  • El valor de clave responseElements es útil si desea realizar el seguimiento de una solicitud con AWS Support. x-amz-request-id y x-amz-id-2 ayudan a Amazon S3 a rastrear una solicitud individual. Estos valores son los mismos que los que devuelve Amazon S3 en respuesta a la solicitud que inicia los eventos. De este modo, se pueden utilizar para emparejar el evento con la solicitud.

  • La clave s3 brinda información acerca del bucket y el objeto involucrados en el evento. El valor del nombre de la clave de objeto está codificado como URL. Por ejemplo, "red flower.jpg" se convierte en "red+flower.jpg" (Amazon S3 devuelve "application/x-www-form-urlencoded" como tipo de contenido en la respuesta).

  • La clave sequencer permite determinar la secuencia de los eventos. No se garantiza que las notificaciones de eventos lleguen en el mismo orden en que se produjeron los eventos. Sin embargo, las notificaciones de eventos que crean objetos (PUT) y borran objetos contienen un sequencer. Se puede utilizar para determinar el orden de los eventos de una clave de objeto determinada.

    Si compara las cadenas de sequencer de dos notificaciones de eventos en la misma clave de objeto, la notificación del evento con el mayor valor hexadecimal de sequencer es el evento que se produjo más tarde. Si utiliza notificaciones de eventos para mantener otra base de datos u otro índice de los objetos de Amazon S3, le recomendamos que compare y almacene los valores de sequencer a medida que procesa cada notificación de evento.

    Tenga en cuenta lo siguiente:

    • No se puede utilizar sequencer para determinar el orden de los eventos en diferentes claves de objeto.

    • El secuenciador puede ser de diferentes longitudes. Por lo tanto, para comparar estos valores, primero agregue ceros a la derecha del valor más corto y, a continuación, realice una comparación lexicográfica.

  • La clave glacierEventData solo es visible de los eventos s3:ObjectRestore:Completed.

  • La clave restoreEventData contiene atributos relacionados con la solicitud de restauración.

  • La clave replicationEventData solo es visible para los eventos de replicación.

  • La clave intelligentTieringEventData solo es visible para los eventos de S3 Intelligent-Tiering.

  • La clave lifecycleEventData solo es visible para los eventos de transición de S3 Lifecycle.

Mensajes de ejemplo

A continuación se muestran ejemplos de mensajes de notificación de eventos de Amazon S3.

Mensaje de prueba de Amazon S3

Después de configurar una notificación de evento en un bucket, Amazon S3 envía el siguiente mensaje de prueba.

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

Mensaje de ejemplo cuando se crea un objeto al utilizar una solicitud PUT

El siguiente mensaje es un ejemplo de un mensaje que Amazon S3 envía para publicar un s3:ObjectCreated:Put evento.

{ "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" } } } ] }

Para obtener una definición de cada prefijo de identificación de IAM (por ejemplo, AIDA, AROA, AGPA), consulte Identificadores de IAM) en la Guía del usuario de IAM.