

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

# Cara memigrasikan kode Anda dari AWS SDK untuk Java 1.x ke 2.x
<a name="migration-howto"></a>

Anda dapat memigrasikan SDK for Java 1.x aplikasi yang ada dalam beberapa cara.

1. Pendekatan otomatis dengan menggunakan [alat migrasi](migration-tool.md).

1. [Pendekatan manual](migration-steps.md) dengan mengganti impor 1.x secara bertahap dengan impor 2.x.

Kami menyarankan Anda memulai dengan menggunakan alat migrasi. Ini mengotomatiskan sebagian besar pekerjaan rutin, penggantian dari kode 1.x ke 2.x. 

Karena alat [tidak memigrasikan semua fitur](migration-tool.md#migration-tool-limitations), Anda harus mencari kode v1 yang tersisa setelah menjalankan alat. Bila Anda menemukan kode yang alat tidak bermigrasi, ikuti [step-by-step petunjuk](migration-steps.md) (pendekatan manual) dan gunakan [artikel panduan migrasi](migration-whats-different.md) untuk menyelesaikan migrasi.

**Topics**
+ [Alat migrasi](migration-tool.md)
+ [Step-by-step instruksi](migration-steps.md)

# AWS SDK untuk Java alat migrasi
<a name="migration-tool"></a>

 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](https://docs.openrewrite.org/)—sumber terbuka, alat refactoring kode sumber—untuk melakukan migrasi. OpenRewrite menggunakan aturan modifikasi kode (disebut “resep”) untuk secara otomatis memperbarui kode sumber Anda dari sintaks dan pola V1 ke V2.

Alat ini mendukung aturan modifikasi kode untuk klien layanan SDK dan pustaka tingkat tinggi [S3 Transfer Manager](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html). Aturan modifikasi kode untuk tingkat tinggi lainnya APIs seperti DynamoDB [Enhanced Client API V1 [https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapper.html](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapper.html)ke V2 tidak didukung](dynamodb-enhanced-client.md). 

Untuk detail lebih lanjut tentang batasan, lihat [akhir halaman ini](#migration-tool-limitations). Untuk contoh detail pola kode umum yang tidak didukung dengan langkah migrasi manual, lihat Pola [kode tidak didukung](migration-tool-unsupported-patterns.md).

## Gunakan alat migrasi
<a name="migration-tool-use"></a>

### Migrasi proyek Maven
<a name="migration-tool-use-maven"></a>

[Ikuti petunjuk di bawah ini untuk memigrasikan SDK for Java 1.x proyek berbasis Maven dengan menggunakan alat plugin Maven. OpenRewrite](https://docs.openrewrite.org/reference/rewrite-maven-plugin)

1. Arahkan ke direktori root proyek Maven Anda

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

1. Jalankan `rewrite-maven-plugin` perintah plugin

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

   **`dryRun`****modus**

   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>** \
     -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2
   ```

   \$1Ganti *<rewrite-plugin-version>* dengan `rewriteMavenPluginVersion` nilai yang Anda lihat di [file pengujian](https://github.com/aws/aws-sdk-java-v2/blob/3a01289246f1f4ac814a354051d00030e53ef968/test/v2-migration-tests/src/test/java/software/amazon/awssdk/v2migrationtests/MavenTestBase.java#L54) ini.

   \$1\$1 Ganti *<sdkversion>* dengan versi 2.x SDK. Kunjungi [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/v2-migration) untuk memeriksa versi terbaru. 
**penting**  
Pastikan untuk menggunakan versi yang `rewrite-maven-plugin` ditampilkan dalam [file pengujian](https://github.com/aws/aws-sdk-java-v2/blob/3a01289246f1f4ac814a354051d00030e53ef968/test/v2-migration-tests/src/test/java/software/amazon/awssdk/v2migrationtests/MavenTestBase.java#L54) 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.
   ```

   **`run`****modus**

   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>** \
     -Drewrite.activeRecipes=software.amazon.awssdk.v2migration.AwsSdkJavaV1ToV2
   ```

   \$1 Ganti *<rewrite-plugin-version>* dengan `rewriteMavenPluginVersionvalue` yang Anda lihat di [file pengujian](https://github.com/aws/aws-sdk-java-v2/blob/3a01289246f1f4ac814a354051d00030e53ef968/test/v2-migration-tests/src/test/java/software/amazon/awssdk/v2migrationtests/MavenTestBase.java#L54) ini.

   \$1\$1 Ganti *<sdkversion>* dengan versi 2.x SDK. Kunjungi [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/v2-migration) untuk memeriksa versi terbaru. 

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

### Migrasi proyek Gradle
<a name="migration-tool-use-gradle"></a>

[Ikuti petunjuk di bawah ini untuk memigrasikan SDK for Java 1.x proyek berbasis Gradle dengan menggunakan alat plugin Gradle. OpenRewrite](https://docs.openrewrite.org/reference/gradle-plugin-configuration)

1. Arahkan ke direktori root proyek Gradle

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

1. 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()
               }
           }
       }
   }
   ```

   \$1 Ganti *<rewrite-plugin-version>* dengan versi yang Anda lihat di [file pengujian](https://github.com/aws/aws-sdk-java-v2/blob/master/test/v2-migration-tests/src/test/resources/software/amazon/awssdk/v2migrationtests/gradle/before/init.gradle#L6) ini.

1. Jalankan `rewrite` perintah

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

   **`dryRun`modus**

   Contoh berikut menunjukkan cara memanggil plugin dalam `dryRun` mode.

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

   **`run`modus**

   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
<a name="migration-tool-limitations"></a>

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](migration-steps.md) 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](migration-s3-client.md)
+ [Manajer Transfer S3](migration-s3-transfer-manager.md) () TransferManager
+ [Pemetaan objek DynamoDB (Dynamo](migration-ddb-mapper.md)) DBMapper
+ [EC2 utilitas metadata](migration-imds.md) () EC2 MetadataUtils
+ [Pelayan ()](migration-waiters.md) AmazonDynamo DBWaiters
+ [Pembangun Kebijakan IAM](migration-iam-policy-builder.md) (Kebijakan)
+ [CloudFront presigning](migration-cloudfront-presigning.md) (CloudFrontUrlSigner, CloudFrontCookieSigner)
+ [Pemberitahuan Acara S3](migration-s3-event-notification.md) (EventNotificationS3)
+ Penerbitan metrik SDK (dokumentasi [1.x, dokumentasi](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/generating-sdk-metrics.html) [2.x](metrics.md))
+ [Pola kode yang tidak didukung](migration-tool-unsupported-patterns.md) —Contoh rinci pola kode umum yang memerlukan migrasi manual

# Pola kode alat migrasi yang tidak didukung
<a name="migration-tool-unsupported-patterns"></a>

Alat migrasi secara otomatis mengonversi sebagian besar kode v1 ke v2. Namun, beberapa pola kode memerlukan migrasi manual. Topik ini memberikan contoh rinci tentang pola yang tidak didukung yang paling umum dan menunjukkan kepada Anda cara mengonversinya secara manual.

Daftar pola berikut ini tidak lengkap. Jika kode Anda tidak dikompilasi setelah menjalankan alat migrasi, ikuti [petunjuk step-by-step migrasi](migration-steps.md) untuk memigrasikan kode v1 yang tersisa secara manual.

## Minta konstruktor objek dengan parameter
<a name="request-pojo-constructors"></a>

Untuk permintaan POJOs (tidak termasuk Amazon S3), alat migrasi hanya mengubah metode penyetel. Alat ini tidak mendukung konstruktor dengan parameter.

**Pola yang didukung: Minta objek menggunakan setter (tidak ada parameter konstruktor)**

Sebelum (kode v1 asli):

```
import com.amazonaws.services.sqs.model.SendMessageRequest;

SendMessageRequest request = new SendMessageRequest().withMessageBody("Hello World");
request.setQueueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue");
```

Setelah (hasil alat migrasi):

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;

SendMessageRequest request = SendMessageRequest.builder()
    .messageBody("Hello World").build();
request = request.toBuilder()
    .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue").build();
```

**Pola tidak didukung: Minta konstruktor objek dengan parameter**

Alat migrasi tidak dapat mengonversi konstruktor dengan parameter:

Sebelum migrasi manual, tetapi setelah alat migrasi:

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2.

// This pattern requires manual migration.
SendMessageRequest request = new SendMessageRequest(
    "https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", 
    "Hello World");
```

Alat migrasi mengubah impor ke v2, tetapi kode konstruktor tetap tidak berubah dan memerlukan pembaruan manual untuk menggunakan pola pembangun.

Setelah migrasi manual:

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;

SendMessageRequest request = SendMessageRequest.builder()
    .messageBody("Hello World")
    .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue")
    .build();
```

## Metode klien layanan dengan parameter individual
<a name="service-client-method-overloads"></a>

Alat migrasi tidak dapat mengonversi metode klien layanan yang mengambil parameter individual alih-alih objek permintaan (tidak termasuk Amazon S3).

Sebelum (kode v1):

```
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClient;

AmazonSQS sqs = new AmazonSQSClient();
// The following v1 method takes individual parameters.
sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
```

Setelah (hasil alat migrasi — tidak dikompilasi):

```
import software.amazon.awssdk.services.sqs.SqsClient;  // Import updated to v2.
// No import statement for the v2 request POJO.

SqsClient sqs = SqsClient.builder().build();

// Does not compile–v2 methods only accept request POJOs.
sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
```

Anda harus memperbarui argumen metode secara manual untuk menggunakan objek permintaan:

```
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Add manually.

SqsClient sqs = SqsClient.builder().build();

// Corrected v2 code.
SendMessageRequest request = SendMessageRequest.builder()
    .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue")
    .messageBody("Hello World")
    .build();
sqs.sendMessage(request);
```

## Minta metode batas waktu
<a name="request-pojo-timeout-configuration"></a>

Alat migrasi tidak mengonversi metode yang menetapkan batas waktu pada objek permintaan.

Sebelum (kode v1):

```
import com.amazonaws.services.sqs.model.SendMessageRequest;

SendMessageRequest request = new SendMessageRequest();
request.setSdkRequestTimeout(7);
```

Setelah (hasil alat migrasi — tidak dikompilasi):

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;  // Import updated to v2.

SendMessageRequest request = SendMessageRequest.builder().build();

// Does not compile.
request.setSdkRequestTimeout(7);
```

Anda harus melakukan migrasi secara manual untuk menggunakan `overrideConfiguration` metode v2:

```
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
import java.time.Duration;

SendMessageRequest request = SendMessageRequest.builder().build();

// Corrected v2 code.
request = request.toBuilder()
    .overrideConfiguration(o -> o.apiCallTimeout(Duration.ofSeconds(7)))
    .build();
```

## Konstruktor klien layanan dengan parameter
<a name="service-client-constructors-with-args"></a>

Alat migrasi mengonversi konstruktor klien layanan kosong tetapi tidak dapat mengonversi konstruktor yang menerima parameter seperti kredensil atau konfigurasi.

Sebelum (kode v1):

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClient;

AWSCredentials awsCredentials = new BasicAWSCredentials("akid", "skid");
AmazonSQS sqs = new AmazonSQSClient(awsCredentials);
```

Setelah (hasil alat migrasi — tidak dikompilasi):

```
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.services.sqs.SqsClient;  // Import updated to v2.

AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid");

// Does not compile.
SqsClient sqs = new SqsClient(awsCredentials);
```

Anda harus memperbarui konstruktor klien layanan secara manual untuk menggunakan pola pembangun:

```
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;  // Add manually.
import software.amazon.awssdk.services.sqs.SqsClient;

AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid");

// Corrected v2 code.
SqsClient sqs = SqsClient.builder()
    .credentialsProvider(StaticCredentialsProvider.create(awsCredentials))
    .build();
```

# step-by-stepInstruksi migrasi dengan contoh
<a name="migration-steps"></a>

Bagian ini menyediakan step-by-step panduan untuk memigrasikan aplikasi Anda yang saat ini menggunakan SDK for Java v1.x ke SDK for Java 2.x. Bagian pertama menyajikan ikhtisar langkah-langkah yang diikuti dengan contoh rinci migrasi.

Langkah-langkah yang dibahas di sini menjelaskan migrasi kasus penggunaan normal, di mana aplikasi memanggil Layanan AWS menggunakan klien layanan berbasis model. Jika Anda perlu memigrasikan kode yang menggunakan level yang lebih tinggi APIs seperti [S3 Transfer Manager](migration-s3-transfer-manager.md) atau [CloudFrontpresigning](migration-cloudfront-presigning.md), lihat bagian di bawah [Apa yang berbeda antara AWS SDK untuk Java 1.x dan 2.x](migration-whats-different.md) daftar isi.



Pendekatan yang dijelaskan di sini adalah saran. Anda dapat menggunakan teknik lain dan memanfaatkan fitur pengeditan kode IDE Anda untuk mencapai hasil yang sama. 

## Ikhtisar langkah-langkah
<a name="migration-steps-overview"></a>

### 1. Mulailah dengan menambahkan SDK for Java 2.x BOM
<a name="migration-steps-overview-step1"></a>

Dengan menambahkan elemen Maven BOM (Bill of Materials) untuk SDK for Java 2.x ke file POM Anda, Anda memastikan bahwa semua ketergantungan v2 yang Anda butuhkan berasal dari versi yang sama. POM Anda dapat berisi dependensi v1 dan v2. Ini memungkinkan Anda untuk memigrasikan kode secara bertahap daripada mengubah semuanya sekaligus.

#### SDK for Java 2.x BOM
<a name="drt_b5n_q1c"></a>

```
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>bom</artifactId>
      <version>2.27.21</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
```

Anda dapat menemukan [versi terbaru](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) di Maven Central Repository.

### 2. Cari file untuk pernyataan impor kelas v1
<a name="migration-steps-overview-step2"></a>

Dengan memindai file dalam aplikasi Anda untuk SERVICE\$1 yang IDs digunakan dalam impor v1, Anda akan menemukan SERVICE\$1 unik yang digunakan. IDs SERVICE\$1ID adalah nama pendek dan unik untuk sebuah. Layanan AWS Misalnya `cognitoidentity` adalah SERVICE\$1ID untuk Identitas Amazon Cognito.

### 3. Tentukan dependensi Maven v2 dari pernyataan impor v1
<a name="migration-steps-overview-step3"></a>

Setelah Anda menemukan semua v1 SERVICE\$1 yang unikIDs, Anda dapat menentukan artefak Maven yang sesuai untuk ketergantungan v2 dengan mengacu pada. [Nama Package untuk pemetaan ArtifactID Maven](#migration-serviceid-artifactid-mapping)

### 4. Tambahkan elemen ketergantungan v2 ke file POM
<a name="migration-steps-overview-step4"></a>

Perbarui file Maven POM dengan elemen ketergantungan ditentukan pada langkah 3.

### 5. Dalam file Java, secara bertahap ubah kelas v1 ke kelas v2
<a name="migration-steps-overview-step5"></a>

Saat Anda mengganti kelas v1 dengan kelas v2, buat perubahan yang diperlukan untuk mendukung API v2 seperti menggunakan pembangun alih-alih konstruktor dan menggunakan pengambil dan penyetel yang lancar.

### 6. Hapus dependensi v1 Maven dari impor POM dan v1 dari file
<a name="migration-steps-overview-step6"></a>

Setelah memigrasikan kode untuk menggunakan kelas v2, hapus semua impor v1 yang tersisa dari file dan semua dependensi dari file build Anda.

### 7. Memfaktorkan ulang kode untuk menggunakan penyempurnaan API v2
<a name="migration-steps-overview-step7"></a>

Setelah kode berhasil mengkompilasi dan lulus tes, Anda dapat memanfaatkan penyempurnaan v2 seperti menggunakan klien HTTP atau paginator yang berbeda untuk menyederhanakan kode. Ini adalah langkah opsional.

## Contoh migrasi
<a name="migration-steps-example"></a>

Dalam contoh ini, kami memigrasikan aplikasi yang menggunakan SDK for Java v1 dan mengakses beberapa. Layanan AWS Kami bekerja melalui metode v1 berikut secara rinci di langkah 5. Ini adalah salah satu metode dalam kelas yang berisi delapan metode dan ada 32 kelas dalam aplikasi.

### metode v1 untuk bermigrasi
<a name="v1-snippet-collapsed"></a>

Hanya impor SDK v1 yang tercantum di bawah ini dari file Java.

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.RegionUtils;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.CreateTagsRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.ec2.model.TerminateInstancesRequest;
...
private static List<Instance> getRunningInstances(AmazonEC2Client ec2, List<String> instanceIds) {
    List<Instance> runningInstances = new ArrayList<>();
    try {
        DescribeInstancesRequest request = new DescribeInstancesRequest()
                .withInstanceIds(instanceIds);
        DescribeInstancesResult result;
        do {
            // DescribeInstancesResponse is a paginated response, so use tokens with multiple requests.
            result = ec2.describeInstances(request);
            request.setNextToken(result.getNextToken());   // Prepare request for next page.
            for (final Reservation r : result.getReservations()) {
                for (final Instance instance : r.getInstances()) {
                    LOGGER.info("Examining instanceId: "+ instance.getInstanceId());
                    // if instance is in a running state, add it to runningInstances list.
                    if (RUNNING_STATES.contains(instance.getState().getName())) {
                        runningInstances.add(instance);
                    }
                }
            }
        } while (result.getNextToken() != null);
    } catch (final AmazonEC2Exception exception) {
        // if instance isn't found, assume its terminated and continue.
        if (exception.getErrorCode().equals(NOT_FOUND_ERROR_CODE)) {
            LOGGER.info("Instance probably terminated; moving on.");
        } else {
            throw exception;
        }
    }
    return runningInstances;
}
```

### 1. Tambahkan v2 Maven BOM
<a name="migration-steps-example-step1"></a>

Tambahkan Maven BOM untuk SDK for Java 2.x ke POM di samping dependensi lain di bagian tersebut. `dependencyManagement` Jika file POM Anda memiliki BOM untuk v1 SDK, biarkan untuk saat ini. Ini akan dihapus pada langkah selanjutnya.

#### Manajemen Ketergantungan POM di awal
<a name="migration-example-boms"></a>

```
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.example</groupId>             <!--Existing dependency in POM. -->
      <artifactId>bom</artifactId>
      <version>1.3.4</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-bom</artifactId>  <!--Existing v1 BOM dependency. -->
      <version>1.11.1000</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
    <dependency>
      <groupId>software.amazon.awssdk</groupId>  <!--Add v2 BOM dependency. -->
      <artifactId>bom</artifactId>
      <version>2.27.21</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
```

### 2. Cari file untuk pernyataan impor kelas v1
<a name="migration-steps-example-step2"></a>

Cari kode aplikasi untuk kejadian unik. `import com.amazonaws.services` Ini membantu kami menentukan dependensi v1 yang digunakan oleh proyek. Jika aplikasi Anda memiliki file POM Maven dengan dependensi v1 terdaftar, Anda dapat menggunakan informasi ini sebagai gantinya. 

Untuk contoh ini kita menggunakan perintah [`ripgrep`(rg)](https://github.com/BurntSushi/ripgrep) untuk mencari basis kode.

Dari root basis kode Anda, jalankan `ripgrep` perintah berikut. Setelah `ripgrep` menemukan pernyataan impor, mereka disalurkan ke`cut`,`sort`, dan `uniq` perintah untuk mengisolasi SERVICE\$1. IDs 

```
rg --no-filename 'import\s+com\.amazonaws\.services' | cut -d '.' -f 4 | sort | uniq
```

Untuk aplikasi ini, SERVICE\$1 IDs berikut dicatat ke konsol.

```
autoscaling
cloudformation
ec2
identitymanagement
```

Ini menunjukkan bahwa setidaknya ada satu kemunculan dari masing-masing nama paket berikut yang digunakan dalam `import` pernyataan. Untuk tujuan kita, nama kelas individu tidak masalah. Kita hanya perlu menemukan SERVICE\$1 IDs yang digunakan.

```
com.amazonaws.services.autoscaling.*
com.amazonaws.services.cloudformation.*
com.amazonaws.services.ec2.*
com.amazonaws.services.identitymanagement.*
```

### 3. Tentukan dependensi Maven v2 dari pernyataan impor v1
<a name="migration-steps-example-step3"></a>

SERVICE\$1 IDs untuk v1 yang kami isolasi dari Langkah 2—misalnya `cloudformation` dan—dapat dipetakan ke `autoscaling` v2 SERVICE\$1ID yang sama untuk sebagian besar. Karena artifactID Maven v2 cocok dengan SERVICE\$1ID dalam banyak kasus, Anda memiliki informasi yang Anda perlukan untuk menambahkan blok ketergantungan ke file POM Anda.

Tabel berikut menunjukkan bagaimana kita dapat menentukan dependensi v2.


| v1 SERVICE\$1ID memetakan ke...nama paket | v2 SERVICE\$1ID memetakan ke...nama paket | v2 Ketergantungan Maven | 
| --- | --- | --- | 
|  **ec2** `com.amazonaws.services.ec2.*`  |  **ec2** `software.amazon.awssdk.services.ec2.*`  |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>ec2</artifactId><br /></dependency></pre>  | 
|  **penskalaan otomatis** `com.amazonaws.services.autoscaling.*`  |  **penskalaan otomatis** `software.amazon.awssdk.services.autoscaling.*`  |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>autoscaling</artifactId><br /></dependency></pre>  | 
| pembentukan awan`com.amazonaws.services.cloudformation.*` | pembentukan awan`software.amazon.awssdk.cloudformation.*` |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>cloudformation</artifactId><br /></dependency></pre>  | 
| manajemen identitas\$1`com.amazonaws.services.identitymanagement.*` | iam\$1`software.amazon.awssdk.iam.*` |  <pre><dependency><br />  <groupId>software.amazon.awssdk</groupId><br />  <artifactId>iam</artifactId><br /></dependency></pre>  | 

\$1 The `identitymanagement` to `iam` mapping adalah pengecualian di mana SERVICE\$1ID berbeda antar versi. Lihat pengecualian [Nama Package untuk pemetaan ArtifactID Maven](#migration-serviceid-artifactid-mapping) untuk jika Maven atau Gradle tidak dapat menyelesaikan ketergantungan v2.

### 4. Tambahkan elemen ketergantungan v2 ke file POM
<a name="migration-steps-example-step4"></a>

Pada langkah 3, kami menentukan empat blok ketergantungan yang perlu ditambahkan ke file POM. Kami tidak perlu menambahkan versi karena kami telah menentukan BOM di langkah 1. Setelah impor ditambahkan, file POM kami memiliki elemen ketergantungan berikut.

```
    ...
  <dependencies>
    ...
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>autoscaling</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>iam</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>cloudformation</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>ec2</artifactId>
    </dependency>
    ...
  </dependencies>
    ...
```

### 5. Dalam file Java, secara bertahap ubah kelas v1 ke kelas v2
<a name="migration-steps-example-step5"></a>

Dalam metode yang kita migrasi, kita lihat
+ Klien layanan EC2 dari`com.amazonaws.services.ec2.AmazonEC2Client`.
+ Beberapa kelas model EC2 digunakan. Misalnya `DescribeInstancesRequest` dan`DescribeInstancesResult`.

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.RegionUtils;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.CreateTagsRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesRequest;
import com.amazonaws.services.ec2.model.DescribeInstancesResult;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.ec2.model.TerminateInstancesRequest;
...
private static List<Instance> getRunningInstances(AmazonEC2Client ec2, List<String> instanceIds)
    List<Instance> runningInstances = new ArrayList<>();
    try {
        DescribeInstancesRequest request = new DescribeInstancesRequest()
                .withInstanceIds(instanceIds);
        DescribeInstancesResult result;
        do {
            // DescribeInstancesResponse is a paginated response, so use tokens with multiple re
            result = ec2.describeInstances(request);
            request.setNextToken(result.getNextToken());   // Prepare request for next page.
            for (final Reservation r : result.getReservations()) {
                for (final Instance instance : r.getInstances()) {
                    LOGGER.info("Examining instanceId: "+ instance.getInstanceId());
                    // if instance is in a running state, add it to runningInstances list.
                    if (RUNNING_STATES.contains(instance.getState().getName())) {
                        runningInstances.add(instance);
                    }
                }
            }
        } while (result.getNextToken() != null);
    } catch (final AmazonEC2Exception exception) {
        // if instance isn't found, assume its terminated and continue.
        if (exception.getErrorCode().equals(NOT_FOUND_ERROR_CODE)) {
            LOGGER.info("Instance probably terminated; moving on.");
        } else {
            throw exception;
        }
    }
    return runningInstances;
}
...
```

Tujuan kami adalah mengganti semua impor v1 dengan impor v2. Kami melanjutkan satu kelas pada satu waktu.

#### a. Ganti pernyataan impor atau nama kelas
<a name="migration-example-step5-substep1"></a>

Kita melihat bahwa parameter pertama untuk `describeRunningInstances` metode ini adalah `AmazonEC2Client` instance v1. Lakukan salah satu tindakan berikut:
+ Ganti impor untuk `com.amazonaws.services.ec2.AmazonEC2Client` dengan `software.amazon.awssdk.services.ec2.Ec2Client` dan ubah `AmazonEC2Client` ke`Ec2Client`.
+ Ubah tipe parameter menjadi `Ec2Client` dan biarkan IDE meminta kami untuk impor yang benar. IDE kami akan meminta kami untuk mengimpor kelas v2 karena nama klien berbeda— `AmazonEC2Client` dan`Ec2Client`. Pendekatan ini tidak berfungsi jika nama kelas sama di kedua versi.

#### b. Ganti kelas model v1 dengan setara v2
<a name="migration-example-step5-substep2"></a>

Setelah perubahan ke v2`Ec2Client`, jika kita menggunakan IDE, kita melihat kesalahan kompilasi dalam pernyataan berikut.

```
                    result = ec2.describeInstances(request);
```

Kesalahan kompilasi dihasilkan dari penggunaan instance v1 `DescribeInstancesRequest` sebagai parameter ke `Ec2Client` `describeInstances` metode v2. Untuk memperbaikinya, buat pernyataan penggantian atau impor berikut.


| menggantikan | dengan | 
| --- | --- | 
|  <pre>import com.amazonaws.services.ec2.model.DescribeInstancesRequest</pre>  |  <pre>import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest</pre>  | 

#### c. Ubah konstruktor v1 menjadi pembangun v2.
<a name="migration-example-step5-substep3"></a>

Kami masih melihat kesalahan kompilasi karena [tidak ada konstruktor di kelas v2](migration-whats-different.md#immutable-classes). Untuk memperbaikinya, buat perubahan berikut.


| perubahan | kepada | 
| --- | --- | 
|  <pre>final DescribeInstancesRequest request = new DescribeInstancesRequest()<br />        .withInstanceIds(instanceIdsCopy);</pre>  |  <pre>final DescribeInstancesRequest request = DescribeInstancesRequest.builder()<br />        .instanceIds(instanceIdsCopy)<br />        .build();</pre>  | 

#### d. Ganti objek `*Result` respons v1 dengan ekuivalen v2 `*Response`
<a name="migration-example-step5-substep4"></a>

Perbedaan yang konsisten antara v1 dan v2 adalah bahwa semua [objek respons di v2 diakhiri dengan `*Response` alih-alih. `*Result`](migration-whats-different.md#model-classname-changes) Ganti impor v1 ke `DescribeInstancesResult` impor v2,`DescribeInstancesResponse`.

#### d. Buat perubahan API
<a name="migration-example-step5-substep5"></a>

Pernyataan berikut membutuhkan beberapa perubahan.

```
request.setNextToken(result.getNextToken());
```

Dalam v2, [metode setter](migration-whats-different.md#setter-getter-methods) tidak menggunakan `set` atau dengan`prefix`. Metode getter yang diawali dengan `get` juga hilang di SDK for Java 2.x

Kelas model, seperti `request` instance, tidak dapat diubah di v2, jadi kita perlu membuat yang baru `DescribeInstancesRequest` dengan pembangun.

Dalam v2, pernyataan menjadi sebagai berikut.

```
request = DescribeInstancesRequest.builder()
        .nextToken(result.nextToken())
        .build();
```

#### d. Ulangi sampai metode dikompilasi dengan kelas v2
<a name="migration-example-step5-substep6"></a>

Lanjutkan dengan sisa kode. Ganti impor v1 dengan impor v2 dan perbaiki kesalahan kompilasi. Lihat [Referensi API v2 dan Referensi](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ec2/package-summary.html) [apa yang berbeda](migration-whats-different.md) sesuai kebutuhan.

Setelah kami memigrasikan metode tunggal ini, kami memiliki kode v2 berikut.

```
import com.amazonaws.ClientConfiguration;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.RegionUtils;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.CreateTagsRequest;
import com.amazonaws.services.ec2.model.InstanceStateName;
import com.amazonaws.services.ec2.model.Tag;
import com.amazonaws.services.ec2.model.TerminateInstancesRequest;

import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesResponse;
import software.amazon.awssdk.services.ec2.model.Ec2Exception;
import software.amazon.awssdk.services.ec2.model.Instance;
import software.amazon.awssdk.services.ec2.model.Reservation;
...
private static List<Instance> getRunningInstances(Ec2Client ec2, List<String> instanceIds) {
    List<Instance> runningInstances = new ArrayList<>();
        try {
            DescribeInstancesRequest request = DescribeInstancesRequest.builder()
                    .instanceIds(instanceIds)
                    .build();
            DescribeInstancesResponse result;
            do {
                // DescribeInstancesResponse is a paginated response, so use tokens with multiple re
                result = ec2.describeInstances(request);
                request = DescribeInstancesRequest.builder()   // Prepare request for next page.
                        .nextToken(result.nextToken())
                        .build();
                for (final Reservation r : result.reservations()) {
                    for (final Instance instance : r.instances()) {
                        // if instance is in a running state, add it to runningInstances list.
                        if (RUNNING_STATES.contains(instance.state().nameAsString())) {
                            runningInstances.add(instance);
                        }
                    }
                }
            } while (result.nextToken() != null);
        } catch (final Ec2Exception exception) {
            // if instance isn't found, assume its terminated and continue.
            if (exception.awsErrorDetails().errorCode().equals(NOT_FOUND_ERROR_CODE)) {
                    LOGGER.info("Instance probably terminated; moving on.");
            } else {
                throw exception;
            }
        }
        return runningInstances;
    }
...
```

Karena kami memigrasikan satu metode dalam file Java dengan delapan metode, kami memiliki campuran impor v1 dan v2 saat kami mengerjakan file. Kami menambahkan enam pernyataan impor terakhir saat kami melakukan langkah-langkahnya. 

Setelah kami memigrasikan semua kode, tidak akan ada lagi pernyataan impor v1.

### 6. Hapus dependensi v1 Maven dari impor POM dan v1 dari file
<a name="migration-steps-example-step6"></a>

Setelah kami memigrasikan semua kode v1 dalam file, kami memiliki pernyataan impor SDK v2 berikut.

```
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.regions.ServiceMetadata;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.CreateTagsRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesRequest;
import software.amazon.awssdk.services.ec2.model.DescribeInstancesResponse;
import software.amazon.awssdk.services.ec2.model.Ec2Exception;
import software.amazon.awssdk.services.ec2.model.Instance;
import software.amazon.awssdk.services.ec2.model.InstanceStateName;
import software.amazon.awssdk.services.ec2.model.Reservation;
import software.amazon.awssdk.services.ec2.model.Tag;
import software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest;
```

Setelah kita memigrasikan *semua* file dalam aplikasi kita, kita tidak lagi membutuhkan dependensi v1 dalam file POM kita. Hapus v1 BOM dari `dependencyManagement` bagian, jika menggunakan, dan semua blok ketergantungan v1.

### 7. Memfaktorkan ulang kode untuk menggunakan penyempurnaan API v2
<a name="migration-steps-example-step7"></a>

Untuk cuplikan yang telah kami migrasi, kami dapat menggunakan paginator v2 secara opsional dan membiarkan SDK mengelola permintaan berbasis token untuk lebih banyak data.

Kita dapat mengganti seluruh `do` klausa dengan yang berikut ini.

```
                DescribeInstancesIterable responses = ec2.describeInstancesPaginator(request);

                responses.reservations().stream()
                        .forEach(reservation -> reservation.instances()
                                .forEach(instance -> {
                                    if (RUNNING_STATES.contains(instance.state().nameAsString())) {
                                        runningInstances.put(instance.instanceId(), instance);
                                    }
                                }));
```

## Nama Package untuk pemetaan ArtifactID Maven
<a name="migration-serviceid-artifactid-mapping"></a>

Saat memigrasikan project Maven atau Gradle dari v1 SDK for Java ke v2, Anda perlu mencari tahu dependensi mana yang akan ditambahkan ke file build Anda. Pendekatan yang dijelaskan dalam [step-by-stepInstruksi migrasi dengan contoh](#migration-steps) (langkah 3) menggunakan nama paket dalam pernyataan import sebagai titik awal untuk menentukan dependensi (sebagai ArtifactIds) untuk ditambahkan ke file build Anda. 

Anda dapat menggunakan informasi dalam topik ini untuk memetakan nama paket v1 ke v2 Artifactids.

### Konvensi penamaan umum yang digunakan dalam nama paket dan Maven Artifactids
<a name="migration-naming-convention"></a>

Tabel berikut menunjukkan konvensi penamaan umum yang SDKs digunakan untuk SERVICE\$1ID tertentu. SERVICE\$1ID adalah pengidentifikasi unik untuk file. Layanan AWS Misalnya, SERVICE\$1ID untuk layanan Amazon S3 adalah `s3` dan merupakan SERVICE\$1ID untuk Identitas Amazon `cognitoidentity` Cognito.


| nama paket v1 (pernyataan impor) | v1 Artifactid | v2 Artifactid | v2 nama paket (pernyataan impor) | 
| --- | --- | --- | --- | 
| com.amazonaws.services.service\$1id | aws-java-sdk-SERVICE\$1ID | SERVICE\$1ID | Software.amazon.awssdk.services.service\$1id | 
|   | 
| Contoh untuk Identitas Amazon Cognito (SERVICE\$1ID:) cognitoidentity | 
| com.amazonaws.services. kognitoidentitas | aws-java-sdk- kognitoidentitas | kognitoidentitas | software.amazon.awssdk.services. kognitoidentitas | 

### Perbedaan SERVICE\$1ID
<a name="migration-serviceid-diffs"></a>

#### Dalam v1
<a name="migration-serviceid-diffs-withinv1"></a>

Dalam beberapa kasus, SERVICE\$1ID berbeda antara nama paket dan di ArtifactID untuk layanan yang sama. Misalnya, baris CloudWatch Metrik dari tabel berikut menunjukkan bahwa itu `metrics` adalah SERVICE\$1ID dalam nama paket tetapi `cloudwatchmetrics` merupakan SERVICE\$1ID ArtifactID.

#### Dalam v2
<a name="migration-serviceid-diffs-withinv2"></a>

Tidak ada perbedaan dalam SERVICE\$1ID yang digunakan dalam nama paket dan Artifactids.

#### Antara v1 dan v2
<a name="migration-serviceid-diffs-btwv1v2"></a>

Untuk sebagian besar layanan, SERVICE\$1ID di v2 sama dengan SERVICE\$1ID v1 di kedua nama paket dan Artifactids. Contoh dari ini adalah `cognitoedentity` SERVICE\$1ID seperti yang ditunjukkan pada tabel sebelumnya. Namun, beberapa SERVICE\$1 IDs berbeda antara SDKs seperti yang ditunjukkan pada tabel berikut.

**SERVICE\$1ID huruf tebal** di salah satu kolom v1 menunjukkan bahwa itu berbeda dari SERVICE\$1ID yang digunakan di v2.


| Nama layanan | nama paket v1 | v1 Artifactid | v2 Artifactid | v2 nama paket | 
| --- | --- | --- | --- | --- | 
|  |  Semua nama paket dimulai dengan `com.amazonaws.services` seperti yang ditunjukkan pada baris pertama.  |  Semua ArtifactID disertakan dalam tag seperti yang ditunjukkan pada baris pertama.  |  Semua ArtifactID disertakan dalam tag seperti yang ditunjukkan pada baris pertama.  |  Semua nama paket dimulai dengan `software.amazon.awssdk` seperti yang ditunjukkan pada baris pertama.  | 
|  | 
| API Gateway | com.amazonaws.services.apigateway | <artifactId>aws-java-sdk- api-gateway</artifactId> | <artifactId>apigateway</artifactId> | software.amazon.awssdk.services.apigateway | 
| Registri Aplikasi | appregistry | appregistry | servicecatalogappregistry | servicecatalogappregistry | 
| Penemuan Aplikasi | aplikasipenemuan | penemuan | aplikasipenemuan | aplikasipenemuan | 
| Runtime AI yang Augmented | augmentedairuntime | augmentedairuntime | sagemakera2iruntime | sagemakera2iruntime | 
| Certificate Manager | Certificatemanager | acm | acm | acm | 
| CloudControl API | cloudcontrolapi | cloudcontrolapi | cloudcontrol | cloudcontrol | 
| CloudSearch | cloudsearchv2 | cloudsearch | cloudsearch | cloudsearch | 
| CloudSearch Domain | cloudsearchdomain | cloudsearch | cloudsearchdomain | cloudsearchdomain | 
| CloudWatch Acara | cloudwatchevents | acara | cloudwatchevents | cloudwatchevents | 
| CloudWatch Terbukti | cloudwatchevident | cloudwatchevident | ternyata | ternyata | 
| CloudWatch Log | log | log | cloudwatchlogs | cloudwatchlogs | 
| CloudWatch Metrik | metrik | cloudwatchmetrics | cloudwatch | cloudwatch | 
| CloudWatch Rum | cloudwatchrum | cloudwatchrum | rum | rum | 
| Penyedia Identitas Cognito | cognitoidp | cognitoidp | penyedia cognitoidentityprovider | penyedia cognitoidentityprovider | 
| Kampanye Connect | connectcampaign | connectcampaign | connectcampaign | connectcampaign | 
| Connect Wisdom | connectwisdom | connectwisdom | kebijaksanaan | kebijaksanaan | 
| Database Migration Service | databasemigrationservice | dms | migrasi basis data | migrasi basis data | 
| DataZone | datazone | datazoneeksternal | datazone | datazone | 
| DynamoDB | dynamodbv2 | dynamodb | dynamodb | dynamodb | 
| Sistem File Elastis | sistem file elastis | efs | efs | efs | 
| Kurangi Peta Elastis | elasticmapreduce | emr | emr | emr | 
| Glue DataBrew | gluedatabrew | gluedatabrew | databrew | databrew | 
| IAM Roles Anywhere | iamrolesdi mana saja | iamrolesdi mana saja | peranandi mana saja | peranandi mana saja | 
| Manajemen Identitas | manajemen identitas | iam | iam | iam | 
| Data IoT | iotdata | iot | iotdataplane | iotdataplane | 
| Analisis Kinesis | kinesisanalitik | kinesis | kinesisanalitik | kinesisanalitik | 
| Kinesis Firehose | kinesisfirehose | kinesis | firehose | firehose | 
| Saluran Sinyal Video Kinesis | kinesisvideosignalingchannels | kinesisvideosignalingchannels | kinesisvideosignaling | kinesisvideosignaling | 
| Lex | lexruntime | lex | lexruntime | lexruntime | 
| Lookout Untuk Visi | lookoutforvision | lookoutforvision | lookoutvision | lookoutvision | 
| Modernisasi Mainframe | mainframemodernisasi | mainframemodernisasi | m2 | m2 | 
| Pengukuran Marketplace | pemeteran pasar | layanan marketplacemeteringservice | pemeteran pasar | pemeteran pasar | 
| Grafana yang Dikelola | managedgrafana | managedgrafana | grafana | grafana | 
| Mechanical Turk | mturk | mechanicalturkrequester | mturk | mturk | 
| Rekomendasi Strategi Migrasi Hub | Migrationhubstrategyrecommendations | Migrationhubstrategyrecommendations | Migrationhubstrategy | Migrationhubstrategy | 
| Nimble Studio | lincah studio | lincah studio | gesit | gesit | 
| 5G pribadi | private5g | private5g | privatenetworks | privatenetworks | 
| Prometheus | prometheus | prometheus | amp | amp | 
| Tempat Sampah Daur Ulang | Recyclebin | Recyclebin | rbin | rbin | 
| API Data Pergeseran Merah | redshiftdataapi | redshiftdataapi | data pergeseran merah | data pergeseran merah | 
| Route 53 | route53domain | route53 | route53domain | route53domain | 
| Manajer Tepi Pembuat Sage | sagemakeredgemanager | sagemakeredgemanager | sagemakeredge | sagemakeredge | 
| Token Keamanan | securitytoken | sts | sts | sts | 
| Migrasi Server | migrasi server | migrasi server | sms | sms | 
| Email Sederhana | email sederhana | ses | ses | ses | 
| Email Sederhana V2 | simpleemailv2 | sesv2 | sesv2 | sesv2 | 
| Manajemen Sistem Sederhana | manajemen sistem sederhana | ssm | ssm | ssm | 
| Alur Kerja Sederhana | alur kerja sederhana | alur kerja sederhana | swf | swf | 
| Step Functions | stepfungsi | stepfungsi | sfn | sfn | 