

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

# Amazon S3와 작업
<a name="examples-s3"></a>

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

## 의 S3 클라이언트 AWS SDK for Java 2.x
<a name="s3-clients"></a>

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


**Amazon S3 클라이언트의 다양한 종류**  

| S3 클라이언트 | 간단한 설명 | 사용해야 하는 경우 | 제한 및 단점 | 
| --- | --- | --- | --- | 
| **AWS CRT 기반 S3 클라이언트**<br />인터페이스: [S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html)<br />Builder: [S3CrtAsyncClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html) | +  Java 기반 S3 비동기식 클라이언트와 동일한 비동기식 API 작업을 제공하지만 향상된 성능이 특징입니다. <br />+  `aws-crt` 종속성이 필요합니다. <br />+  자동 병렬 전송(멀티파트)을 지원합니다. [성능 S3 클라이언트: AWS CRT 기반 S3 클라이언트 사용](crt-based-s3-client.md)을(를) 참조하세요. |  +  애플리케이션에서 대용량 객체(8MB 초과)를 전송하며, 성능 극대화가 필요합니다. <br />+  콘텐츠 길이를 알 수 없는 객체를 업로드하려고 합니다. <br />+  처리량과 성능을 개선하는 향상된 연결 풀링 및 DNS 로드 밸런싱이 필요합니다. <br />+  네트워크 장애가 발생할 경우 전송 신뢰성을 개선해야 합니다. 각 실패한 부분은 전송을 처음부터 다시 시작하지 않고 재시도됩니다.   |  +  Java 기반 S3 클라이언트보다 [적은 구성 설정](crt-based-s3-client.md#crt-based-s3-client-limitations)을 지원합니다. <br />+  추가 종속성이 필요합니다.   | 
| **멀티파트가 *사용 설정된* Java 기반 S3 비동기식 클라이언트**<br />인터페이스: [S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html)<br />Builder: [S3AsyncClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClientBuilder.html) | +  비동기식 API를 제공합니다. <br />+  만들 때 멀티파트를 사용 설정하면 자동 병렬 전송(멀티파트)이 지원됩니다. [병렬 전송을 사용하도록 Java 기반 S3 비동기식 클라이언트 구성](s3-async-client-multipart.md)을(를) 참조하세요. |  +  애플리케이션에서 대용량 객체를 전송하며, 성능 향상이 필요합니다. <br />+  콘텐츠 길이를 알 수 없는 객체를 업로드하려고 합니다. <br />+  네트워크 장애가 발생할 경우 전송 신뢰성을 개선해야 합니다. 각 실패한 부분은 전송을 처음부터 다시 시작하지 않고 재시도됩니다. <br />+   AWS CRT 기반 S3 클라이언트에서 사용할 수 없는 [구성 옵션이](crt-based-s3-client.md#crt-based-s3-client-limitations) 필요합니다.   |  AWS CRT 기반 S3 클라이언트보다 성능이 떨어집니다. | 
| **멀티파트가 *사용 설정되지 않은* Java 기반 S3 비동기식 클라이언트**<br />인터페이스: [S3AsyncClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html)<br />Builder: [S3AsyncClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClientBuilder.html) |  +  비동기식 API를 제공합니다.   |  +  8MB 미만의 객체를 전송하고 있습니다. <br />+  비동기식 API를 원합니다.   | 성능 최적화가 필요하지 않습니다. | 
| **Java 기반 S3 동기식 클라이언트**<br />인터페이스: [S3Client](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html)<br />Builder: [S3ClientBuilder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html) |  +  동기식 API를 제공합니다.   |  +  8MB 미만의 객체를 전송하고 있습니다. <br />+  동기식 API가 필요합니다.   | 성능 최적화가 필요하지 않습니다. | 

**참고**  
버전 2.18.x 이상에서는 엔드포인트 재정의를 포함할 때 [가상 호스팅 방식 주소 지정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access)을 AWS SDK for Java 2.x 사용합니다. 이는 버킷 이름이 유효한 DNS 레이블인 한 적용됩니다.  
`true`에서 [`forcePathStyle`](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3BaseClientBuilder.html#forcePathStyle(java.lang.Boolean) 메서드를 호출하여 클라이언트가 버킷에 경로 스타일 주소 지정을 사용하도록 강제합니다.  
다음 예제는 엔드포인트 재정의 및 경로 스타일 주소 지정을 사용하여 구성된 서비스 클라이언트를 보여줍니다.  

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

**Topics**
+ [SDK의 S3 클라이언트](#s3-clients)
+ [S3에 스트림 업로드](best-practices-s3-uploads.md)
+ [미리 서명된 URL](examples-s3-presign.md)
+ [교차 리전 액세스](s3-cross-region.md)
+ [체크섬을 통한 데이터 무결성 보호](s3-checksums.md)
+ [고성능 S3 클라이언트 사용](crt-based-s3-client.md)
+ [병렬 전송 지원 구성](s3-async-client-multipart.md)
+ [파일 및 디렉터리 전송](transfer-manager.md)
+ [S3 이벤트 알림](examples-s3-event-notifications.md)