

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

# AWS SDK for Java 1.x와 2.x의 차이점
<a name="migration-whats-different"></a>

이 섹션에서는 애플리케이션을 버전 1.x에서 AWS SDK for Java 버전 2.x로 변환할 때 알아야 할 주요 변경 사항에 대해 설명합니다.

## 패키지 이름 변경 사항
<a name="mig-diff-package-name-change"></a>

SDK for Java 1.x에서 SDK for Java 2.x로의 눈에 띄는 변화는 패키지 이름 변경입니다. 패키지 이름은 SDK 2.x에서 `software.amazon.awssdk`로 시작하는 반면 SDK 1.x에서는 `com.amazonaws`를 사용합니다.

이러한 동일한 이름이 Maven 아티팩트를 SDK 1.x에서 SDK 2.x로 구분합니다. SDK 2.x용 Maven 아티팩트는 `software.amazon.awssdk` groupId를 사용하는 반면 SDK 1.x는 `com.amazonaws` groupId를 사용합니다.

SDK 2.x 아티팩트만 사용하는 프로젝트에 대한 `com.amazonaws` 종속성이 코드에 필요한 경우가 몇 번 있습니다. 이에 대한 한 가지 예는 서버 측에서 작업하는 경우입니다. AWS Lambda이 내용은 이 가이드 앞부분의 [Apache Maven 프로젝트 설정](setup-project-maven.md#modules-dependencies) 단원에 나와 있습니다.

**참고**  
SDK 1.x의 여러 패키지 이름에는 다음이 포함됩니다. `v2` 이 `v2` 경우에 를 사용한다는 것은 일반적으로 패키지의 코드가 서비스 버전 2에서 작동하도록 타겟팅되었음을 의미합니다.  
전체 패키지 이름이 로 `com.amazonaws` 시작되므로 SDK 1.x 구성 요소입니다. SDK 1.x에서 이러한 패키지 이름의 예는 다음과 같습니다.  
`com.amazonaws.services.dynamodbv2`
`com.amazonaws.retry.v2`
`com.amazonaws.services.apigatewayv2`
`com.amazonaws.services.simpleemailv2`

## 프로젝트에 버전 2.x 추가
<a name="adding-v2"></a>

Maven은 AWS SDK for Java 2.x를 사용할 때 종속성을 관리하는 권장 방법입니다. 프로젝트에 버전 2.x 구성 요소를 추가하려면 SDK에 대한 종속 항목으로 `pom.xml` 파일을 업데이트합니다.

**Example**  

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

<dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>dynamodb</artifactId>
    </dependency>
</dependencies>
```

또한 프로젝트를 버전 2.x로 마이그레이션할 때 [버전 1.x 및 2.x 단계를 사용](migration-side-by-side.md)할 수 있습니다.

## 변경이 불가능한 POJO
<a name="immutable-classes"></a>

클라이언트와 작업 요청 및 응답 객체는 이제 변경할 수 없으며 생성 후에는 변경할 수 없습니다. 요청 또는 응답 변수를 재사용하려면 새 객체를 만들어 해당 변수에 할당해야 합니다.

**Example 1.x의 요청 객체 업데이트**  

```
DescribeAlarmsRequest request = new DescribeAlarmsRequest();
DescribeAlarmsResult response = cw.describeAlarms(request);

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

**Example 2.x의 요청 객체 업데이트**  

```
DescribeAlarmsRequest request = DescribeAlarmsRequest.builder().build();
DescribeAlarmsResponse response = cw.describeAlarms(request);

request = DescribeAlarmsRequest.builder()
        .nextToken(response.nextToken())
        .build();
```

## setter 및 getter 메서드
<a name="setter-getter-methods"></a>

 AWS SDK for Java 2.x에서 설정자 메서드 이름에는 `set` 또는 `with` 접두사가 포함되지 않습니다. 예를 들어 `*.withEndpoint()`은 `*.endpoint()`입니다.

getter 메서드 이름은 `get` 접두사를 사용하지 않습니다.

**Example 1.x에서 setter 메서드 사용**  

```
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
        		.withRegion("us-east-1")
        		.build();
```

**Example 2.x에서 setter 메서드 사용**  

```
DynamoDbClient client = DynamoDbClient.builder()
        		.region(Region.US_EAST_1)
        		.build();
```

**Example 1.x에서 getter 메서드 사용**  

```
String token = request.getNextToken();
```

**Example 2.x에서 getter 메서드 사용**  

```
String token = request.nextToken();
```

## 모델 클래스 이름
<a name="model-classname-changes"></a>

서비스 응답을 나타내는 모델 클래스 이름은 v1이 사용하는 `Result` 대신 v2의 `Response`로 끝납니다.

**Example v1에서 응답을 나타내는 클래스 이름**  

```
CreateApiKeyResult
AllocateAddressResult
```

**Example v2에서 응답을 나타내는 클래스 이름**  

```
CreateApiKeyResponse
AllocateAddressResponse
```

## 라이브러리 및 유틸리티의 마이그레이션 상태
<a name="migration-libraries-utilities"></a>

### Java용 SDK 라이브러리 및 유틸리티
<a name="migration-java-sdk-libs-utils"></a>

다음 표에는 SDK for Java에 대한 라이브러리 및 유틸리티의 마이그레이션 상태가 나열되어 있습니다.


| 버전 1.12.x 이름 | 버전 2.x 이름 | 버전 2.x 이상 | 
| --- | --- | --- | 
| DynamoDBMapper | [DynamoDbEnhancedClient](dynamodb-enhanced-client.md) | 2.12.0 | 
| Waiters | [Waiters](waiters.md) | 2.15.0 | 
| CloudFrontUrlSigner와 CloudFrontCookieSigner | [CloudFrontUtilities](https://aws.amazon.com/blogs/developer/amazon-cloudfront-signed-urls-and-cookies-are-now-supported-in-aws-sdk-for-java-2-x/) | 2.18.33 | 
| TransferManager | [S3TransferManager](transfer-manager.md) | 2.19.0 | 
| EC2 Metadata 클라이언트 |  [EC2 Metadata 클라이언트](examples-ec2-IMDS.md)  | 2.19.29 | 
| S3 URI 파서 |  [S3 URI 파서](https://aws.amazon.com/blogs/devops/s3-uri-parsing-is-now-available-in-aws-sdk-for-java-2-x/)  | 2.20.41 | 
| IAM 정책 빌더 | [IAM 정책 빌더](feature-iam-policy-builder.md) | 2.20.126 | 
| S3 이벤트 알림 | [S3 이벤트 알림](examples-s3-event-notifications.md#s3-event-notification-read) | 2.25.11  | 
| Amazon SQS 클라이언트 측 버퍼링 | [Amazon SQS용 자동 요청 배치 처리 API](sqs-auto-batch.md) | 2.28.0 | 
| 진행 상황 리스너 | 진행 상황 리스너 | [아직 릴리스되지 않음](https://github.com/aws/aws-sdk-java-v2/issues/25) | 

### 관련 라이브러리
<a name="migration-other-sdks"></a>

다음 표에는 별도로 출시되었지만 Java용 SDK 2.x와 호환되는 라이브러리가 나열되어 있습니다.


| Java용 SDK 버전 2.x와 함께 사용되는 이름 | 버전 이후 | 
| --- | --- | 
|  [Amazon S3 암호화 클라이언트](https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide/what-is-s3-encryption-client.html)  |  3.0.01  | 
| [AWS DynamoDB용 Database Encryption SDK](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java.html) | 3.0.02 | 

#### 1Amazon S3 암호화 클라이언트
<a name="migration-s3-encryption-sdk"></a>

Amazon S3용 암호화 클라이언트는 다음 Maven 종속성을 사용하여 사용할 수 있습니다.

```
<dependency>
    <groupId>software.amazon.encryption.s3</groupId>
    <artifactId>amazon-s3-encryption-client-java</artifactId>
    <version>{{3.x}}</version>
</dependency>
```

#### 2AWS DynamoDB용 데이터베이스 암호화 SDK
<a name="migration-ddb-encryption-sdk"></a>

DynamoDB용 AWS Database Encryption SDK는 다음 Maven 종속성을 사용하여 V2에 사용할 수 있습니다.

```
<dependency> 
    <groupId>software.amazon.cryptography</groupId>
    <artifactId>aws-database-encryption-sdk-dynamodb</artifactId>
    <version>{{3.x}}</version>
</dependency>
```

Java SDK의 v1에서 작동하는 DynamoDB용 암호화 라이브러리에 대한 정보는 [AWS Database Encryption SDK 개발자 안내서](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/java.html)(*Java용 Amazon DynamoDB Encryption Client*) 및 [GitHub](https://github.com/aws/aws-dynamodb-encryption-java)에서 확인할 수 있습니다.

Java SDK의 V2와 호환되는 DynamoDB 암호화 라이브러리에 대한 자세한 내용은 [AWS Database Encryption SDK 개발자 안내서](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java.html) 및 [GitHub 소스](https://github.com/aws/aws-database-encryption-sdk-dynamodb)를 참조하세요.

암호화 라이브러리에 대한 마이그레이션 정보는 [AWS Database Encryption SDK 개발자 안내서](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java-migrate.html)에서 확인할 수 있습니다.

### 라이브러리 및 유틸리티에 대한 마이그레이션 세부 정보
<a name="migrate-libs-utils-details"></a>
+ [Transfer Manager](migration-s3-transfer-manager.md)
+ [EC2 메타데이터 유틸리티](migration-imds.md)
+ [CloudFront 사전 서명](migration-cloudfront-presigning.md)
+ [S3 URI 구문 분석](migration-s3-uri-parser.md)
+ [DynamoDB 매핑/문서 API](migration-ddb-mapper.md) 
+ [IAM 정책 빌더](migration-iam-policy-builder.md)
+ [S3 이벤트 알림](migration-s3-event-notification.md)
+ SDK 지표 게시([1.x 설명서](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/generating-sdk-metrics.html), [2.x 설명서](metrics.md))