Cambios en la API Notificaciones de eventos de S3 de la versión 1 a la 2 - AWS SDK for Java 2.x

Cambios en la API Notificaciones de eventos de S3 de la versión 1 a la 2

En este tema se detallan los cambios en la API Notificaciones de eventos de S3 de la versión 1.x (v1) a la versión 2.x (v2) de AWS SDK para Java.

Cambios de alto nivel

Cambios estructurales

La V1 usa clases internas estáticas para tipos EventNotificationRecord y sus atributos, mientras que la v2 usa clases públicas independientes para tipos EventNotificationRecord.

Cambios en la convención de nomenclatura

En la v1, los nombres de clases de atributos incluyen el sufijo Entity, mientras que en la v2 se omite este sufijo para simplificar la nomenclatura: por ejemplo, eventData en lugar de eventDataEntity.

Cambios en dependencias, paquetes y nombres de clases

En la v1, las clases de la API Notificación de eventos de S3 se importan de forma transitiva junto con el módulo S3 (artifactId aws-java-sdk-s3). Sin embargo, en la v2 es necesario añadir una dependencia al artefacto s3-event-notifications.

Cambio v1 v2

dependencias 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>
Package name com.amazonaws.services.s3.event software.amazon.awssdk.eventnotifications.s3.model
Nombres de clase

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 Última versión.

Cambios en la API

JSON a S3EventNotification y a la inversa

Caso de uso v1 v2
Crear S3EventNotification a partir de cadena JSON
S3EventNotification notification = S3EventNotification.parseJson(message.body());
S3EventNotification notification = S3EventNotification.fromJson(message.body());
Convertir S3EventNotification a cadena JSON
String json = notification.toJson();
String json = notification.toJson();

Acceder a atributos de S3EventNotification

Caso de uso v1 v2
Recuperar registros de una notificación
List<S3EventNotification.S3EventNotificationRecord> records = notifcation.getRecords();
List<S3EventNotificationRecord> records = notification.getRecords();
Recuperar un registro de una lista de registros
S3EventNotification.S3EventNotificationRecord record = records.stream().findAny().get();
S3EventNotificationRecord record = records.stream().findAny().get();
Recuperar datos de eventos de Glacier
S3EventNotification.GlacierEventDataEntity glacierEventData = record.getGlacierEventData();
GlacierEventData glacierEventData = record.getGlacierEventData();
Recuperar datos de eventos de restauración de un evento de Glacier
S3EventNotification.RestoreEventDataEntity restoreEventData = glacierEventData.getRestoreEventDataEntity();
RestoreEventData restoreEventData = glacierEventData.getRestoreEventData();
Recuperar parámetros de solicitudes
S3EventNotification.RequestParametersEntity requestParameters = record.getRequestParameters();
RequestParameters requestParameters = record.getRequestParameters();
Recuperar datos de los eventos de Intelligent Tiering
S3EventNotification.IntelligentTieringEventDataEntity tieringEventData = record.getIntelligentTieringEventData();
IntelligentTieringEventData intelligentTieringEventData = record.getIntelligentTieringEventData();
Recuperar datos de eventos del ciclo de vida
S3EventNotification.LifecycleEventDataEntity lifecycleEventData = record.getLifecycleEventData();
LifecycleEventData lifecycleEventData = record.getLifecycleEventData();
Recuperar nombre del evento como enumeración
S3Event eventNameAsEnum = record.getEventNameAsEnum();
//getEventNameAsEnum does not exist; use 'getEventName()' String eventName = record.getEventName();
Recuperar datos de eventos de replicación
S3EventNotification.ReplicationEventDataEntity replicationEntity = record.getReplicationEventDataEntity();
ReplicationEventData replicationEventData = record.getReplicationEventData();
Recuperar información de buckets y objetos de S3
S3EventNotification.S3Entity s3 = record.getS3();
S3 s3 = record.getS3();
Recuperar información de identidad de usuario
S3EventNotification.UserIdentityEntity userIdentity = record.getUserIdentity();
UserIdentity userIdentity = record.getUserIdentity();
Recuperar elementos de respuesta
S3EventNotification.ResponseElementsEntity responseElements = record.getResponseElements();
ResponseElements responseElements = record.getResponseElements();

Migración de la versión de la biblioteca aws-lambda-java-events

Si usa aws-lambda-java-events para trabajar con eventos de notificación de S3 en una función de Lambda, le recomendamos que actualice a la última versión 3.x.x. Las versiones recientes eliminan todas las dependencias de AWS SDK para Java 1.x de la API de notificación de eventos de S3.

Para obtener más información sobre las diferencias en el tratamiento de notificaciones de eventos de S3 entre la biblioteca aws-lambda-java-events y el SDK para Java 2.x, consulte Procese eventos de S3 en Lambda con bibliotecas de Java: AWS SDK for Java 2.x y aws-lambda-java-events.