Diferencias entre el AWS SDK para Java 1.x y 2.x - AWS SDK for Java 2.x

Diferencias entre el AWS SDK para Java 1.x y 2.x

En esta sección se describen los cambios principales que deben tenerse en cuenta al pasar una aplicación de la versión del AWS SDK para Java 1.x a 2.x.

Cambio de nombre de paquete

Un cambio notable del SDK para Java 1.x al SDK para Java 2.x es el cambio de nombre del paquete. Los nombres de los paquetes comienzan por software.amazon.awssdk en el SDK 2.x, mientras que en el SDK 1.x se usa com.amazonaws.

Estos mismos nombres diferencian los artefactos de Maven del SDK 1.x del SDK 2.x. Los artefactos de Maven para el SDK 2.x usan el GroupID software.amazon.awssdk, mientras que el SDK 1.x usa el GroupID com.amazonaws.

Hay ocasiones en las que el código requiere una dependencia com.amazonaws para un proyecto que, de otro modo, solo utilizaría artefactos del SDK 2.x. Un ejemplo de ello es cuando trabajas con AWS Lambda del lado del servidor. Esto se mostró anteriormente en la sección Configurar un proyecto de Apache Maven en esta guía.

nota

Varios nombres de paquetes en el SDK 1.x contienen v2. El uso de v2 en este caso suele significar que el código del paquete está orientado a funcionar con la versión 2 del servicio.

Como el nombre completo del paquete comienza por com.amazonaws, se trata de componentes del SDK 1.x. Algunos ejemplos de estos nombres de paquetes en el SDK 1.x son:

  • com.amazonaws.services.dynamodbv2

  • com.amazonaws.retry.v2

  • com.amazonaws.services.apigatewayv2

  • com.amazonaws.services.simpleemailv2

Adición de la versión 2.x a su proyecto

Maven es la forma recomendada de administrar las dependencias cuando se utiliza AWS SDK para Java 2.x. Para añadir componentes de la versión 2.x a su proyecto, actualice el archivo pom.xml con una dependencia en el SDK.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.21</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>dynamodb</artifactId> </dependency> </dependencies>

También puede utilizar las versiones 1.x y 2.x en paralelo al migrar el proyecto a la versión 2.x.

POJO inmutables

Los objetos de respuesta y solicitud de operación y clientes son ahora inmutables y no se pueden cambiar tras la creación. Para reutilizar una variable de respuesta o solicitud, debe crear un objeto nuevo para asignarlo a la misma.

ejemplo de actualización de un objeto de solicitud en 1.x
DescribeAlarmsRequest request = new DescribeAlarmsRequest(); DescribeAlarmsResult response = cw.describeAlarms(request); request.setNextToken(response.getNextToken());
ejemplo de actualización de un objeto de solicitud en 2.x
DescribeAlarmsRequest request = DescribeAlarmsRequest.builder().build(); DescribeAlarmsResponse response = cw.describeAlarms(request); request = DescribeAlarmsRequest.builder() .nextToken(response.nextToken()) .build();

Métodos setter y getter

En el AWS SDK para Java, los nombres de los métodos setter no incluyen el prefijo set o with. Por ejemplo, *.withEndpoint() es ahora *.endpoint().

Los nombres de los métodos Getter no utilizan el prefijo get.

ejemplo de utilizar métodos setter en 1.x
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion("us-east-1") .build();
ejemplo de utilizar métodos setter en 2.x
DynamoDbClient client = DynamoDbClient.builder() .region(Region.US_EAST_1) .build();
ejemplo de utilizar métodos getter en 1.x
String token = request.getNextToken();
ejemplo de utilizar métodos getter en 2.x
String token = request.nextToken();

Nombres de clase de modelo

Los nombres de clases de modelo que representan respuestas de servicio terminan en Response en v2 en lugar de Result que utiliza v1.

ejemplo de nombres de clases que representan una respuesta en v1
CreateApiKeyResult AllocateAddressResult
ejemplo de nombres de clases que representan una respuesta en v2
CreateApiKeyResponse AllocateAddressResponse

Estado migratorio de bibliotecas y utilidades

Bibliotecas y utilidades del SDK para Java

En la siguiente tabla, se muestra el estado de migración de bibliotecas y utilidades del SDK para Java.

Nombre de la versión 1.12.x Nombre de la versión 2.x A partir de la versión 2.x
DynamoDBMapper DynamoDbEnhancedClient 2.12.0
Esperadores Esperadores 2.15.0
CloudFrontUrlSigner, CloudFrontCookieSigner CloudFrontUtilities 2.18.33
TransferManager S3TransferManager 2.19.0
Cliente de metadatos EC2 Cliente de metadatos de EC 2.19.29
Analizador de URI S3 Analizador de URI S 2.20.41
Creador de políticas de IAM Creador de políticas de IAM 2.20.126
Notificaciones de eventos de S3 Notificaciones de eventos de S 2.25.11
Almacenamiento en búfer del cliente Amazon SQS API de procesamiento automático de solicitudes por lotes para Amazon SQS 2.28.0
Agentes de escucha de progreso Agentes de escucha de progreso no publicado aún

Bibliotecas relacionadas

En la tabla siguiente se enumeran las bibliotecas que se publican por separado pero que funcionan con el SDK para Java 2.x.

Nombre utilizado en la versión 2.x del SDK para Java Desde la versión
Cliente de cifrado de Amazon S 3.0.01
AWS SDK de cifrado de bases de datos de para DynamoDB 3.0.02

1Cliente de cifrado de Amazon S3

El cliente de cifrado de Amazon S3 está disponible mediante la siguiente dependencia de Maven.

<dependency> <groupId>software.amazon.encryption.s3</groupId> <artifactId>amazon-s3-encryption-client-java</artifactId> <version>3.x</version> </dependency>

2 SDK de cifrado de bases de datos de AWS para DynamoDB

El cliente de SDK de cifrado de bases de datos de AWS para DynamoDB está disponible para V2 mediante la siguiente dependencia de Maven.

<dependency> <groupId>software.amazon.cryptography</groupId> <artifactId>aws-database-encryption-sdk-dynamodb</artifactId> <version>3.x</version> </dependency>

La información sobre la biblioteca de cifrado de DynamoDB que funciona con v1 del SDK de Java está disponible en la Guía para desarrolladores del SDK de cifrado de bases de datos de AWS(denominada Cliente de encriptación de Amazon DynamoDB para Java) y en GitHub.

Para obtener más información sobre la biblioteca de cifrado de DynamoDB que es compatible con V2 del SDK de Java, consulte la Guía para desarrolladores del SDK de cifrado de bases de datos de AWS y el Origen de GitHub.

La información de migración sobre la biblioteca de cifrado está disponible en la Guía para desarrolladores del SDK de cifrado de bases de datos de AWS.

Detalles de migración para bibliotecas y utilidades