기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
고성능 S3 클라이언트 사용: AWS CRT 기반 S3 클라이언트
AWS Common Runtime(CRT)을 기반으로 구축된 AWS CRT 기반 S3 클라이언트는 대체 S3 비동기 클라이언트입니다. Amazon S3의 멀티파트 업로드 API와 바이트 범위 가져오기를 자동으로 사용하여 향상된 성능과 안정성을 바탕으로 Amazon Simple Storage Service(Amazon S3)와 객체를 주고 받습니다.
AWS CRT 기반 S3 클라이언트는 네트워크 장애 발생 시 전송 안정성을 개선합니다. 전송을 처음부터 다시 시작하지 않고 파일 전송의 실패한 개별 부분을 다시 시도하여 안정성이 향상됩니다.
또한 AWS CRT 기반 S3 클라이언트는 향상된 연결 풀링 및 DNS(도메인 이름 시스템) 로드 밸런싱을 제공하여 처리량도 개선합니다.
SDK의 표준 S3 비동기 클라이언트 대신 AWS CRT 기반 S3 클라이언트를 사용하고 개선된 처리량을 즉시 활용할 수 있습니다.
SDK의 AWS CRT 기반 구성 요소
이 항목에 설명된 AWS CRT 기반 S3 클라이언트와 AWS CRT 기반 HTTP 클라이언트는 SDK의 서로 다른 구성 요소입니다.
AWS CRT 기반 S3 클라이언트는 S3AsyncClientS3AsyncClient
인터페이스의 Java 기반 구현의 대안이며 여러 가지 이점을 제공합니다.
AWS CRT 기반 HTTP 클라이언트는 SdkAsyncHttpClientSdkAsyncHttpClient
인터페이스의 Netty 구현의 대안이며 여러 가지 이점을 제공합니다.
두 구성 요소 모두 AWS 공용 런타임의 라이브러리를 사용하지만 AWS CRT 기반 HTTP S3 클라이언트는 aws-c-s3 라이브러리
AWS CRT 기반 S3 클라이언트 사용을 위한 종속성 추가
AWS CRT 기반 S3 클라이언트를 사용하려면 Maven 프로젝트 파일에 다음 두 종속성을 추가하세요. 예제는 사용하는 최소 버전을 보여 줍니다. Maven 중앙 리포지토리에서 가장 최신 버전의 s3
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>
2.20.68
</version> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.21.16
</version> </dependency>
AWS CRT-based S3 클라이언트의 인스턴스를 만들기
다음 코드 조각과 같이 기본 설정을 사용하여 AWS CRT 기반 S3 클라이언트의 인스턴스를 생성합니다.
S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();
클라이언트를 구성하려면 AWS CRT 클라이언트 빌더를 사용하세요. 빌더 방법을 변경하여 표준 S3 비동기 클라이언트에서 AWS CRT 기반 클라이언트로 전환할 수 있습니다.
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_WEST_2) .targetThroughputInGbps(20.0) .minimumPartSizeInBytes(8 * 1025 * 1024L) .build();
참고
표준 빌더의 일부 설정은 AWS CRT 클라이언트 빌더에서 현재 지원되지 않을 수 있습니다. S3AsyncClient#builder()
를 호출하여 표준 빌더를 가져오세요.
AWS CRT 기반 S3 클라이언트를 사용
AWS CRT 기반 S3 클라이언트를 사용하여 Amazon S3 API 작업을 호출합니다. 다음 예제는 AWS SDK for Java를 통해 사용할 수 있는 PutObject
import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.PutObjectResponse; S3AsyncClient s3Client = S3AsyncClient.crtCreate(); // Upload a local file to Amazon S3. PutObjectResponse putObjectResponse = s3Client.putObject(req -> req.bucket(
<BUCKET_NAME>
) .key(<KEY_NAME>
), AsyncRequestBody.fromFile(Paths.get(<FILE_NAME>
))) .join(); // Download an object from Amazon S3 to a local file. GetObjectResponse getObjectResponse = s3Client.getObject(req -> req.bucket(<BUCKET_NAME>
) .key(<KEY_NAME>
), AsyncResponseTransformer.toFile(Paths.get(<FILE_NAME>
))) .join();