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 OpenRewrite
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
-
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.
-
Exécutez la
rewrite-maven-plugincommande du pluginVous pouvez choisir entre deux modes (objectifs Maven) :
dryRunetrun.Mode
dryRunDans ce
dryRunmode, le plugin génère des journaux de comparaison dans la sortie de la console et un fichier correctif nommérewrite.patchdans letarget/rewritedossier. 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
dryRunmode.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 larewriteMavenPluginVersionvaleur que vous voyez dans ce fichier de test. **Remplacez par
<sdkversion>une version 2.x du SDK. Visitez Maven Centralpour vérifier la dernière version. Important
Veillez à utiliser la version
rewrite-maven-pluginindiquée dans le fichier de test, car les autres versions risquent de ne pas fonctionner. La sortie de votre console depuis le
dryRunmode 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
runLorsque vous exécutez le plugin en
runmode, 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
runmode.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 celuirewriteMavenPluginVersionvalueque vous voyez dans ce fichier de test. **Remplacez par
<sdkversion>une version 2.x du SDK. Visitez Maven Centralpour 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
-
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.
-
Créer un script d'initialisation Gradle
Créez un
init.gradlefichier 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. -
Exécutez la
rewritecommandeComme avec le plugin Maven, vous pouvez exécuter le plugin Gradle en mode
dryRunorrun.Mode
dryRunL'exemple suivant montre comment invoquer le plugin en
dryRunmode.gradle rewriteDryRun --init-script init.gradle \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2Mode
runL'exemple suivant montre comment invoquer le plugin en
runmode.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.
-
Différences du client S3 entre la version 1 et la version 2 du AWS SDK pour Java
-
Gestionnaire de transfert S3 (TransferManager)
-
Mappage d'objets DynamoDB (Dynamo) DBMapper
-
EC2 utilitaire de métadonnées (EC2MetadataUtils)
-
Serveurs () AmazonDynamo DBWaiters
-
Générateur de politiques IAM (stratégie)
-
CloudFront présignant (CloudFrontUrlSigner, CloudFrontCookieSigner)
-
Notifications d'événements S3 (S3EventNotification)
-
Publication de métriques dans le SDK (documentation 1.x, documentation 2.x)
-
Modèles de code non pris en charge : exemples détaillés de modèles de code courants nécessitant une migration manuelle