사용AWS SDK for Java2.x - AWS SDK for Java

이제 을 사용할 수 있습니다.Amazon S3전송 관리자 (개발자 미리 보기)의AWS SDK for Java빠른 파일 전송의 경우 2.x입니다. 한 번 시도해보고어떻게 생각하는지 알려주세요!

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

사용AWS SDK for Java2.x

의 단계를 수행한 후SDK 설정을 (를) 요청할 준비가 되었습니다.AWS다음과 같은 서비스Amazon S3,DynamoDB,IAM,Amazon EC2등.

서비스 클라이언트 생성

에 요청을 생성하려면AWS 서비스를 사용하여 먼저 정적 팩토리 메서드를 사용하여 해당 서비스의 클라이언트로 사용할 객체를 인스턴스화해야 합니다.builder. 그런 후 빌더의 Setter를 사용하여 사용자 지정합니다. 유용한 setter 메서드는 builder 객체를 반환해 읽기 쉽고 편리하도록 메서드 호출을 묶을 수 있게 도와줍니다. 원하는 속성을 구성한 후에는 build 메서드를 호출하여 클라이언트를 생성할 수 있습니다.

예를 들어, 이 코드 스니펫은Ec2Client서비스 클라이언트로서의 객체Amazon EC2:

Region region = Region.US_WEST_2; Ec2Client ec2Client = Ec2Client.builder() .region(region) .build();
참고

SDK의 서비스 클라이언트는 스레드 세이프입니다. 최상의 성능을 위해 수명이 긴 객체로 처리합니다. 각 클라이언트마다 클라이언트에서 가비지가 수집될 때 릴리스되는 고유한 연결 풀 리소스가 있습니다.

서비스 클라이언트 객체는 변경할 수 없으므로 요청을 수행하는 각 서비스에 대해 새 클라이언트를 만들거나 동일한 서비스에 대한 요청을 만들기 위해 다른 구성을 사용해야 합니다.

다음을 지정합니다.Region모든 서비스에 클라이언트 빌더가 필요하지 않습니다.AWS그러나 애플리케이션에서 수행하는 API 호출에 대한 리전을 설정하는 것이 가장 좋습니다. 단원을 참조하십시오.AWS리전 선택자세한 내용은 단원을 참조하십시오.

기본 클라이언트 사용

클라이언트 빌더에는 create라는 또 다른 팩토리 메서드가 있습니다. 기본 구성을 사용해 서비스 클라이언트를 생성하는 메서드입니다. 기본 공급자 체인을 사용하여 자격 증명과AWS 리전. 자격 증명 또는 리전을 애플리케이션이 실행 중인 환경에서 확인할 수 없으면 create 호출이 실패합니다. 단원을 참조하십시오.자격 증명 사용리전 선택자격 증명 및 리전을 확인하는 방법에 대한 자세한 내용은 단원을 참조하십시오.

예를 들어, 이 코드 조각은DynamoDbClient서비스 클라이언트로서의 객체Amazon DynamoDB:

DynamoDbClient dynamoDbClient = DynamoDbClient.create();

요청 만들기

서비스 클라이언트를 사용하여 해당 서비스를 요청합니다.AWS 서비스.

예를 들어, 이 코드 조각은RunInstancesRequest새 을 생성할 객체Amazon EC2인스턴스:

RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder() .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1) .build(); ec2Client.runInstances(runInstancesRequest);

응답 처리

응답 처리기를 사용하여 응답을 다시 처리합니다.AWS서비스.

예를 들어, 이 코드 조각은RunInstancesResponse응답을 처리할 객체Amazon EC2인쇄하여instanceId위의 요청에서 새 인스턴스에 대해 다음을 수행합니다.

RunInstancesResponse runInstancesResponse = ec2Client.runInstances(runInstancesRequest); System.out.println(runInstancesResponse.instances().get(0).instanceId());

클라이언트 닫기

서비스 클라이언트가 더 이상 필요하지 않으면 닫습니다.

ec2Client.close();
참고

서비스 클라이언트는AutoClosable인터페이스이지만 모범 사례입니다. 특히 다음과 같은 수명이 짧은 코드의 경우AWS Lambda함수 - 명시적으로close()메서드.

예외 처리

SDK는 런타임 (또는 확인되지 않은) 예외를 사용하여 오류 처리를 세부적으로 제어하고 응용 프로그램에 따라 예외 처리가 확장되도록 보장합니다.

