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
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
-
Navigieren Sie zum Stammverzeichnis Ihres Maven-Projekts
Öffnen Sie ein Terminalfenster (Befehlszeile) und navigieren Sie zum Stammverzeichnis Ihrer Maven-basierten Anwendung.
-
Führen Sie den Befehl des Plugins aus
rewrite-maven-pluginDu kannst zwischen zwei Modi (Maven-Ziele) wählen:
dryRunundrun.dryRunModusIn diesem
dryRunModus generiert das Plugin Diff-Logs in der Konsolenausgabe und einerewrite.patchimtarget/rewriteOrdner 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
dryRunModus 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 denrewriteMavenPluginVersionWert, den Sie in dieser Testdateisehen. **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-pluginangegebene Version verwenden, da andere Versionen möglicherweise nicht funktionieren. Ihre Konsolenausgabe aus dem
dryRunModus 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.runModusWenn Sie das Plug-in im
runModus 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
runModus 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>durchrewriteMavenPluginVersionvaluedas, was du in dieser Testdateisiehst. **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
-
Navigieren Sie zum Stammverzeichnis Ihres Gradle-Projekts
Öffnen Sie ein Terminalfenster (Befehlszeile) und navigieren Sie zum Stammverzeichnis Ihrer Gradle-basierten Anwendung.
-
Erstellen Sie ein Gradle-Init-Skript
Erstellen Sie eine
init.gradleDatei 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 Testdateisehen. -
Führen Sie den Befehl aus
rewriteWie beim Maven-Plugin können Sie das Gradle-Plugin im Modus
dryRunoderrunausführen.dryRunModusDas folgende Beispiel zeigt, wie das Plugin im Modus aufgerufen wird.
dryRungradle rewriteDryRun --init-script init.gradle \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2runModusDas folgende Beispiel zeigt, wie das Plugin im
runModus 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.
-
S3-Client-Unterschiede zwischen Version 1 und Version 2 von AWS SDK für Java
-
S3-Übertragungsmanager (TransferManager)
-
DynamoDB-Objektzuordnung (Dynamo) DBMapper
-
EC2 Metadaten-Hilfsprogramm () EC2 MetadataUtils
-
Kellner () AmazonDynamo DBWaiters
-
IAM Policy Builder (Richtlinie)
-
CloudFront vorsignieren (CloudFrontUrlSigner,) CloudFrontCookieSigner
-
S3-Ereignisbenachrichtigungen (S3EventNotification)
-
Veröffentlichung von SDK-Metriken (1.x-Dokumentation, 2.x-Dokumentation)
-
Nicht unterstützte Codemuster — Detaillierte Beispiele für gängige Codemuster, die eine manuelle Migration erfordern