Upload Part

この操作は、進行中のマルチパートアップロードに対してパートをアップロードするものです。

この操作を行う前に、Initiate Multipart Uploadを使用してマルチパートアップロードを開始しアップロードIDを取得しておく必要があります。このアップロードIDを用いてPUT Objectのようにパートをアップロードします。また、既存のオブジェクトを1パートとして使用する場合は、Upload Part (Copy)をご利用ください。

アップロードの際にはパートの識別子であるパート番号を指定する必要があります。このパート番号は、マルチパートアップロードをオブジェクト化する際のパート構成の指定に使用します。同じパート番号でアップロードした場合は上書きされますのでご注意ください。

この操作を行う利用者は、バケット所有者か対象バケットに対してバケットポリシーの dag:PutObject 権限を付与されている必要があります。
デフォルトではバケット所有者のみこの操作が許可されており、バケット所有者はバケットポリシーによって他のアカウントに権限を付与することができます。

Note

パートのアップロードには以下の制限がありますのでご注意ください。
  • マルチパートアップロードにおけるアップロード可能なパート数の上限は10000までです。
  • 最後のパートを除き1つのパートのサイズは5MB以上でなければなりません。

リクエスト情報

シンタックス

PUT /{object key}?partNumber={part number}&uploadId={upload ID} HTTP/1.1
Host: {bucket name}.storage-dag.iijgio.com
Date: {date}
Content-Length: {length}
Authorization: {authorization string}

リクエストパラメータ

この操作ではリクエストパラメータは使用しません。

リクエストヘッダー

この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。

表. Upload Part リクエストヘッダー一覧
HTTPヘッダー 説明 必須
Content-Length
RFC 2616に準拠したリクエストボディのサイズ
型:String
デフォルト値:なし
Content-MD5
Base64でエンコードされたRFC 1864に準拠した128ビットMD5のダイジェストメッセージ(ヘッダーなし)

送信データの保全チェックに用います。

型:String
デフォルト値:なし
×
Expect
100-continueを使用する場合、確認の応答を受信するまで、リクエストボディを送信しません。

リクエストヘッダー部でメッセージが拒否された場合、リクエストボディを送信しません。

型:String
デフォルト値:なし
有効な値:100-continue
×

サーバサイド暗号化でパートを暗号化する場合、以下のヘッダを指定します。

Warning

暗号化キーは本サービス内に保存されません。暗号化実施後に破棄します。暗号化キーはお客様が管理する必要があります。
暗号化キーが不明となった場合、オブジェクトの取得が出来なくなります。
表. Upload Part(サーバサイド暗号化) ヘッダ一覧
名前 説明 必須
x-iijgio-server-side-encryption-customer-algorithm サーバサイド暗号化で使用するアルゴリズムを指定します。値は”AES256”である必要があります。
x-iijgio-server-side-encryption-customer-key パートの暗号化に用いる暗号化キーを指定します。Base64でエンコードした値をセットします。暗号化キーの長さはBase64エンコード前で256ビットである必要があります。暗号化キーはパートの暗号化後に速やかに破棄されます。指定する暗号化キーはInitiate Multipart Uploadと同じ値である必要があります。
x-iijgio-server-side-encryption-customer-key-MD5 暗号化キーをMD5(128bit)でダイジェストし、Base64エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。

リクエストエレメント

この操作ではリクエストエレメントは使用しません。

レスポンス情報

レスポンスヘッダー

この操作では基本レスポンスヘッダーのみ返します。

レスポンスエレメント

この操作はレスポンスエレメントを返しません。

エラー情報

この操作は共通のエラーレスポンスに加え、以下の固有のエラーを返します。

表. Upload Part エラーコード一覧
コード ステータス 内容
NoSuchUpload 404 Not Found
指定したマルチパートアップロードが存在しません。
無効なアップロードIDを指定したか、指定したマルチパートアップロードが既に完了または中断している可能性があります。
InvalidArgument 400 Bad Request
以下のいずれかが原因です。
  • サーバサイド暗号化用のヘッダの指定に誤りがあります
  • httpsで通信をしていません
InvalidEncryptionAlgorithmError 400 Bad Request x-iijgio-server-side-encryption-customer-algorithに誤った値が指定されています。

サンプル

パート番号を1としてパートをアップロードする

リクエスト

PUT /myobject?partNumber=1&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
Host: mybucket.storage-dag.iijgio.com
Date: Wed, 1 Oct 2014 00:00:00 GMT
Content-Length: 10485760
Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==
Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=

{part data}

レスポンス

HTTP/1.1 200 OK
x-iijgio-id-2: eftixk72aD6Ap51TnqcoF8eFidJG9Z/2mkiDFu8yU9AS1ed4OpIszj7UDNEHGran
x-iijgio-request-id: 318BC8BC148832E5
Date: Wed, 1 Oct 2014 00:00:00 GMT
ETag: "b54357faf0632cce46e942fa68356b38"
Content-Length: 0
Connection: keep-alive
Server: storage-dag.iijgio.com

