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
| △ | ||
Cache-Control, Content-Type, Content-Disposition, Content-Encoding | REST特有のヘッダー
| × | ||
expires | 有効期限ミリ秒で指定します。
| × | ||
file | ファイル、またはテキストコンテンツ
| × | ||
key | アップロードされたキー名
| × | ||
policy | リクエストで許可されていることについて記述するセキュリティポリシー
| × | ||
signature | 認証に用いる署名
| △(policyが設定されている場合必須) | ||
success_action_redirect, redirect | アップロード成功時にクライアントがリダイレクトされるURL success_action_redirectが指定されていない場合、本サービスはsuccess_action_statusフィールドで指定された空のドキュメントタイプを返します。
| × | ||
success_action_status | success_action_redirectが指定されていない場合、アップロード成功時にクライアントに返されるステータスコード 200、201、204(デフォルト値)が有効な値となります。
| × | ||
x-iijgio-meta-* | ユーザーメタデータ この接頭辞で始まる全ての項目がユーザーメタデータであるとみなされます。内容の解釈は行われません。
| × |
オブジェクトを サーバサイド暗号化 で暗号化する場合、以下のフォームフィールドを追加で指定します。
暗号化キーは本サービス内に保存されません。暗号化実施後に破棄します。暗号化キーはお客様が管理する必要があります。 暗号化キーが不明となった場合、オブジェクトの取得が出来なくなります。 |
フォームフィールド | 説明 | 必須 |
---|---|---|
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値を返します。
| 〇 |
レスポンス情報
レスポンスヘッダー
この操作では基本レスポンスヘッダーを返します。
レスポンスエレメント
この操作はレスポンスエレメントを返しません。
エラー情報
この操作では以下のエラーを返します。
コード | ステータス | 内容 |
---|---|---|
InvalidAccessKeyId | 403 Forbidden | 指定のアクセスキーIDを持つユーザが存在しません。 |
SignatureDoesNotMatch | 403 Forbidden | 指定されたリクエストのシグネチャが一致しません。 |
IncorrectNumberOfFilesInPostRequest | 400 Bad Request | リクエストで複数のファイルが指定されています。 |
MalformedPOSTRequest | 400 Bad Request | ボディが multipart/form-data として正しい形式ではありません。 |
MaxMessageLengthExceeded | 400 Bad Request | リクエストのサイズが長すぎます。 |
MaxpostPreDataLengthExceededError | 400 Bad Request | リクエスト中のファイル指定部分のサイズが大きすぎます。 |
InvalidPolicyDocument | 400 Bad Request | フォームの内容が、policy document 内に定義された条件に合っていません。 |
EntityTooSmall | 400 Bad Request | ファイルが許容最低サイズよりも小さいです。 |
EntityTooLarge | 400 Bad Request | ファイルが許容最大サイズよりも大きいです。 |
KeyTooLong | 400 Bad Request | オブジェクトのkeyが許容サイズを超えています。 |
MetadataTooLarge | 400 Bad Request | メタデータのサイズが許容サイズを超えています。 |
InvalidArgument | 400 Bad Request | 以下のいずれかが原因です。サーバサイド暗号化用のフォームフィールドの指定に誤りがありますhttpsで通信をしていません |
InvalidEncryptionAlgorithmError | 400 Bad Request | x-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