AWS SDK für Java Migrationstool - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS SDK für Java Migrationstool

Das AWS SDK für Java bietet ein Migrationstool, mit dem die Migration von SDK for Java 1.x (V1) -Code auf 2.x (V2) automatisiert werden kann. Das Tool verwendet OpenRewrite— ein Open-Source-Tool zur Refaktorierung von Quellcode —, um die Migration durchzuführen. OpenRewrite verwendet Regeln zur Codeänderung (sogenannte „Rezepte“), um Ihren Quellcode automatisch von V1- auf V2-Syntax und Muster zu aktualisieren.

Das Tool unterstützt Regeln zur Codeänderung für SDK-Dienstclients und die allgemeine S3 Transfer Manager-Bibliothek. Regeln zur Codeänderung für andere High-Level-Clients APIs wie die DynamoDB Enhanced Client API von V1 DynamoDBMapperbis V2 werden nicht unterstützt.

Weitere Informationen zu Einschränkungen finden Sie am Ende dieser Seite. Ausführliche Beispiele für häufig nicht unterstützte Codemuster mit manuellen Migrationsschritten finden Sie unter Nicht unterstützte Codemuster.

Verwenden Sie das Migrationstool

Migrieren Sie ein Maven-Projekt

Folgen Sie den nachstehenden Anweisungen, um Ihr auf Maven basierendes SDK for Java 1.x-Projekt mithilfe des OpenRewriteMaven-Plugin-Tools zu migrieren.

  1. Navigieren Sie zum Stammverzeichnis Ihres Maven-Projekts

    Öffnen Sie ein Terminalfenster (Befehlszeile) und navigieren Sie zum Stammverzeichnis Ihrer Maven-basierten Anwendung.

  2. Führen Sie den Befehl des Plugins aus rewrite-maven-plugin

    Du kannst zwischen zwei Modi (Maven-Ziele) wählen: dryRun undrun.

    dryRun Modus

    In diesem dryRun Modus generiert das Plugin Diff-Logs in der Konsolenausgabe und eine rewrite.patch im target/rewrite Ordner benannte Patch-Datei. In diesem Modus können Sie eine Vorschau der Änderungen anzeigen, die vorgenommen werden würden, da keine Änderungen an den Quellcodedateien vorgenommen werden.

    Das folgende Beispiel zeigt, wie das Plugin im dryRun Modus aufgerufen wird.

    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

    <rewrite-plugin-version>*Ersetzen Sie es durch den rewriteMavenPluginVersion Wert, den Sie in dieser Testdatei sehen.

    **Durch eine 2.x SDK-Version <sdkversion> ersetzen. Besuchen Sie Maven Central, um nach der neuesten Version zu suchen.

    Wichtig

    Stellen Sie sicher, dass Sie die in der Testdatei rewrite-maven-plugin angegebene Version verwenden, da andere Versionen möglicherweise nicht funktionieren.

    Ihre Konsolenausgabe aus dem dryRun Modus sollte der folgenden Ausgabe ähneln.

    [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.

    run Modus

    Wenn Sie das Plug-in im run Modus ausführen, ändert es den Quellcode auf der Festplatte, sodass die Änderungen übernommen werden. Stellen Sie sicher, dass Sie eine Sicherungskopie des Quellcodes haben, bevor Sie den Befehl ausführen.

    Das folgende Beispiel zeigt, wie das Plugin im run Modus aufgerufen wird.

    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

    *Ersetze es <rewrite-plugin-version> durch rewriteMavenPluginVersionvalue das, was du in dieser Testdatei siehst.

    **Durch eine 2.x SDK-Version <sdkversion> ersetzen. Besuchen Sie Maven Central, um nach der neuesten Version zu suchen.

    Nachdem Sie den Befehl ausgeführt haben, kompilieren Sie Ihre Anwendung und führen Sie Tests durch, um die Änderungen zu überprüfen.

Migrieren Sie ein Gradle-Projekt

Folgen Sie den nachstehenden Anweisungen, um Ihr Gradle-basiertes SDK for Java 1.x-Projekt mithilfe des OpenRewrite Gradle-Plugin-Tools zu migrieren.

  1. Navigieren Sie zum Stammverzeichnis Ihres Gradle-Projekts

    Öffnen Sie ein Terminalfenster (Befehlszeile) und navigieren Sie zum Stammverzeichnis Ihrer Gradle-basierten Anwendung.

  2. Erstellen Sie ein Gradle-Init-Skript

    Erstellen Sie eine init.gradle Datei mit dem folgenden Inhalt im Verzeichnis.

    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() } } } }

    <rewrite-plugin-version>*Ersetzen Sie durch die Version, die Sie in dieser Testdatei sehen.

  3. Führen Sie den Befehl aus rewrite

    Wie beim Maven-Plugin können Sie das Gradle-Plugin im Modus dryRun oder run ausführen.

    dryRun Modus

    Das folgende Beispiel zeigt, wie das Plugin im Modus aufgerufen wird. dryRun

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

    run Modus

    Das folgende Beispiel zeigt, wie das Plugin im run Modus aufgerufen wird.

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

Aktuelle Einschränkungen

Die Migration unterstützt zwar den Großteil des V1-Codes durch Regeln zur Codeänderung, die auf das V2-Äquivalent aktualisiert werden, einige Klassen und Methoden sind jedoch nicht abgedeckt. Folgen Sie für diese Klassen und Methoden den step-by-step Anweisungen, um Ihren Code manuell zu migrieren.

Bei einigen Regeln zur Codeänderung, die nicht unterstützt werden, fügt das Migrationstool möglicherweise einen Kommentar hinzu, der wie folgt beginnt:

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

Im Anschluss an den Kommentar gibt das Tool einen generischen Stub der V2-Version der Methode oder Klasse aus. In der folgenden Ausgabe hat das Migrationstool beispielsweise versucht, die setBucketLifecycleConfiguration Methode des V1 S3-Clients zu migrieren:

/*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());

Über die Links in der folgenden Liste gelangen Sie zu Migrationsinformationen, die Ihnen bei der manuellen Migration des Codes helfen.