원래 요청 ping에 대한SdkServiceException또는 하위 클래스 중 하나가 SDK가 throw하는 가장 일반적인 예외 형태입니다. 이러한 예외는AWS서비스. 또한 를 처리할 수 있습니다.SdkClientException클라이언트 측 (예: 개발 또는 응용 프로그램 환경) 에 문제가 있는 경우 네트워크 연결 실패가 발생합니다.

이 코드 조각은 파일을 업로드하는 동안 서비스 예외를 처리하는 한 가지 방법을 보여줍니다.Amazon S3.

Region region = Region.US_WEST_2; s3Client = S3Client.builder() .region(region) .build(); try { PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket(bucketName) .key(key) .build(); s3Client.putObject(putObjectRequest, RequestBody.fromString("SDK for Java test")); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); }

단원을 참조하십시오.예외 처리자세한 내용은 단원을 참조하십시오.

Water 사용

에서 새 테이블을 만드는 것과 같이 일부 요청은 처리하는 데 시간이 걸립니다.DynamoDB또는 새 생성Amazon S3버킷. 코드가 계속 실행되기 전에 리소스가 준비되었는지 확인하려면Waiter.

예를 들어, 이 코드 조각은 에서 새 테이블 (“MyTable”) 을 만듭니다.DynamoDB, 테이블이ACTIVEstatus 를 누른 다음 응답을 출력합니다.

DynamoDbClient dynamoDbClient = DynamoDbClient.create(); DynamoDbWaiter dynamoDbWaiter = dynamoDbClient.waiter(); WaiterResponse<DescribeTableResponse> waiterResponse = dynamoDbWaiter.waitUntilTableExists(r -> r.tableName("myTable")); waiterResponse.matched().response().ifPresent(System.out::println);

단원을 참조하십시오.Water 사용자세한 내용은 단원을 참조하십시오.

서비스 클라이언트 구성

서비스 클라이언트의 구성을 사용자 지정하려면 팩토리 메서드의 Setter를 사용하십시오.builder. 편의를 위해 보다 읽기 쉬운 코드를 만들기 위해 여러 구성 옵션을 설정하도록 메서드를 체인으로 연결합니다.

예를 들어 다음 코드 조각을 참조합니다.

ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .retryPolicy(RetryPolicy.builder().numRetries(10).build()) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); Region region = Region.US_WEST_2; S3Client s3Client = S3Client.builder() .region(region) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder(ApacheHttpClient.builder() .proxyConfiguration(proxyConfig.build(ProxyConfiguration.builder())) .build()) .build();

HTTP 클라이언트

를 사용하여 빌드하는 응용 프로그램에서 HTTP 클라이언트에 대한 기본 구성을 변경할 수 있습니다.AWS SDK for Java. HTTP 클라이언트 및 설정을 구성하는 방법에 대한 자세한 내용은 단원을 참조하십시오.HTTP 구성.

Retries

재시도 모드 및 백오프 전략을 포함하여 서비스 클라이언트에서 재시도에 대한 기본 설정을 변경할 수 있습니다. 자세한 내용은 단원을 참조하십시오.RetryPolicy수업의AWS SDK for JavaAPI 참조입니다.

재시도에 대한 자세한 내용은 단원을 참조하십시오.AWS서비스, 참조의 오류 재시도 횟수 및 지수 백오프AWS.

Timeouts

다음을 사용하여 각 서비스 클라이언트에 대한 시간 초과를 구성할 수 있습니다.apiCallTimeoutapiCallAttemptTimeoutSetters. 이apiCallTimeoutseting은 클라이언트가 API 호출 실행을 완료할 수 있는 시간입니다. 이apiCallAttemptTimeout는 HTTP 요청이 포기되기 전에 HTTP 요청이 완료될 때까지 대기하는 시간입니다.

자세한 내용은 단원을 참조하십시오.apiCallTimeoutapiCallAttemptTimeout의AWS SDK for JavaAPI 참조입니다.

Execution 인터셉터

요청/응답 수명 주기의 다른 부분에서 API 요청 및 응답의 실행을 가로채는 코드를 작성할 수 있습니다. 이를 통해 지표를 게시하고, 진행 중인 요청을 수정하고, 요청 처리를 디버깅하고, 예외를 보는 등의 작업을 수행할 수 있습니다. 자세한 내용은 단원을 참조하십시오.ExecutionInterceptor인터페이스의AWS SDK for JavaAPI 참조입니다.

추가 정보