AWS SDK pour Java outil de migration - AWS SDK for Java 2.x

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS SDK pour Java outil de migration

AWS SDK pour Java Il fournit un outil de migration qui permet d'automatiser la migration du code du SDK for Java 1.x (V1) vers le code 2.x (V2). L'outil utilise OpenRewriteun outil open source de refactorisation du code source pour effectuer la migration. OpenRewrite utilise des règles de modification du code (appelées « recettes ») pour mettre à jour automatiquement votre code source de la syntaxe et des modèles V1 à V2.

L'outil prend en charge les règles de modification du code pour les clients du service SDK et la bibliothèque de haut niveau S3 Transfer Manager. Les règles de modification du code pour d'autres applications de haut niveau, APIs telles que l'API DynamoDB Enhanced Client des versions 1 DynamoDBMapperà 2, ne sont pas prises en charge.

Pour plus de détails sur les limitations, consultez la fin de cette page. Pour des exemples détaillés de modèles de code courants non pris en charge avec des étapes de migration manuelle, voir Modèles de code non pris en charge.

Utiliser l'outil de migration

Migrer un projet Maven

Suivez les instructions ci-dessous pour migrer votre projet SDK for Java 1.x basé sur Maven à l'aide OpenRewrite du plug-in Maven.

  1. Accédez au répertoire racine de votre projet Maven

    Ouvrez une fenêtre de terminal (ligne de commande) et accédez au répertoire racine de votre application basée sur Maven.

  2. Exécutez la rewrite-maven-plugin commande du plugin

    Vous pouvez choisir entre deux modes (objectifs Maven) : dryRun etrun.

    Mode dryRun

    Dans ce dryRun mode, le plugin génère des journaux de comparaison dans la sortie de la console et un fichier correctif nommé rewrite.patch dans le target/rewrite dossier. Ce mode vous permet de prévisualiser les modifications qui seront apportées, car aucune modification n'est apportée aux fichiers de code source.

    L'exemple suivant montre comment invoquer le plugin en dryRun mode.

    mvn org.openrewrite.maven:rewrite-maven-plugin:<rewrite-plugin-version>*:dryRun \ -Drewrite.recipeArtifactCoordinates=software.amazon.awssdk:v2-migration:<sdkversion>** \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2

    *Remplacez <rewrite-plugin-version> par la rewriteMavenPluginVersion valeur que vous voyez dans ce fichier de test.

    **Remplacez par <sdkversion> une version 2.x du SDK. Visitez Maven Central pour vérifier la dernière version.

    Important

    Veillez à utiliser la version rewrite-maven-plugin indiquée dans le fichier de test, car les autres versions risquent de ne pas fonctionner.

    La sortie de votre console depuis le dryRun mode doit ressembler à la sortie suivante.

    [WARNING] These recipes would make changes to project/src/test/resources/maven/before/pom.xml: [WARNING] software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2 [WARNING] software.amazon.awssdk.v2migration.UpgradeSdkDependencies [WARNING] org.openrewrite.java.dependencies.AddDependency: {groupId=software.amazon.awssdk, artifactId=apache-client, version=2.27.0, onlyIfUsing=com.amazonaws.ClientConfiguration} [WARNING] org.openrewrite.java.dependencies.AddDependency: {groupId=software.amazon.awssdk, artifactId=netty-nio-client, version=2.27.0, onlyIfUsing=com.amazonaws.ClientConfiguration} [WARNING] org.openrewrite.java.dependencies.ChangeDependency: {oldGroupId=com.amazonaws, oldArtifactId=aws-java-sdk-bom, newGroupId=software.amazon.awssdk, newArtifactId=bom, newVersion=2.27.0} [WARNING] org.openrewrite.java.dependencies.ChangeDependency: {oldGroupId=com.amazonaws, oldArtifactId=aws-java-sdk-s3, newGroupId=software.amazon.awssdk, newArtifactId=s3, newVersion=2.27.0} [WARNING] org.openrewrite.java.dependencies.ChangeDependency: {oldGroupId=com.amazonaws, oldArtifactId=aws-java-sdk-sqs, newGroupId=software.amazon.awssdk, newArtifactId=sqs, newVersion=2.27.0} [WARNING] These recipes would make changes to project/src/test/resources/maven/before/src/main/java/foo/bar/Application.java: [WARNING] software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2 [WARNING] software.amazon.awssdk.v2migration.S3GetObjectConstructorToFluent [WARNING] software.amazon.awssdk.v2migration.ConstructorToFluent [WARNING] software.amazon.awssdk.v2migration.S3StreamingResponseToV2 [WARNING] software.amazon.awssdk.v2migration.ChangeSdkType [WARNING] software.amazon.awssdk.v2migration.ChangeSdkCoreTypes [WARNING] software.amazon.awssdk.v2migration.ChangeExceptionTypes [WARNING] org.openrewrite.java.ChangeType: {oldFullyQualifiedTypeName=com.amazonaws.AmazonClientException, newFullyQualifiedTypeName=software.amazon.awssdk.core.exception.SdkException} [WARNING] org.openrewrite.java.ChangeMethodName: {methodPattern=com.amazonaws.AmazonServiceException getRequestId(), newMethodName=requestId} [WARNING] org.openrewrite.java.ChangeMethodName: {methodPattern=com.amazonaws.AmazonServiceException getErrorCode(), newMethodName=awsErrorDetails().errorCode} [WARNING] org.openrewrite.java.ChangeMethodName: {methodPattern=com.amazonaws.AmazonServiceException getServiceName(), newMethodName=awsErrorDetails().serviceName} [WARNING] org.openrewrite.java.ChangeMethodName: {methodPattern=com.amazonaws.AmazonServiceException getErrorMessage(), newMethodName=awsErrorDetails().errorMessage} [WARNING] org.openrewrite.java.ChangeMethodName: {methodPattern=com.amazonaws.AmazonServiceException getRawResponse(), newMethodName=awsErrorDetails().rawResponse().asByteArray} [WARNING] org.openrewrite.java.ChangeMethodName: {methodPattern=com.amazonaws.AmazonServiceException getRawResponseContent(), newMethodName=awsErrorDetails().rawResponse().asUtf8String} [WARNING] org.openrewrite.java.ChangeType: {oldFullyQualifiedTypeName=com.amazonaws.AmazonServiceException, newFullyQualifiedTypeName=software.amazon.awssdk.awscore.exception.AwsServiceException} [WARNING] software.amazon.awssdk.v2migration.NewClassToBuilderPattern [WARNING] software.amazon.awssdk.v2migration.NewClassToBuilder [WARNING] software.amazon.awssdk.v2migration.V1SetterToV2 [WARNING] software.amazon.awssdk.v2migration.V1GetterToV2 ... [WARNING] software.amazon.awssdk.v2migration.V1BuilderVariationsToV2Builder [WARNING] software.amazon.awssdk.v2migration.NewClassToBuilderPattern [WARNING] software.amazon.awssdk.v2migration.NewClassToBuilder [WARNING] software.amazon.awssdk.v2migration.V1SetterToV2 [WARNING] software.amazon.awssdk.v2migration.HttpSettingsToHttpClient [WARNING] software.amazon.awssdk.v2migration.WrapSdkClientBuilderRegionStr [WARNING] Patch file available: [WARNING] project/src/test/resources/maven/before/target/rewrite/rewrite.patch [WARNING] Estimate time saved: 20m [WARNING] Run 'mvn rewrite:run' to apply the recipes.

    Mode run

    Lorsque vous exécutez le plugin en run mode, il modifie le code source sur le disque pour appliquer les modifications. Assurez-vous de disposer d'une copie de sauvegarde du code source avant d'exécuter la commande.

    L'exemple suivant montre comment invoquer le plugin en run mode.

    mvn org.openrewrite.maven:rewrite-maven-plugin:<rewrite-plugin-version>*:run \ -Drewrite.recipeArtifactCoordinates=software.amazon.awssdk:v2-migration:<sdkversion>** \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2

    *Remplacez <rewrite-plugin-version> par celui rewriteMavenPluginVersionvalue que vous voyez dans ce fichier de test.

    **Remplacez par <sdkversion> une version 2.x du SDK. Visitez Maven Central pour vérifier la dernière version.

    Après avoir exécuté la commande, compilez votre application et exécutez des tests pour vérifier les modifications.

