Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS SDK untuk Java alat migrasi
AWS SDK untuk Java Ini menyediakan alat migrasi yang membantu mengotomatiskan migrasi kode SDK for Java 1.x (V1) ke 2.x (V2). Alat ini menggunakan OpenRewrite
Alat ini mendukung aturan modifikasi kode untuk klien layanan SDK dan pustaka tingkat tinggi S3 Transfer Manager. Aturan modifikasi kode untuk tingkat tinggi lainnya APIs seperti DynamoDB Enhanced Client API V1 DynamoDBMapperke V2 tidak didukung.
Untuk detail lebih lanjut tentang batasan, lihat akhir halaman ini. Untuk contoh detail pola kode umum yang tidak didukung dengan langkah migrasi manual, lihat Pola kode tidak didukung.
Gunakan alat migrasi
Migrasi proyek Maven
-
Arahkan ke direktori root proyek Maven Anda
Buka jendela terminal (baris perintah) dan arahkan ke direktori root aplikasi berbasis MAVENN Anda.
-
Jalankan
rewrite-maven-pluginperintah pluginAnda dapat memilih dari dua mode (tujuan Maven):
dryRundan.rundryRunmodusDalam
dryRunmode, plugin menghasilkan log diff di output konsol dan file patch bernamarewrite.patchditarget/rewritefolder. 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
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*Ganti
<rewrite-plugin-version>denganrewriteMavenPluginVersionnilai yang Anda lihat di file pengujianini. ** Ganti
<sdkversion>dengan versi 2.x SDK. Kunjungi Maven Centraluntuk memeriksa versi terbaru. penting
Pastikan untuk menggunakan versi yang
rewrite-maven-pluginditampilkan dalam file pengujiankarena versi lain mungkin tidak berfungsi. Output konsol Anda dari
dryRunmode 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.runmodusKetika Anda menjalankan plugin dalam
runmode, 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
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* Ganti
<rewrite-plugin-version>denganrewriteMavenPluginVersionvalueyang Anda lihat di file pengujianini. ** Ganti
<sdkversion>dengan versi 2.x SDK. Kunjungi Maven Centraluntuk memeriksa versi terbaru. Setelah Anda menjalankan perintah, kompilasi aplikasi Anda dan jalankan tes untuk memverifikasi perubahan.
Migrasi proyek Gradle
-
Arahkan ke direktori root proyek Gradle
Buka jendela terminal (baris perintah) dan arahkan ke direktori root aplikasi berbasis Gradle Anda.
-
Buat skrip init Gradle
Buat
init.gradlefile 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 pengujianini. -
Jalankan
rewriteperintahSeperti halnya plugin Maven, Anda dapat menjalankan plugin Gradle dalam
dryRunmode atau.rundryRunmodusContoh berikut menunjukkan cara memanggil plugin dalam
dryRunmode.gradle rewriteDryRun --init-script init.gradle \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2runmodusContoh berikut menunjukkan cara memanggil plugin dalam
runmode.gradle rewriteRun --init-script init.gradle \ -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2
Keterbatasan saat ini
Meskipun migrasi mengunggah sebagian besar kode V1 melalui aturan modifikasi kode yang diperbarui ke setara V2, beberapa kelas dan metode tidak tercakup. Untuk kelas dan metode ini, ikuti step-by-step petunjuk untuk memigrasikan kode Anda secara manual.
Untuk beberapa aturan modifikasi kode yang tidak didukung, alat migrasi dapat menambahkan 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.
-
Perbedaan klien S3 antara versi 1 dan versi 2 AWS SDK untuk Java
-
Manajer Transfer S3 () TransferManager
-
Pemetaan objek DynamoDB (Dynamo) DBMapper
-
EC2 utilitas metadata () EC2 MetadataUtils
-
Pelayan () AmazonDynamo DBWaiters
-
Pembangun Kebijakan IAM (Kebijakan)
-
CloudFront presigning (CloudFrontUrlSigner, CloudFrontCookieSigner)
-
Pemberitahuan Acara S3 (EventNotificationS3)
-
Penerbitan metrik SDK (dokumentasi 1.x, dokumentasi 2.x)
-
Pola kode yang tidak didukung —Contoh rinci pola kode umum yang memerlukan migrasi manual