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 リクエストを使用したアップロードを示しています。
-
ユーザーはウェブブラウザからページにアクセスします。
-
ウェブページには、ユーザーがコンテンツを Amazon S3 にアップロードするために必要なすべての情報が含まれている HTML フォームがあります。
-
ユーザーはウェブブラウザを介して Amazon S3 にコンテンツをアップロードします。
ブラウザベースの POST リクエストを送信するプロセスは次のとおりです。
-
オブジェクトをアップロードできるバケット名や、作成中のオブジェクトに許可するキー名のプレフィックスなど、リクエストで許可する条件を指定するセキュリティポリシーを作成します。
-
ポリシーに基づく署名を作成します。認証されたリクエストの場合、フォームには有効な署名とポリシーが含まれている必要があります。
-
ユーザーが Amazon S3 バケットにオブジェクトをアップロードするためにアクセスできる HTML フォームを作成します。
次のセクションでは、リクエストを認証する署名を作成する方法について説明します。フォームの作成とセキュリティポリシーの詳細については、「HTML フォームの作成 (AWS 署名バージョン 4 を使用)」を参照してください。
署名の計算
認証されたリクエストの場合、HTML フォームにはセキュリティポリシーと署名のためのフィールドを含める必要があります。
-
セキュリティポリシー (「POST ポリシー」を参照) は、リクエストで許可される内容を制御します。
-
セキュリティポリシーは、署名計算の
StringToSign(「リクエストへの署名の概要」を参照) です。
署名を計算するには
-
UTF-8 エンコーディングを使用してポリシーを作成します。
-
UTF-8 エンコードされたポリシーのバイトを base64 に変換します。結果は、
StringToSignです。 -
署名キーを作成します。
-
署名キーを使用して、HMAC-SHA256 署名アルゴリズムを使用して
StringToSignに署名します。
HTML フォーム、セキュリティポリシー、および例の作成の詳細については、以下を参照してください。