Amazon S3 に関する考慮事項 - AWS SDK for JavaScript

AWS SDK for JavaScript V3 API リファレンスガイドでは、 AWS SDK for JavaScript バージョン3 (V3) のすべての API オペレーションについて詳しく説明します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 に関する考慮事項

Amazon S3 マルチパートアップロード

v2 では、Amazon S3 クライアントには、Amazon S3 が提供するマルチパートアップロード機能を使用した、ラージオブジェクトのアップロードをサポートする upload() オペレーションが含まれています。

v3 では、 @aws-sdk/lib-storage パッケージを使用できます。これは、v2 の upload() オペレーションで提供されるすべての機能をサポートし、Node.js ランタイムとブラウザランタイムの両方をサポートします。

Amazon S3 の署名付き URL

v2 では、Amazon S3 クライアントには、ユーザーが Amazon S3 からオブジェクトをアップロードまたはダウンロードするために使用できる URL を生成する getSignedUrl() および getSignedUrlPromise() オペレーションが含まれています。

v3 では、 @aws-sdk/s3-request-presigner パッケージを使用できます。このパッケージには、getSignedUrl() オペレーションと getSignedUrlPromise() オペレーションの両方の関数が含まれています。このブログ記事では、このパッケージの詳細について説明します。

Amazon S3 リージョンリダイレクト

誤ったリージョンが Amazon S3 クライアントに渡され、後続の PermanentRedirect (ステータス 301) エラーがスローされた場合、v3 の Amazon S3 クライアントはリージョンリダイレクト (v2 の旧 Amazon S3 グローバルクライアント) をサポートします。クライアント設定で followRegionRedirects フラグを使用することで、Amazon S3 クライアントにリージョンリダイレクトに従うように指定し、そのグローバルクライアントとしての機能をサポートできます。

注記

この機能は、ステータスが 301 の PermanentRedirect エラーを受信すると、失敗したリクエストが修正されたリージョンで再試行されるため、レイテンシーが増加する可能性があることに注意してください。この機能は、バケットのリージョンが事前にわからない場合にのみ使用してください。

Amazon S3 ストリーミングとバッファされたレスポンス

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.

詳細については、ソケットの枯渇に関するセクションを参照してください。