

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 마이그레이션 도구의 지원되지 않는 코드 패턴
<a name="migration-tool-unsupported-patterns"></a>

마이그레이션 도구는 대부분의 v1 코드를 v2로 자동 변환합니다. 그러나 일부 코드 패턴은 수동 마이그레이션이 필요합니다. 이 주제에서는 지원되지 않는 가장 일반적인 패턴의 세부 예제를 제공하고 이를 수동으로 변환하는 방법을 보여줍니다.

다음 패턴 목록이 전부는 아닙니다. 마이그레이션 도구를 실행한 후에도 코드가 컴파일되지 않으면 [단계별 마이그레이션 설명](migration-steps.md)에 따라 나머지 v1 코드를 수동으로 마이그레이션합니다.

## 파라미터를 사용하여 객체 생성자 요청
<a name="request-pojo-constructors"></a>

요청 POJO(Amazon S3 제외)의 경우 마이그레이션 도구는 setter 메서드만 변환합니다. 이 도구는 파라미터가 있는 생성자를 지원하지 않습니다.

**지원되는 패턴: setter를 사용하여 객체 요청(작성자 파라미터 없음)**

이전(원래 v1 코드):

```
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");
```

이후(마이그레이션 도구 결과):

```
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();
```

**지원되지 않는 패턴: 파라미터를 사용하여 객체 생성자 요청**

마이그레이션 도구는 파라미터가 있는 생성자를 변환할 수 없습니다.

수동 마이그레이션 전, 마이그레이션 도구 사용 후:

```
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");
```

마이그레이션 도구는 가져오기를 v2로 변환하지만 생성자 코드는 변경되지 않고 빌더 패턴을 사용하려면 수동 업데이트가 필요합니다.

수동 마이그레이션 후:

```
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();
```

## 개별 파라미터가 있는 서비스 클라이언트 메서드
<a name="service-client-method-overloads"></a>

마이그레이션 도구는 요청 객체(Amazon S3 제외) 대신 개별 파라미터를 사용하는 서비스 클라이언트 메서드를 변환할 수 없습니다.

이전(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");
```

이후(마이그레이션 도구 결과 - 컴파일되지 않음):

```
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");
```

요청 객체를 사용하려면 메서드 인수를 수동으로 업데이트해야 합니다.

```
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);
```

## 요청 제한 시간 메서드
<a name="request-pojo-timeout-configuration"></a>

마이그레이션 도구는 요청 객체에 제한 시간을 설정하는 메서드를 변환하지 않습니다.

이전(v1 코드):

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

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

이후(마이그레이션 도구 결과 - 컴파일되지 않음):

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

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

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

v2의 `overrideConfiguration` 메서드를 사용하려면 수동으로 마이그레이션해야 합니다.

```
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();
```

## 파라미터가 있는 서비스 클라이언트 생성자
<a name="service-client-constructors-with-args"></a>

마이그레이션 도구는 비어 있는 서비스 클라이언트 생성자를 변환하지만 자격 증명 또는 구성과 같은 파라미터를 허용하는 생성자는 변환할 수 없습니다.

이전(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);
```

이후(마이그레이션 도구 결과 - 컴파일되지 않음):

```
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);
```

빌더 패턴을 사용하려면 서비스 클라이언트 생성자를 수동으로 업데이트해야 합니다.

```
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();
```