POST Object

ウェブブラウザベースのアップロード形式で指定のバケットオブジェクトを追加します(PUT Objectの代替手段です)。
PUT Object のHTTPヘッダーで渡されていたパラメータは、POSTのmultipart/form-dataでエンコードされたメッセージボディ内のフォームフィールドとして渡されます。
この操作を行うユーザは、オブジェクトを追加するバケットに対しWRITE権限を付与されていなければなりません。
本サービスはオブジェクトの部分的な保存は行いません。成功のレスポンスはオブジェクト全体を保存したことを意味します。
リクエストボディより先にリクエストヘッダーを送信する設定にするには100-continue HTTPステータスコードを使用します。ヘッダー部でメッセージが拒否された場合にはボディは送信されません。
同一のオブジェクトに対し、ほぼ同時に複数の書き込みの要求を受けた場合には最後に書かれた内容で上書きされます。
データが破損していないことを確実にするためにContent-MD5を用います。 Content-MD5 を用いることで、あらかじめ計算しておいたMD5ハッシュ値とアップロードしたオブジェクトのMD5ハッシュ値が比較され正しくアップロードされたことを確認できます。

 

リクエスト情報

シンタックス
POST /{destination bucket name}/{object key} HTTP/1.1
Host: s3api.iot.iij.jp
User-Agent: {browser data}
Accept: {file types}
Accept-Language: {regions}
Accept-Encoding: {file encoding}
Accept-Charset: {character set}
Keep-Alive: 300
Connection: keep-alive
Content-Type: multipart/form-data; boundary={boundary}
Content-Length: {length}
--{boundary}
Content-Disposition: form-data; name="key"

{destication object key}
--{boundary}
Content-Disposition: form-data; name="success_action_redirect"

{success redirect URL}
--{boundary}
Content-Disposition: form-data; name="Content-Type"

{content type}
--{boundary}
Content-Disposition: form-data; name="x-iijgio-meta-{metadata key}"

{metadata value}
--{boundary}
Content-Disposition: form-data; name="IIJGIOAccessKeyId"

{access key id}
--{boundary}
Content-Disposition: form-data; name="policy"

{encoded policy}
--{boundary}
Content-Disposition: form-data; name="signature"

signature={signature string}
--{boundary}
Content-Disposition: form-data; name="file"; filename="{file name}"
Content-Type: {file content type}

{file content}
--{boundary}
Content-Disposition: form-data; name="submit"

{Upload to s3api.iot.iij.jp}
--{boundary}--

 

リクエストパラメータ

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

リクエストヘッダー

この操作では基本リクエストヘッダーのみ使用します。

フォームフィールド

表. POST Object フォームフィールド一覧

HTTPヘッダー説明必須
IIJGIOAccessKeyId

オブジェクト所有者のアクセスキーID

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

制約

リクエストにpolicyドキュメントが含まれている場合、必須

Cache-Control, Content-Type, Content-Disposition, Content-Encoding

REST特有のヘッダー
詳細は PUT Object をご覧ください。

  • 型:String
  • デフォルト値:なし
×
expires

有効期限ミリ秒で指定します。

  • 型:Integer
  • デフォルト値:なし
×
file

ファイル、またはテキストコンテンツ
フォーム内の最後のフィールドでなければなりません。
一度に1ファイルのみアップロードすることができます。

  • 型:Fileまたはテキストデータ
  • デフォルト値:なし
×
key

アップロードされたキー名
ユーザに提供されたファイル名を利用するには${filename}を使用します。

  • 型:String
  • デフォルト値:なし
×
policy

リクエストで許可されていることについて記述するセキュリティポリシー
ポリシーのないリクエストは匿名であり、パブリックに書き込み可能なバケットへの操作とみなされます。

  • 型:String
  • デフォルト値:なし
×
signature

認証に用いる署名
POST PolicyをHMAC SHA-1を使って、Secret Access Keyで署名した値をBase64エンコードしてセットします。

  • 型:String
  • デフォルト値:なし
△(policyが設定されている場合必須)
success_action_redirect, redirect

アップロード成功時にクライアントがリダイレクトされるURL

