

 [AWS SDK for JavaScript V3 API 참조 안내서](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)는 AWS SDK for JavaScript 버전 3(V3)의 모든 API 작업을 자세히 설명합니다.

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

# Amazon S3 고려 사항
<a name="migrate-s3"></a>

## Amazon S3 멀티파트 업로드
<a name="s3-multipart-upload"></a>

 v2에서 Amazon S3 클라이언트에는 [Amazon S3에서 제공하는 멀티파트 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) 기능을 사용하여 대용량 객체 업로드를 지원하는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property) 작업이 포함되어 있습니다.

 v3에서는 [https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage) 패키지를 사용할 수 있습니다. v2 `upload()` 작업에서 제공되는 모든 기능을 지원하며 Node.js 및 브라우저 런타임을 모두 지원합니다.

## Amazon S3에 미리 서명된 URL
<a name="s3-presigned-url"></a>

 v2에서 Amazon S3 클라이언트에는 사용자가 Amazon S3에서 객체를 업로드하거나 다운로드하는 데 사용할 수 있는 URL을 생성하는 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property) 및 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrlPromise-property) 작업이 포함되어 있습니다.

 v3에서는 [https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner) 패키지를 사용할 수 있습니다. 이 패키지에는 `getSignedUrl()` 및 ` getSignedUrlPromise()` 작업 모두에 대한 함수가 포함되어 있습니다. 이 [블로그 게시물](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/)에서 이 패키지의 세부 정보를 설명합니다.

## Amazon S3 리전 리디렉션
<a name="s3-global-client-region-redirects"></a>

잘못된 리전이 Amazon S3 클라이언트에 전달되고 후속 ` PermanentRedirect`(상태 301) 오류가 발생하는 경우 v3의 Amazon S3 클라이언트는 리전 리디렉션(이전에는 v2의 Amazon S3 Global Client라고 함)을 지원합니다. 클라이언트 구성에서 [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-middleware-sdk-s3/Interface/S3InputConfig/) 플래그를 사용하여 Amazon S3 클라이언트가 리전 리디렉션을 따르고 글로벌 클라이언트로서 해당 기능을 지원하도록 할 수 있습니다.

**참고**  
상태가 301인 `PermanentRedirect` 오류를 수신하면 실패한 요청이 수정된 리전으로 재시도되므로 이 기능으로 인해 추가 지연 시간이 발생할 수 있습니다. 이 기능은 버킷의 리전을 사전에 알지 못하는 경우에만 사용해야 합니다.

## Amazon S3 스트리밍 및 버퍼링된 응답
<a name="amazon-s3-stream-vs-buffer"></a>

 v3 SDK는 잠재적으로 큰 응답을 버퍼링하지 않는 것을 선호합니다. 이는 일반적으로 v2에서 `Buffer`를 반환했지만 v3에서 `Stream`을 반환하는 Amazon S3 `GetObject` 작업에서 발생합니다.

 Node.js의 경우 스트림 또는 가비지 수집 클라이언트 또는 요청 핸들러를 사용하여 소켓을 해제하여 새 트래픽에 대한 연결을 열어 두어야 합니다.

```
// v2
const get = await s3.getObject({ ... }).promise(); // this buffers consumes the stream already.
```

```
// v3, consume the stream to free the socket
const get = await s3.getObject({ ... }); // object .Body has unconsumed stream
const str = await get.Body.transformToString(); // consumes the stream

// other ways to consume the stream include writing it to a file,
// passing it to another consumer like an upload, or buffering to
// a string or byte array.
```

 자세한 내용은 [소켓 소진](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#request-handler-requesthandler) 섹션을 참조하세요.