Upload Part (Copy)

この操作は、進行中のマルチパートアップロードに対して PUT Object (Copy) のように既存のオブジェクトをパートとしてコピーするものです。
通常のアップロードを行う場合は、 Upload Part をご覧ください。

この操作はコピー元とコピー先のバケットが同一リージョンに属するバケット間でも、異なるリージョンに属するバケット間でも実行することが出来ます。

この操作を行う前に、Initiate Multipart Uploadを使用してマルチパートアップロードを開始しアップロードIDを取得しておく必要があります。

この操作を行う利用者は、コピー先のバケットに対してバケット所有者か対象バケットに対してバケットポリシーの dag:PutObject 権限を付与されている必要があります。
また、コピー元のオブジェクト(ソースオブジェクト)に対して READ権限もしくは dag:GetObject 権限を付与されている必要があります。
デフォルトではバケット所有者のみこの操作が許可されており、バケット所有者はバケットポリシーによって他のアカウントに権限を付与することができます。

Note

パートのアップロードには以下の制限がありますのでご注意ください。
  • マルチパートアップロードにおけるアップロード可能なパート数の上限は10000までです。
  • 最後のパートを除き1つのパートのサイズは5MB以上でなければなりません。

リクエスト情報

シンタックス

PUT /{object key}?partNumber={part number}&uploadId={upload ID} HTTP/1.1
Host: {bucket name}.storage-dag.iijgio.com
x-iijgio-copy-source: /{source bucket}/{source object}
x-iijgio-copy-source-range:bytes={first}-{last}
x-iijgio-copy-source-if-match: {etag}
x-iijgio-copy-source-if-none-match: {etag}
x-iijgio-copy-source-if-unmodified-since: {time stamp}
x-iijgio-copy-source-if-modified-since: {time stamp}
Date: {date}
Authorization: {authorization string}

リクエストパラメータ

この操作ではリクエストパラメータは使用しません。

リクエストヘッダー

この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。

表. Upload Part (Copy) リクエストヘッダー一覧
HTTPヘッダー 説明 必須
x-iijgio-copy-source
バケット名とオブジェクトキー

バケット名とオブジェクトのキーはスラッシュ(/)で区切ります。

型:String
デフォルト値:なし

Warning

制約

この文字列はURLでコード化されてなければならなりません。さらに、バケットは有効でなければならず、ユーザはソースオブジェクトに対してREAD権限を持たなければなりません。

x-iijgio-copy-source-range
コピー元となるオブジェクトからコピーするデータ(Bytes)の範囲

この範囲の値は`bytes={first}-{last}`という形式で指定してください。(例:bytes=0-99)

型:String
デフォルト値:なし
×
x-iijgio-copy-source-if-match
ETagが指定のタグと一致する場合コピーを実行します。

一致しない場合には412 ステータスエラー(precondition failed)を返します。

型:String
デフォルト値:なし

Warning

制約

このヘッダーはx-iijgio-copy-source-if-unmodified-sinceヘッダーと併用できますが、他のコピー条件指定のヘッダーとは併用できません。

×
x-iijgio-copy-source-if-none-match
ETagが指定のタグとマッチしない場合コピーを実行します。

マッチする場合には412 ステータスエラー(precondition failed)を返します。

型:String
デフォルト値:なし

Warning

制約

このヘッダーはx-iijgio-copy-source-if-modified-sinceヘッダーと併用できますが、他のコピー条件指定のヘッダーとは併用できません。

×
x-iijgio-copy-source-if-unmodified-since
指定された時間以降にオブジェクトが更新されていなければ、コピーを実行し、その他の場合には412 ステータスエラー(precondition failed)を返します。
型:String
デフォルト値:None

Warning

制約

  • この文字列はHTTPで有効なDateでなければならなりません。
  • このヘッダーはx-iijgio-copy-source-if-matchヘッダーと併用できるが他のコピー条件指定のヘッダーとは併用できません。
×
x-iijgio-copy-source-if-modified-since
指定された時間以降にオブジェクトが更新されていれば、コピーを実行し、その他の場合には412 ステータスエラー(precondition failed)を返します。
型:String
デフォルト値:None

Warning

制約

  • この文字列はHTTPで有効なDateでなければならなりません。
  • このヘッダーはx-iijgio-copy-source-if-none-matchヘッダーと併用できますが、他のコピー条件指定のヘッダーとは併用できません。
×
x-iijgio-website-redirect-location
このオブジェクトに対するリクエストのリダイレクト先URL

このヘッダー要素は、指定のバケットのウェブサイトサポートが有効な場合に限り指定することができます。同じバケットの異なるオブジェクトへのリダイレクトであれば以下のようなURLを指定します。

