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

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 v1, los nombres de las clases de atributos incluyen el sufijo Entity, mientras que v2 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>
Nombre del paquete com.amazonaws.services.s3.event software.amazon.awssdk.eventnotifications.s3.model
Nombres de clase

S3EventNotification

S3 S.3 EventNotification EventNotificationRecord

S3EventNotification. GlacierEventDataEntity

S3EventNotification. IntelligentTieringEventDataEntity

S3EventNotification. LifecycleEventDataEntity

S3EventNotification. ReplicationEventDataEntity

S3EventNotification. RequestParametersEntity

S3EventNotification. ResponseElementsEntity

S3EventNotification. RestoreEventDataEntity

S3 EventNotification S3 BucketEntity

Entidad S3 S.3 EventNotification

EventNotificationS3 S3. ObjectEntity

S3EventNotification. TransitionEventDataEntity

S3EventNotification. UserIdentityEntity

S3EventNotification

S3EventNotificationRecord

GlacierEventData

IntelligentTieringEventData

LifecycleEventData

ReplicationEventData

RequestParameters

ResponseElements

RestoreEventData

S3 Bucket

S3

Objeto S3

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 aws-lambda-java-eventssolía trabajar con eventos de notificación de S3 dentro de una función Lambda, le recomendamos que actualice a la última versión 3.x.x. Las versiones recientes eliminan todas las dependencias de la API de notificación de eventos de S3 con la versión AWS SDK para Java 1.x.

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 Java: y AWS SDK for Java 2.x aws-lambda-java-events.