3.4.2. アップロードファイル管理(ダイレクトアップロード方式)

3.4.2.1. Overview

本ガイドラインでは、クラウドネイティブなアプリケーションにおけるアップロードファイルの管理方法のうち、インターネットストレージへファイルをダイレクトアップロードする方式について説明する。

3.4.2.1.1. 想定する要件

写真等のメディア共有サイトでは、多数のユーザから日常的に大量のデータがアップロードされる為、 Webアプリケーションを中継してファイルをアップロードする方式では、ネットワークを始めとしたサーバのリソース負荷が課題となる。 本ガイドラインでは、ファイルアップロードの際にネットワークやWebアプリケーションサーバのリソース負荷を抑えたいという要件を想定し、ダイレクトアップロード方式を紹介する。

3.4.2.1.2. ダイレクトアップロード方式のイメージ

本ガイドラインで紹介する方式では、クライアントとインターネットストレージ間で直接ファイルアップロードを行う。 ダイレクトアップロード方式の概要図を以下に示す。

Screen image of file upload.
項番 説明
(1)
クライアント(ブラウザ)はアプリケーションに対して、ファイルアップロードの要求を行う。
(2)
アプリケーションは、クラウドサービスから、ファイルアップロードに使用する一時的な資格情報を取得する。
(3)
アプリケーションは、クラウドサービスから取得した一時的な資格情報をクライアントに返却する。
(4)
クライアントは、アプリケーションから取得した一時的な資格情報を使用し、ストレージサービスにファイルをアップロードする。

Note

本方式では、有効期限が設定された一時的な資格情報を使用してアップロードすることで、セキュリティレベルを高めている。 資格情報は、有効期限を極力短く設定するものとし、リクエストを受けたタイミングで都度発行する。

3.4.2.1.3. ダイレクトアップロード方式における留意点

3.4.2.1.3.1. クロスオリジン制約

本ガイドラインで紹介する方式では、サーバアプリケーションから取得したインターネットストレージのURLに対し、ブラウザからXMLHttpRequestを使用してダイレクトアクセスを行うが、 その際、サーバアプリケーションとインターネットストレージが異なるドメインに存在する事によるクロスオリジンアクセスを考慮する必要がある。 利用するインターネットストレージがCORS対応している場合には、ストレージ側にてCORS設定を行う事で対応可能である。 クラウドベンダごとに必要な対応については、本ガイドラインのクラウドベンダ個別の章にて説明する。

クロスオリジンアクセスについての詳細は、CORS(Cross-Origin Resource Sharing)を参照されたい。

3.4.2.2. How to use

3.4.2.2.1. クラウドベンダの利用

クラウドベンダが提供するストレージサービスを利用し、ファイルのダイレクトアップロードを行う。 ストレージサービスの利用方法については、各クラウドサービスのリファレンスを参照されたい。

3.4.2.2.1.1. Amazon Web Service

クラウドベンダとしてAWSを使用する場合、AWS SDK for JavaおよびJavaScriptを使用して、ブラウザからのダイレクトアップロードを実現できる。

実装方法については アップロードファイル管理(ダイレクトアップロード方式) を参照。