x-iijgio-website-redirect-location: /another_object

また、外部のウェブサイトであれば以下のように絶対URLを指定します。

x-iijgio-website-redirect-location: http://www.example.com/
型:String
デフォルト値:なし

Warning

制約

  • この値は/またはhttp://,https://で始まる文字列でなければなりません。
  • この値のサイズは2KB以内でなければなりません。
×

パートをサーバサイド暗号化で暗号化する場合、以下のヘッダを指定します。

Warning

暗号化キーは本サービス内に保存されません。暗号化実施後に破棄します。暗号化キーはお客様が管理する必要があります。
暗号化キーが不明となった場合、オブジェクトの取得が出来なくなります。
表. Upload Part (Copy) リクエストヘッダー(サーバサイド暗号化) 一覧
名前 説明 必須
x-iijgio-server-side-encryption-customer-algorithm サーバサイド暗号化で使用するアルゴリズムを指定します。値は”AES256”である必要があります。
x-iijgio-server-side-encryption-customer-key パートの暗号化に用いる暗号化キーを指定します。Base64でエンコードした値をセットします。暗号化キーの長さはBase64エンコード前で256ビットである必要があります。暗号化キーはパートの暗号化後に速やかに破棄されます。指定する暗号化キーはInitiate Multipart Uploadと同じ値である必要があります。
x-iijgio-server-side-encryption-customer-key-MD5 暗号化キーをMD5(128bit)でダイジェストし、Base64エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。

コピーの元オブジェクト(x-iijgio-copy-sourceで指定したオブジェクト)がサーバサイド暗号化で暗号化されている場合、以下のヘッダを指定します。

表. Upload Part (Copy) リクエストヘッダー(サーバサイド暗号化 - Copy) 一覧
名前 説明 必須
x-iijgio-copy-source-server-side-encryption-customer-algorithm サーバサイド暗号化で使用するアルゴリズムを指定します。値は”AES256”である必要があります。
x-iijgio-copy-source-server-side-encryption-customer-key ソースオブジェクトの復号に用いる暗号化キーを指定します。Base64でエンコードした値をセットします。暗号化キーの長さはBase64エンコード前で256ビットである必要があります暗号化キーは対象オブジェクトの複号後に速やかに破棄されます。
x-iijgio-copy-source-server-side-encryption-customer-key-MD5 ソースオブジェクトの暗号化キーをMD5(128bit)でダイジェストし、Base64エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。

リクエストエレメント

この操作ではリクエストパラメータは使用しません。

レスポンス情報

レスポンスヘッダー

この操作では基本レスポンスヘッダーのみ返します。

レスポンスエレメント

この操作では以下のレスポンスエレメントを返します。

表. Upload Part (Copy) レスポンスエレメント一覧
名前 説明
CopyPartResult
レスポンスのルート要素となるコンテナ
型:Container
親:なし
ETag
新しいパートの ETag
型:String
親:CopyPartResult
LastModified
パートの最終更新日時
型:String
親:CopyPartResult

エラー情報

この操作は共通のエラーレスポンスに加え、以下の固有のエラーを返します。

表. Upload Part (Copy) エラーコード一覧
コード ステータス 内容
NoSuchUpload 404 Not Found
指定したマルチパートアップロードが存在しません。
無効なアップロードIDを指定したか、指定したマルチパートアップロードが既に完了または中断している可能性あります。
InvalidRequest 404 Not Found x-iijgio-copy-source-rangeで指定がサポートされていません。
InvalidArgument 400 Bad Request
以下のいずれかが原因です。
  • サーバサイド暗号化用のヘッダの指定に誤りがあります
  • ソースオブジェクトの暗号化に用いた暗号化キーと、リクエストの暗号化キーが一致しません。
  • httpsで通信をしていません
InvalidEncryptionAlgorithmError 400 Bad Request x-iijgio-server-side-encryption-customer-algorith,x-iijgio-copy-source-server-side-encryption-customer-algorithに誤った値が指定されています。

サンプル

異なるバケットのオブジェクトをコピーしてパートにする

リクエスト

PUT /target-object?partNumber=2&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
Host: target-bucket.storage-dag.iijgio.com
Date: Wed, 1 Oct 2014 00:00:00 GMT
x-iijgio-copy-source: /source-bucket/source-object
x-iijgio-copy-source-range:bytes=500-6291456
Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=

レスポンス

HTTP/1.1 200 OK
x-iijgio-id-2: eftixk72aD6Ap51TnqcoF8eFidJG9Z/2mkiDFu8yU9AS1ed4OpIszj7UDNEHGran
x-iijgio-request-id: 318BC8BC148832E5
Date: Wed, 1 Oct 2014 00:00:00 GMT
Server: storage-dag.iijgio.com

<CopyPartResult>
  <LastModified>2009-10-28T22:32:00</LastModified>
  <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyPartResult>

ページ先頭へ