AWS SDK for Java 1.x와 2.x의 차이점은 무엇입니까? - AWS SDK for Java 2.x

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

AWS SDK for Java 1.x와 2.x의 차이점은 무엇입니까?

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

패키지 이름 변경 사항

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 프로젝트 설정 단원에 나와 있습니다.

참고

SDK 1.x의 여러 패키지 이름에는 다음이 포함됩니다. v2v2 경우에 를 사용한다는 것은 일반적으로 패키지의 코드가 서비스 버전 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 추가

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

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

프로젝트를 버전 side-by-side 2.x로 마이그레이션할 때 버전 1.x 및 2.x를 사용할 수도 있습니다.

변경이 불가능한 POJO

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

예 1.x의 요청 객체 업데이트
DescribeAlarmsRequest request = new DescribeAlarmsRequest(); DescribeAlarmsResult response = cw.describeAlarms(request); request.setNextToken(response.getNextToken());
예 2.x의 요청 객체 업데이트
DescribeAlarmsRequest request = DescribeAlarmsRequest.builder().build(); DescribeAlarmsResponse response = cw.describeAlarms(request); request = DescribeAlarmsRequest.builder() .nextToken(response.nextToken()) .build();

세터 및 게터 메서드

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

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

예 1.x에서 세터 메서드를 사용하는 경우
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion("us-east-1") .build();
예 2.x에서의 세터 메서드 사용
DynamoDbClient client = DynamoDbClient.builder() .region(Region.US_EAST_1) .build();
예 1.x에서 게터 메서드를 사용하는 경우
String token = request.getNextToken();
예 2.x에서 게터 메서드를 사용하는 경우
String token = request.nextToken();

모델 클래스 이름

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

예 v1의 응답을 나타내는 클래스 이름
CreateApiKeyResult AllocateAddressResult
예 v2의 응답을 나타내는 클래스 이름
CreateApiKeyResponse AllocateAddressResponse

라이브러리 및 유틸리티의 마이그레이션 상태

Java용 SDK 라이브러리 및 유틸리티

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

버전 1.12.x 이름 버전 2.x 이름 버전 2.x 이상
DynamoDBMapper DynamoDbEnhancedClient 2.12.0
Waiters Waiters 2.15.0
CloudFrontUrlSigner, CloudFrontCookieSigner CloudFrontUtilities 2.18.33
TransferManager S3 TransferManager 2.19.0
EC2 Metadata 클라이언트 EC2 Metadata 클라이언트 2.19.29
S3 URI 파서 S3 URI 파서 2.20.41
IAM 정책 빌더 IAM 정책 빌더 2.20.126
Amazon SQS 클라이언트 측 버퍼링 자동 요청 일괄 처리 아직 릴리스되지 않음
진행 상황 리스너 진행 상황 리스너 아직 릴리스되지 않음

관련 라이브러리

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

Java용 SDK 버전 2.x와 함께 사용되는 이름 버전 이후
Amazon S3 암호화 클라이언트 3.0.0 1
AWS DynamoDB용 데이터베이스 암호화 클라이언트 3.0.0 2

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

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

2 DynamoDB용 AWS 데이터베이스 암호화 클라이언트는 다음과 같은 Maven 종속성을 사용하여 사용할 수 있습니다.

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

라이브러리 및 유틸리티의 마이그레이션 세부 정보