

 [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 グローバルクライアント) をサポートします。クライアント設定で [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)に関するセクションを参照してください。