Amazon S3와 작업 - AWS SDK for Java 2.x

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

Amazon S3와 작업

이 섹션에서는 AWS SDK for Java 2.x를 사용하여 Amazon S3로 작업하는 경우의 배경 정보를 제공합니다. 이 섹션에서는 이 가이드의 코드 예제 섹션에 제시된 Amazon S3 Java v2 예제를 보완합니다.

의 S3 클라이언트 AWS SDK for Java 2.x

는 다양한 유형의 S3 클라이언트를 AWS SDK for Java 2.x 제공합니다. 다음 표는 차이점을 보여주며 이를 통해 사용 사례에 가장 적합한 것을 결정할 수 있습니다.

Amazon S3 클라이언트의 다양한 종류
S3 클라이언트 간단한 설명 사용해야 하는 경우 제한 및 단점

AWS CRT 기반 S3 클라이언트

인터페이스: S3AsyncClient

Builder: S3CrtAsyncClientBuilder

  • Java 기반 S3 비동기식 클라이언트와 동일한 비동기식 API 작업을 제공하지만 향상된 성능이 특징입니다.

  • aws-crt 종속성이 필요합니다.

  • 자동 병렬 전송(멀티파트)을 지원합니다.

성능 S3 클라이언트: AWS CRT 기반 S3 클라이언트 사용을(를) 참조하세요.

  • 애플리케이션에서 대용량 객체(8MB 초과)를 전송하며, 성능 극대화가 필요합니다.

  • 콘텐츠 길이를 알 수 없는 객체를 업로드하려고 합니다.

  • 처리량과 성능을 개선하는 향상된 연결 풀링 및 DNS 로드 밸런싱이 필요합니다.

  • 네트워크 장애가 발생할 경우 전송 신뢰성을 개선해야 합니다. 각 실패한 부분은 전송을 처음부터 다시 시작하지 않고 재시도됩니다.

  • Java 기반 S3 클라이언트보다 적은 구성 설정을 지원합니다.

  • 추가 종속성이 필요합니다.

멀티파트가 사용 설정된 Java 기반 S3 비동기식 클라이언트

인터페이스: S3AsyncClient

Builder: S3AsyncClientBuilder

  • 비동기식 API를 제공합니다.

  • 만들 때 멀티파트를 사용 설정하면 자동 병렬 전송(멀티파트)이 지원됩니다.

병렬 전송을 사용하도록 Java 기반 S3 비동기식 클라이언트 구성을(를) 참조하세요.

  • 애플리케이션에서 대용량 객체를 전송하며, 성능 향상이 필요합니다.

  • 콘텐츠 길이를 알 수 없는 객체를 업로드하려고 합니다.

  • 네트워크 장애가 발생할 경우 전송 신뢰성을 개선해야 합니다. 각 실패한 부분은 전송을 처음부터 다시 시작하지 않고 재시도됩니다.

  • AWS CRT 기반 S3 클라이언트에서 사용할 수 없는 구성 옵션이 필요합니다.

AWS CRT 기반 S3 클라이언트보다 성능이 떨어집니다.

멀티파트가 사용 설정되지 않은 Java 기반 S3 비동기식 클라이언트

인터페이스: S3AsyncClient

Builder: S3AsyncClientBuilder

  • 비동기식 API를 제공합니다.

  • 8MB 미만의 객체를 전송하고 있습니다.

  • 비동기식 API를 원합니다.

성능 최적화가 필요하지 않습니다.

Java 기반 S3 동기식 클라이언트

인터페이스: S3Client

Builder: S3ClientBuilder

  • 동기식 API를 제공합니다.

  • 8MB 미만의 객체를 전송하고 있습니다.

  • 동기식 API가 필요합니다.

성능 최적화가 필요하지 않습니다.

참고

버전 2.18.x 이상에서는 엔드포인트 재정의를 포함할 때 가상 호스팅 방식 주소 지정을 AWS SDK for Java 2.x 사용합니다. 이는 버킷 이름이 유효한 DNS 레이블인 한 적용됩니다.

true에서 forcePathStyle 메서드를 호출하여 클라이언트가 버킷에 경로 스타일 주소 지정을 사용하도록 강제합니다.

다음 예제는 엔드포인트 재정의 및 경로 스타일 주소 지정을 사용하여 구성된 서비스 클라이언트를 보여줍니다.

S3Client client = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://s3.us-west-2.amazonaws.com")) .forcePathStyle(true) .build();