View a markdown version of this page

POST (AWS 署名バージョン 4) を使用したブラウザベースのアップロード - Amazon Simple Storage Service

POST (AWS 署名バージョン 4) を使用したブラウザベースのアップロード

このセクションでは、HTTP POST リクエストを使用してブラウザを介して Amazon S3 に直接ファイルをアップロードする方法について説明します。また、ブラウザベースの Amazon S3 へのファイルアップロードに AWS Amplify JavaScript ライブラリを使用する方法に関する情報も含まれています。

HTTP POST を使用したブラウザベースのアップロード

Amazon S3 は HTTP POST リクエストをサポートしているため、ユーザーはコンテンツを Amazon S3 に直接アップロードできます。POST を使用すると、エンドユーザーは認証情報を保護する安全な中間ノードを介してデータを渡すことなく、リクエストを認証できます。したがって、HTTP POST はレイテンシーを低減する可能性があります。

次の図は、Amazon S3 の POST リクエストを使用したアップロードを示しています。

S3 PUT ワークフロー (顧客からサーバーを経由して S3 へ) と、POST ワークフロー (顧客から S3 への直接転送) の比較。
  1. ユーザーはウェブブラウザからページにアクセスします。

  2. ウェブページには、ユーザーがコンテンツを Amazon S3 にアップロードするために必要なすべての情報が含まれている HTML フォームがあります。

  3. ユーザーはウェブブラウザを介して Amazon S3 にコンテンツをアップロードします。

ブラウザベースの POST リクエストを送信するプロセスは次のとおりです。

  1. オブジェクトをアップロードできるバケット名や、作成中のオブジェクトに許可するキー名のプレフィックスなど、リクエストで許可する条件を指定するセキュリティポリシーを作成します。

  2. ポリシーに基づく署名を作成します。認証されたリクエストの場合、フォームには有効な署名とポリシーが含まれている必要があります。

  3. ユーザーが Amazon S3 バケットにオブジェクトをアップロードするためにアクセスできる HTML フォームを作成します。

次のセクションでは、リクエストを認証する署名を作成する方法について説明します。フォームの作成とセキュリティポリシーの詳細については、「HTML フォームの作成 (AWS 署名バージョン 4 を使用)」を参照してください。

署名の計算

認証されたリクエストの場合、HTML フォームにはセキュリティポリシーと署名のためのフィールドを含める必要があります。

StringToSign、署名キー、および署名。

署名を計算するには
  1. UTF-8 エンコーディングを使用してポリシーを作成します。

  2. UTF-8 エンコードされたポリシーのバイトを base64 に変換します。結果は、StringToSign です。

  3. 署名キーを作成します。

  4. 署名キーを使用して、HMAC-SHA256 署名アルゴリズムを使用して StringToSign に署名します。

HTML フォーム、セキュリティポリシー、および例の作成の詳細については、以下を参照してください。