success_action_redirectが指定されていない場合、本サービスはsuccess_action_statusフィールドで指定された空のドキュメントタイプを返します。
本サービスがURLを解釈できない場合、そのフィールドが存在しないかのように動作します。
アップロードが失敗した場合、本サービスはエラーを表示し、リダイレクトを行いません。

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

redirectのフィールド名は推奨しません。将来的にredirectのフィールド名はサポート対象外になる可能性があります。

×
success_action_status

success_action_redirectが指定されていない場合、アップロード成功時にクライアントに返されるステータスコード

200、201、204(デフォルト値)が有効な値となります。
200または204が設定された場合、本サービスは200または204ステータスコードを伴う空のドキュメントを返します。
201が設定された場合、本サービスは201ステータスコードを伴うXMLドキュメントを返します。
値が設定されていない場合または無効な値が設定された場合、204ステータスコードを伴う空のドキュメントを返します。

  • 型:String
  • デフォルト値:なし
×
x-iijgio-meta-*

ユーザーメタデータ

この接頭辞で始まる全ての項目がユーザーメタデータであるとみなされます。内容の解釈は行われません。

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

オブジェクトを サーバサイド暗号化 で暗号化する場合、以下のフォームフィールドを追加で指定します。

暗号化キーは本サービス内に保存されません。暗号化実施後に破棄します。暗号化キーはお客様が管理する必要があります。
暗号化キーが不明となった場合、オブジェクトの取得が出来なくなります。

表. POST Object フォームフィールド(サーバサイド暗号化)一覧

フォームフィールド説明必須
x-iijgio-server-side-encryption-customer-algorithm暗号化で使用するアルゴリズムを指定します。値は”AES256”である必要があります。
x-iijgio-server-side-encryption-customer-key暗号化で使用する暗号化キーを指定します。Base64でエンコードした値をセットします。暗号化キーの長さはBase64エンコード前で256ビットである必要があります。 暗号化キーは対象オブジェクトの暗号化後に速やかに破棄されます。
x-iijgio-server-side-encryption-customer-key-MD5

暗号化に利用した暗号化キーのMD5値を返します。

  • 型:String

 

レスポンス情報

レスポンスヘッダー

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

レスポンスエレメント

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

エラー情報

この操作では以下のエラーを返します。

表. POST Object エラーコード一覧

コードステータス内容
InvalidAccessKeyId403 Forbidden指定のアクセスキーIDを持つユーザが存在しません。
SignatureDoesNotMatch403 Forbidden指定されたリクエストのシグネチャが一致しません。
IncorrectNumberOfFilesInPostRequest400 Bad Requestリクエストで複数のファイルが指定されています。
MalformedPOSTRequest400 Bad Requestボディが multipart/form-data として正しい形式ではありません。
MaxMessageLengthExceeded400 Bad Requestリクエストのサイズが長すぎます。
MaxpostPreDataLengthExceededError400 Bad Requestリクエスト中のファイル指定部分のサイズが大きすぎます。
InvalidPolicyDocument400 Bad Requestフォームの内容が、policy document 内に定義された条件に合っていません。
EntityTooSmall400 Bad Requestファイルが許容最低サイズよりも小さいです。
EntityTooLarge400 Bad Requestファイルが許容最大サイズよりも大きいです。
KeyTooLong400 Bad Requestオブジェクトのkeyが許容サイズを超えています。
MetadataTooLarge400 Bad Requestメタデータのサイズが許容サイズを超えています。
InvalidArgument400 Bad Request

以下のいずれかが原因です。サーバサイド暗号化用のフォームフィールドの指定に誤りがありますhttpsで通信をしていません

InvalidEncryptionAlgorithmError400 Bad Requestx-iijgio-server-side-encryption-customer-algorithに誤った値が指定されています。

 

サンプル 

リクエスト
POST /quotes/Neo HTTP/1.1
Content-Length: 4
Host: s3api.iot.iij.jp
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
Content-Type: text/plain
Expect: the 100-continue HTTP status code
ObjectContent
レスポンス
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
x-iijgio-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7
x-iijgio-request-id: 0A49CE4060975EAC
x-iijgio-version-id: default
Date: Wed, 12 Oct 2009 17:50:00 GMT
ETag: "1b2cf535f27731c974343645a3985328"
Content-Length: 0
Connection: close