Alterações na API de Notificações de Eventos do S3 da versão 1 para a versão 2 - AWS SDK for Java 2.x

Alterações na API de Notificações de Eventos do S3 da versão 1 para a versão 2

Este tópico detalha as alterações na API de Notificações de Eventos do S3 da versão 1.x (v1) para a versão 2 .x (v2) do AWS SDK para Java.

Alterações de alto nível

Alterações estruturais

A V1 usa classes internas estáticas para tipos EventNotificationRecord e seus atributos, enquanto a v2 usa classes públicas separadas para tipos EventNotificationRecord.

Alterações de convenção de nomenclatura

Na v1, os nomes das classes de atributos incluem o sufixo Entity, enquanto a v2 omite esse sufixo para simplificar a nomenclatura: por exemplo, eventData em vez de eventDataEntity.

Alterações em nomes de classes, dependências e pacotes

Na v1, as classes da API de Notificações de Eventos do S3 são importadas transitivamente junto com o módulo do S3 (artifactId aws-java-sdk-s3). No entanto, na v2, você precisa adicionar uma dependência do artefato s3-event-notifications.

Alteração v1 v2

Dependências do Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.X.X</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.X.X1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-event-notifications</artifactId> </dependency> </dependencies>
Nome do pacote com.amazonaws.services.s3.event software.amazon.awssdk.eventnotifications.s3.model
Nomes da classe

S3EventNotification

S3EventNotification.S3EventNotificationRecord

S3EventNotification.GlacierEventDataEntity

S3EventNotification.IntelligentTieringEventDataEntity

S3EventNotification.LifecycleEventDataEntity

S3EventNotification.ReplicationEventDataEntity

S3EventNotification.RequestParametersEntity

S3EventNotification.ResponseElementsEntity

S3EventNotification.RestoreEventDataEntity

S3EventNotification.S3BucketEntity

S3EventNotification.S3Entity

S3EventNotification.S3ObjectEntity

S3EventNotification.TransitionEventDataEntity

S3EventNotification.UserIdentityEntity

S3EventNotification

S3EventNotificationRecord

GlacierEventData

IntelligentTieringEventData

LifecycleEventData

ReplicationEventData

RequestParameters

ResponseElements

RestoreEventData

S3 Bucket

S3

S3Object

TransitionEventData

UserIdentity

1 Versão mais recente.

Alterações de API

JSON para S3EventNotification e reverso

Caso de uso v1 v2
Criar S3EventNotification com base em uma string JSON
S3EventNotification notification = S3EventNotification.parseJson(message.body());
S3EventNotification notification = S3EventNotification.fromJson(message.body());
Converter S3EventNotification em uma string JSON
String json = notification.toJson();
String json = notification.toJson();

Atributos de acesso de S3EventNotification

Caso de uso v1 v2
Recuperar registros de uma notificação
List<S3EventNotification.S3EventNotificationRecord> records = notifcation.getRecords();
List<S3EventNotificationRecord> records = notification.getRecords();
Recuperar um registro de uma lista de registros
S3EventNotification.S3EventNotificationRecord record = records.stream().findAny().get();
S3EventNotificationRecord record = records.stream().findAny().get();
Recuperar dados de eventos do Glacier
S3EventNotification.GlacierEventDataEntity glacierEventData = record.getGlacierEventData();
GlacierEventData glacierEventData = record.getGlacierEventData();
Recuperar dados de eventos de restauração de um evento do Glacier
S3EventNotification.RestoreEventDataEntity restoreEventData = glacierEventData.getRestoreEventDataEntity();
RestoreEventData restoreEventData = glacierEventData.getRestoreEventData();
Recuperar parâmetros de solicitação
S3EventNotification.RequestParametersEntity requestParameters = record.getRequestParameters();
RequestParameters requestParameters = record.getRequestParameters();
Recuperar dados de eventos do Intelligent Tiering
S3EventNotification.IntelligentTieringEventDataEntity tieringEventData = record.getIntelligentTieringEventData();
IntelligentTieringEventData intelligentTieringEventData = record.getIntelligentTieringEventData();
Recuperar dados de eventos do ciclo de vida
S3EventNotification.LifecycleEventDataEntity lifecycleEventData = record.getLifecycleEventData();
LifecycleEventData lifecycleEventData = record.getLifecycleEventData();
Recuperar o nome do evento como enumeração
S3Event eventNameAsEnum = record.getEventNameAsEnum();
//getEventNameAsEnum does not exist; use 'getEventName()' String eventName = record.getEventName();
Recuperar dados de eventos de replicação
S3EventNotification.ReplicationEventDataEntity replicationEntity = record.getReplicationEventDataEntity();
ReplicationEventData replicationEventData = record.getReplicationEventData();
Recuperar informações do objeto e do bucket do S3
S3EventNotification.S3Entity s3 = record.getS3();
S3 s3 = record.getS3();
Recuperar informações de identidade do usuário
S3EventNotification.UserIdentityEntity userIdentity = record.getUserIdentity();
UserIdentity userIdentity = record.getUserIdentity();
Recuperar elementos de resposta
S3EventNotification.ResponseElementsEntity responseElements = record.getResponseElements();
ResponseElements responseElements = record.getResponseElements();

Migrar a versão da biblioteca aws-lambda-java-events

Se você usa aws-lambda-java-events para trabalhar com eventos de notificação do S3 em uma função do Lambda, recomendamos atualizar para a versão 3.x.x mais recente. As versões recentes eliminam todas as dependências no AWS SDK para Java 1.x da API de Notificação de Eventos do S3.

Consulte mais informações sobre as diferenças no gerenciamento de Notificações de Eventos do S3 entre a biblioteca aws-lambda-java-events e o SDK para Java 2.x em Processar eventos do S3 no Lambda com bibliotecas Java: AWS SDK for Java 2.x e aws-lambda-java-events.