Migrer un projet Gradle

Suivez les instructions ci-dessous pour migrer votre projet SDK for Java 1.x basé sur Gradle à l'aide OpenRewrite du plug-in Gradle.

  1. Accédez au répertoire racine de votre projet Gradle

    Ouvrez une fenêtre de terminal (ligne de commande) et accédez au répertoire racine de votre application basée sur Gradle.

  2. Créer un script d'initialisation Gradle

    Créez un init.gradle fichier avec le contenu suivant dans le répertoire.

    initscript { repositories { maven { url "https://plugins.gradle.org/m2" } } dependencies { classpath("org.openrewrite:plugin:<rewrite-plugin-version>*") } } rootProject { plugins.apply(org.openrewrite.gradle.RewritePlugin) dependencies { rewrite("software.amazon.awssdk:v2-migration:latest.release") } afterEvaluate { if (repositories.isEmpty()) { repositories { mavenCentral() } } } }

    *Remplacez <rewrite-plugin-version> par la version que vous voyez dans ce fichier de test.

  3. Exécutez la rewrite commande

    Comme avec le plugin Maven, vous pouvez exécuter le plugin Gradle en mode dryRun orrun.

    Mode dryRun

    L'exemple suivant montre comment invoquer le plugin en dryRun mode.

    gradle rewriteDryRun --init-script init.gradle \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2

    Mode run

    L'exemple suivant montre comment invoquer le plugin en run mode.

    gradle rewriteRun --init-script init.gradle \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2

Limitations actuelles

Bien que la migration prenne en charge la plupart du code V1 par le biais de règles de modification du code mises à jour vers l'équivalent de la V2, certaines classes et méthodes ne sont pas couvertes. Pour ces classes et méthodes, suivez les step-by-step instructions pour migrer manuellement votre code.

Pour certaines règles de modification de code non prises en charge, l'outil de migration peut ajouter un commentaire commençant par :

/*AWS SDK for Java v2 migration: Transform for ...

Après le commentaire, l'outil génère un stub générique de la version V2 de la méthode ou de la classe. Par exemple, dans le résultat suivant, l'outil de migration a tenté de migrer la setBucketLifecycleConfiguration méthode du client S3 V1 :

/*AWS SDK for Java v2 migration: Transform for setBucketLifecycleConfiguration method not supported. Please manually migrate your code by using builder pattern, update from BucketLifecycleConfiguration.Rule to LifecycleRule, StorageClass to TransitionStorageClass, and adjust imports and names.*/ s3.putBucketLifecycleConfiguration( PutBucketLifecycleConfigurationRequest.builder() .bucket(bucketName) .lifecycleConfiguration(BucketLifecycleConfiguration.builder() .build()) .build());

Les liens de la liste ci-dessous vous redirigent vers des informations de migration qui vous aideront à migrer manuellement le code.