はじめに¶
このサイトは、「IIJオブジェクトストレージサービス(以下、「本サービス」)」で提供しているストレージのAPIリファレンスです。
ストレージの構成要素¶
サービス(Service)¶
サービスは1つの契約とその契約に紐付くすべてのバケットの集合を表したものです。
Note
バケット(Bucket)¶
Note
バケットには以下の制約があります。
1つのバケットに格納可能なオブジェクトの数に制限はありませんが、バケットは1契約につき最大で100個まで作成できます。
- バケット名については以下の規定に従わなければなりません。
- 小文字(a-z)、数字(0-9)、ピリオド(.)、アンダライン(_)、ダッシュ(-)で構成される。
- 数字または文字で開始する。
- 文字列の長さが3~63の範囲内である。
- IPアドレス表記でない(e.g., 192.168.5.4)。
- DNS命名規則に従うために、以下の規定に従うことを推奨します。
- アンダラインを使用しない。
- バケット名の終端にダッシュを使用しない。
- ピリオドを連続して使用しない。
- ピリオドの前後にダッシュを使用しない(e.g., “my-.bucket.com” 、”my.-bucket”)。
- 大文字を使用しない。
オブジェクト(Object)¶
オブジェクトはデータ、オブジェクトキー、メタデータから構成されます。
Note
オブジェクトキーは一連のUnicode文字で、UTF-8にエンコードした時のバイト長の最大サイズは950 Bytesです。メタデータに任意の値を設定するには、オブジェクトをアップロードする際にHTTPリクエストヘッダに指定します。
Note
オブジェクトの最大サイズは5TBです。また、5GB以上のデータをアップロードするには、マルチパートアップロード機能をご利用ください。
機能のご紹介¶
本サービスで提供する機能の概要を説明します。
ストレージ¶
HTTP/HTTPSを用いてデータの格納・取得操作を行えるシンプルなストレージです。
管理コンソールなどを利用することで、どこからでも気軽に使用できるオンラインストレージサービスとして使うことができます。また、RESTインタフェースのアプリケーションプログラミングインタフェース(API)を使用することで利用シーンに合わせた柔軟な操作を実現することもできます。
Note
ストレージのAPIはAmazon S3ライクなREST APIです。
マルチパートアップロード¶
オブジェクトの最大サイズは5TBですが、PUT Object APIでアップロードできるサイズは5GBまでという制限があります。マルチパートアップロードを使用することで、5GB以上のデータをアップロードできます。
マルチパートアップロードを使用すると、単一のオブジェクトをパート(断片的なデータ)のセットとしてアップロードできます。各パートは任意の順番でアップロードできます。
- マルチパートアップロードの利点として、
- 5GB以上のデータをアップロード可能
- 最大5TBのオブジェクトをアップロードできます。
- 一時的なネットワークの問題に強い
- アップロードの最中にネットワークの問題でエラーになってしまった場合に、影響範囲をアップロード中のパートのみに局所化できます。
- 並列でアップロードし、効率を上げられる
- 複数のパートを並列にアップロードすることで、単一のアップロード時よりもスループットが向上する場合があります。
Note
- マルチパートアップロードには以下の制限があります。
- 1つのマルチパートアップロードでアップロードできるパートの数は最大10,000までです。
- (終端となるパートを除き)各パートのサイズは5MB以上でなければなりません。
マルチパートアップロードの流れ¶
マルチパートアップロードは以下の手順で使用します。
- マルチパートアップロードの開始(初期化): Initiate Multipart Upload
- まず、マルチパートアップロードの開始を意味するマルチパートアップロードリソースを作成します。
- リソース作成の際に払い出されるアップロードIDを用いて以下の操作を行います。
- 各パートのアップロード: Upload Part
- Upload PartAPIを用いて各パートをアップロードします。
- この時、各パートの上限サイズは5GB以下、最後のパート以外は5MB以上の制限があります。
- マルチパートアップロードの完了: Complete Multipart Upload
- 全パートのアップロードが終わったら、Complete Multipart Uploadをおこないマルチパートアップロードを完了します。完了後は1つのオブジェクトが生成され、マルチパートアップロードに紐付くすべてのパートが破棄されます。
Note
マルチパートアップロードを中断するにはAbort Multipart Uploadを使用します。
静的Webサイトホスティング¶
静的Webサイトを本サービスでホスティングできます。
静的Webサイトとは、HTMLファイルやCSS、画像ファイル、JavaScriptなどの静的なコンテンツで構成されるWebサイトです。
静的Webサイトホスティングを利用するには、バケットに対してWebサイトホスティングの設定(PUT Bucket website)を行います。その後そのバケットに、読み取り可能な権限でコンテンツをアップロードすると、以下のWebサイトエンドポイントからアクセスできます。
<bucket-name>.website-dag.iijgio.com
カスタムドメインの使用¶
Webサイトホスティングの設定を行ったバケットは、以下の手順で独自のドメインを使用してコンテンツを配信できます。
- ドメインを作成する
ドメイン名登録サービスを利用してドメインを登録します。既にドメインが登録済みの場合はこのステップを省略できます。
- バケットの作成及び設定
- ドメイン名と同名のバケットを作成します。例えば、ドメイン(www.example.com)であれば www.example.com という名前のバケットを作成します。バケットの作成後、REST APIの PUT Bucket website を使用してWebサイトホスティング用の設定を行います。
- コンテンツのアップロード
- ホスティングするWebサイトの静的なコンテンツをバケットにアップロードします。この時、2. のWebサイトホスティング用の設定で指定した インデックスドキュメント と エラードキュメント が含まれるようにコンテンツを配置してください。
- コンテンツのアクセス権限の設定
- Webサイトを公開するためにACLまたはバケットポリシーで匿名ユーザに対してREAD権限を付与します。例: ドメインが www.example.com でバケットポリシーで権限を付与する場合は以下のように設定します。
{ "Version": "2008-10-17", "Statement": [{ "Sid": "AddPerm", "Effect": "Allow", "Principal": { "IIJGIO": "*" }, "Action": ["dag:GetObject"], "Resource": ["grn:iijgio:dag:::www.example.com/*"] } ] }
- DNSの設定
- CNAMEレコードとして、ドメインとWebサイトホスティングエンドポイントを紐付けます。例えば、 www.example.com の場合は、CNAMEタイプで www.example.com に対して <bucket-name>.website-dag.iijgio.com を登録します。
- 確認
- DNSに設定したドメインにアクセスしWebサイトが正しく動作することを確認します。例えば、ドメインが www.example.com の場合は以下のURLです。
http://www.example.com/
クロスサイトリクエスト¶
クロスサイトリクエスト(Cross-Origin Resource Sharing: CORS) は、要求を出すリソースが存在するドメインとは異なるドメインに対してHTTPリクエストを行うことを指します。
本サービスのクロスサイトリクエスト機能を使うことで、静的なコンテンツを本サービスで管理し外部のWebサイトからJavaScriptを使用してアクセスできます。クロスサイトリクエスト機能はPUT Bucket corsAPIでバケットに対して設定できます。
詳細はPUT Bucket corsをご覧ください。