Estrutura de mensagens de evento - Amazon Simple Storage Service

Estrutura de mensagens de evento

A mensagem de notificação que o Amazon S3 envia para publicar um evento tem o formato JSON.

Para obter uma visão geral e instruções sobre como configurar notificações de eventos, consulte Notificações de eventos do Amazon S3.

Este exemplo mostra a versão 2.2 da estrutura JSON da notificação do evento. O Amazon S3 usa as versões 2.1, 2.2 e 2.3 desta estrutura de evento. O Amazon S3 usa a versão 2.2 para notificações de eventos de replicação entre regiões. Utiliza a versão 2.3 para o S3 Lifecycle, S3 Intelligent-Tiering, ACL de objeto, marcação de objetos e eventos de exclusão de restauração de objetos. Essas versões contêm informações adicionais específicas para essas operações. As versões 2.2 e 2.3 são compatíveis com a versão 2.1, que o Amazon S3 usa atualmente para outros tipos de notificação 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":"amzn-s3-demo-bucket", "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" } } } ] }

Sobre a estrutura de mensagens de evento, observe:

  • O valor da chave eventVersion contém uma versão principal e secundária no formulário <major>.<minor>.

    A versão principal será incrementada se o Amazon S3 fizer uma alteração na estrutura do evento que não seja compatível com versões anteriores. Isso inclui remover um campo JSON que já está presente ou alterar como os conteúdos de um campo são representados (por exemplo, um formato de data).

    A versão secundária será incrementada se o Amazon S3 adicionar novos campos à estrutura do evento. Isso pode ocorrer se forem fornecidas novas informações para alguns ou todos os eventos existentes. Isso também pode ocorrer se novas informações forem fornecidas apenas nos tipos de evento recém-apresentados. Os aplicativos devem ignorar novos campos para permanecerem compatíveis com novas versões secundárias da estrutura do evento.

    Se novos tipos de evento forem apresentados, mas a estrutura do evento não for modificada, a versão do evento não será alterada.

    Para garantir que seus aplicativos possam analisar a estrutura do evento corretamente, recomendamos que você faça uma comparação "igual a" no número da versão principal. Para garantir que os campos esperados por sua aplicação estejam presentes, também recomendamos fazer uma comparação “maior que ou igual a” na versão secundária.

  • O eventName faz referência à lista de tipos de notificação de evento, mas não contém o prefixo s3:.

  • O valor da chave responseElements será útil se você quiser rastrear uma solicitação acompanhando o AWS Support. Tanto o x-amz-request-id quanto o x-amz-id-2 ajudam o Amazon S3 a rastrear uma solicitação individual. Esses valores são os mesmos que os retornados pelo Amazon S3 na resposta à solicitação que inicia os eventos. Isso ocorre para que eles possam ser usados para corresponder o evento à solicitação.

  • A chave s3 fornece informações sobre o bucket e o objeto envolvidos no evento. O valor do nome da chave de objetos é codificado para URL. Por exemplo, "red flower.jpg" se torna "red+flower.jpg" (o Amazon S3 retorna “application/x-www-form-urlencoded” como o tipo do conteúdo na resposta).

  • A chave sequencer fornece uma maneira de determinar a sequência de eventos. Não há garantia de que as notificações de evento cheguem na mesma ordem em que os eventos ocorreram. No entanto, as notificações de eventos que criam objetos (PUTs) e excluem objetos contêm um sequencer. Ele pode ser usado para determinar a ordem dos eventos de determinada chave de objeto.

    Se você comparar a sequências do sequencer nas duas notificações de evento na mesma chave de objeto, a notificação de evento com o valor hexadecimal sequencer maior será o evento que ocorreu depois. Se você estiver usando notificações de evento para manter um banco de dados ou um índice separado dos objetos do Amazon S3, recomendamos comparar e armazenar os valores de sequencer ao processar cada notificação de evento.

    Observe o seguinte:

    • Não é possível usar sequencer para determinar a ordem de eventos em chaves de objetos diferentes.

    • Os sequenciadores podem ter comprimentos diferentes. Portanto, para comparar esses valores, primeiro preencha zeros à direita do menor valor e faça uma comparação lexicográfica.

  • A chave glacierEventData só está visível para eventos s3:ObjectRestore:Completed.

  • A chave restoreEventData contém atributos que estão relacionados à solicitação de restauração.

  • A chave replicationEventData só é visível para eventos de replicação.

  • A chave intelligentTieringEventData só fica visível para eventos do S3 Intelligent-Tiering.

  • A chave lifecycleEventData só fica visível para eventos de transição do S3 Lifecycle.

Exemplos de mensagens

Veja a seguir exemplos de mensagens de notificação de eventos do Amazon S3.

Mensagem de teste do Amazon S3

Depois que você configura uma notificação de evento em um bucket, o Amazon S3 envia a mensagem de teste a seguir.

{ "Service":"Amazon S3", "Event":"s3:TestEvent", "Time":"2014-10-13T15:57:02.089Z", "Bucket":"amzn-s3-demo-bucket", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }
Mensagem de exemplo quando um objeto é criado usando uma solicitação PUT

A mensagem a seguir é um exemplo de mensagem que o Amazon S3 envia para publicar um evento s3:ObjectCreated:Put.

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

Para obter uma definição de cada prefixo de identificação do IAM (por exemplo, AIDA, AROA, AGPA), consulte Identificadores do IAM no Guia do usuário do IAM.