Alat migrasi (rilis pratinjau) - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Alat migrasi (rilis pratinjau)

AWS SDK untuk Java Ini menyediakan alat migrasi yang membantu mengotomatiskan migrasi SDK for Java kode 1.x ke 2.x. Alat ini menggunakan OpenRewrite—sumber terbuka, alat refactoring kode sumber—untuk melakukan migrasi.

Anda dapat menggunakan alat ini sekarang sebagai rilis pratinjau. Alat ini mendukung semua klien layanan SDK kecuali untuk Amazons3Client dan tingkat tinggi APIs seperti dan Dynamo. TransferManagerDBMapper Alat ini juga memiliki beberapa batasan yang tercantum di akhir topik ini.

Gunakan alat migrasi

Migrasi proyek Maven

Ikuti petunjuk di bawah ini untuk memigrasikan SDK for Java 1.x proyek berbasis Maven dengan menggunakan alat plugin Maven. OpenRewrite

  1. Arahkan ke direktori root proyek Maven Anda

    Buka jendela terminal (baris perintah) dan arahkan ke direktori root aplikasi berbasis MAVENN Anda.

  2. Jalankan rewrite-maven-plugin perintah plugin

    Anda dapat memilih dari dua mode (tujuan Maven): dryRun dan. run

    dryRunmodus

    Dalam dryRun mode, plugin menghasilkan log diff di output konsol dan file patch bernama rewrite.patch di target/rewrite folder. Mode ini memungkinkan Anda untuk melihat pratinjau perubahan yang akan dilakukan, karena tidak ada perubahan yang dilakukan pada file kode sumber.

    Contoh berikut menunjukkan cara memanggil plugin dalam dryRun mode.

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

    *Ganti <rewrite-plugin-version> dengan rewriteMavenPluginVersion nilai yang Anda lihat di file pengujian ini.

    ** Ganti <sdkversion> dengan versi 2.x SDK. Kunjungi Maven Central untuk memeriksa versi terbaru.

    penting

    Pastikan untuk menggunakan versi yang rewrite-maven-plugin ditampilkan dalam file pengujian karena versi lain mungkin tidak berfungsi.

    Output konsol Anda dari dryRun mode harus menyerupai output berikut.

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

    runmodus

    Ketika Anda menjalankan plugin dalam run mode, itu memodifikasi kode sumber pada disk untuk menerapkan perubahan. Pastikan Anda memiliki cadangan kode sumber sebelum menjalankan perintah.

    Contoh berikut menunjukkan cara memanggil plugin dalam run mode.

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

    * Ganti <rewrite-plugin-version> dengan rewriteMavenPluginVersionvalue yang Anda lihat di file pengujian ini.

    ** Ganti <sdkversion> dengan versi 2.x SDK. Kunjungi Maven Central untuk memeriksa versi terbaru.

    Setelah Anda menjalankan perintah, kompilasi aplikasi Anda dan jalankan tes untuk memverifikasi perubahan.

Migrasi proyek Gradle

Ikuti petunjuk di bawah ini untuk memigrasikan SDK for Java 1.x proyek berbasis Gradle dengan menggunakan alat plugin Gradle. OpenRewrite

  1. Arahkan ke direktori root proyek Gradle Anda

    Buka jendela terminal (baris perintah) dan arahkan ke direktori root aplikasi berbasis Gradle Anda.

  2. Buat skrip init Gradle

    Buat init.gradle file dengan konten berikut di direktori.

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

    * Ganti <rewrite-plugin-version> dengan versi yang Anda lihat di file pengujian ini.

  3. Jalankan rewrite perintah

    Seperti halnya plugin Maven, Anda dapat menjalankan plugin Gradle dalam dryRun mode atau. run

    dryRunmodus

    Contoh berikut menunjukkan cara memanggil plugin dalam dryRun mode.

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

    runmodus

    Contoh berikut menunjukkan cara memanggil plugin dalam run mode.

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

Keterbatasan saat ini

Rilis pratinjau saat ini tidak mendukung migrasi setiap fitur di SDK V1. Kami menambahkan dukungan untuk fitur secara bertahap.

Jika alat tidak dapat memigrasikan metode atau kelas dari V1 ke V2, output V2 berisi komentar yang dimulai dengan:

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

Mengikuti komentar, alat ini mengeluarkan rintisan generik dari versi V2 dari metode atau kelas. Misalnya, dalam output berikut, alat migrasi mencoba memigrasi metode klien V1 S3: setBucketLifecycleConfiguration

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

Tautan dalam daftar di bawah ini, membawa Anda ke informasi migrasi untuk membantu Anda memigrasikan kode secara manual.