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

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

Amazon S3와 작업

이 섹션에서는를 사용하여 Amazon S3 작업에 대한 배경 정보를 제공합니다 AWS SDK for Java 2.x. 이 섹션에서는이 가이드의 코드 예제 섹션에 제시된 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

빌더: S3CrtAsyncClientBuilder

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

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

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

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

  • 애플리케이션은 대용량 객체(> 8MB)를 전송하므로 성능을 극대화해야 합니다.

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

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

  • 네트워크 장애 발생 시 전송 안정성을 개선해야 합니다. 처음부터 전송을 다시 시작하지 않고 개별 실패한 부분을 다시 시도합니다.

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

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

멀티파트 활성화된 Java 기반 S3 비동기 클라이언트

인터페이스: S3AsyncClient

빌더: S3AsyncClientBuilder

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

  • 생성 시 멀티파트를 활성화할 때 자동 병렬 전송(멀티파트)을 지원합니다.

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

  • 애플리케이션은 큰 객체를 전송하므로 성능을 개선해야 합니다.

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

  • 네트워크 장애 발생 시 전송 안정성을 개선해야 합니다. 처음부터 전송을 다시 시작하지 않고 개별 실패한 부분을 다시 시도합니다.

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

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

멀티파트가 활성화되지 않은 Java 기반 S3 비동기 클라이언트

인터페이스: S3AsyncClient

빌더: S3AsyncClientBuilder

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

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

  • 비동기 API를 원합니다.

성능 최적화가 없습니다.

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

인터페이스: S3Client

빌더: 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();