PUT Object
バケットにオブジェクトを追加します。
この操作を行うユーザは、オブジェクトを追加するバケットに対しWRITE権限を付与されていなければなりません。
本サービスはオブジェクトの部分保存は行いません。 成功のレスポンスはオブジェクト全体を保存したことを意味します。
同一のオブジェクトに対してほぼ同時に複数の書き込みの要求を受けた場合、最後に書かれた内容で上書きされます。 つまり、通信速度やオブジェクトのサイズによってはリクエストの順と異なる場合が発生します。 本サービスはオブジェクトをロックする機能は提供していません。
通信時にデータが破損していないことを保証するためにContent-MD5ヘッダーを用います。 Content-MD5 を用いることで、あらかじめ計算しておいたMD5ハッシュ値とアップロードしたオブジェクトのMD5ハッシュ値が比較され正しくアップロードされたことを確認できます。 また、返されたETagと計算した値を比較することもできます。
|
Bucketに対して、AllUsersグループ( http://acs.dag.iijgio.com/groups/global/AllUsers )にWRITE権限を付与した状態で、匿名(anonymous)ユーザでPUT Objectした場合はAllUsersグループがそのオブジェクトの所有者となります。 このObjectに対しても上記のREAD_ACP・WRITE_ACP権限の暗黙的な保持が適用されるため、全ての匿名(anonymous)ユーザを含む全ての利用者にREAD_ACPおよびWRITE_ACP権限が付与された状態になりますのでご注意ください。 |
リクエスト情報
シンタックス
PUT /{bucket name}/{object key} HTTP/1.1 Host: s3api.iot.iij.jp Date: {date} Authorization: {authorization string}
リクエストパラメータ
この操作ではリクエストパラメータは使用しません。
リクエストヘッダー
この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。
表. PUT Object リクエストヘッダー一覧
HTTPヘッダー | 説明 | 必須 | ||
---|---|---|---|---|
Cache-Control | キャッシュの振る舞いの指定
| × | ||
Content-Disposition | オブジェクトのプレゼンテーショナルな情報の指定
| × | ||
Content-Encoding | コンテンツのエンコード方式
| × | ||
Content-MD5 | Base64でエンコードされたRFC 1864に準拠した128ビットMD5のダイジェストメッセージ(ヘッダーなし)送信データの保全チェックに用います。
| × | ||
Expect | 100-continueを使用する場合、確認の応答を受信するまで、リクエストボディを送信しません。
| × | ||
Expires | 有効期限
| × | ||
x-iijgio-meta- | ユーザーメタデータ この接頭辞で始まる全てのヘッダーがユーザーメタデータであるとみなされます。 このユーザーメタデータはオブジェクトと共に格納され、オブジェクト取得時に返されます。 HTTPリクエストの合計サイズ(ボディを含まない)は8KB以下でなければなりません。
| × | ||
x-iijgio-website-redirect-location | このオブジェクトに対するリクエストのリダイレクト先URL このヘッダー要素は、指定のバケットのウェブサイトサポートが有効な場合に限り指定することができます。 同じバケットの異なるオブジェクトへのリダイレクトであれば以下のようなURLを指定します。 x-iijgio-website-redirect-location: /another_object また、外部のウェブサイトであれば以下のように絶対URLを指定します。 x-iijgio-website-redirect-location: http://www.example.com/
| × |
Access Control List(ACL)の設定
Canned ACL で指定する場合
HTTPヘッダー | 説明 | 必須 |
---|---|---|
x-iijgio-acl | オブジェクトのACLを設定する
| × |
詳細に指定する場合
より詳細に ACL を設定する場合は以下のリクエストヘッダーを指定してください。
HTTPヘッダー | 説明 | 必須 |
---|---|---|
x-iijgio-grant-read | このオブジェクトの閲覧を許可するアカウントまたはグループのリスト
| × |
x-iijgio-grant-read-acp | オブジェクトACLの参照を許可するアカウントまたはグループのリスト
| × |
x-iijgio-grant-write-acp | オブジェクトACLの設定を許可するアカウントまたはグループのリスト
| × |
x-iijgio-grant-full-control | このオブジェクトに対して全ての権限を付加するアカウントまたはグループのリスト
| × |
設定するアカウントまたはグループはそれぞれ type=value 形式で指定します。 type には以下のいずれかを指定できます。
- emailAddress: アカウントのメールアドレス
- id: アカウントの Show ID
url: グループを示す以下のURL
http://acs.dag.iijgio.com/groups/global/AllUsers
匿名ユーザも含め、すべてのユーザを表すグループ
x-iijgio-grant-read ヘッダーを指定する例:
x-iijgio-grant-read: emailAddress="taro@dag.iijgio.com", emailAddress="jiro@dag.iijgio.com"
サーバサイド暗号化
サーバサイド暗号化 でオブジェクトを暗号化する場合、以下のヘッダを指定します。
暗号化キーは本サービス内に保存されません。暗号化実施後に破棄します。暗号化キーはお客様が管理する必要があります。
暗号化キーが不明となった場合、オブジェクトの取得が出来なくなります。
名前 | 説明 | 必須 |
---|---|---|
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(128bit)でダイジェストし、Base64エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。 | 〇 |
リクエストエレメント
この操作ではリクエストエレメントは使用しません。
レスポンス情報
レスポンスヘッダー
この操作では基本レスポンスヘッダーを返します。
オブジェクトを サーバサイド暗号化 で暗号化した場合、追加で以下のヘッダを返します。
表. PUT Object レスポンスヘッダー(サーバサイド暗号化)一覧
HTTPヘッダー | 説明 |
---|---|
x-iijgio-server-side-encryption-customer-algorithm | 暗号化に利用したアルゴリズムを返します。
|
x-iijgio-server-side-encryption-customer-key-MD5 | 暗号化に利用した暗号化キーのMD5値を返します。
|
レスポンスエレメント
この操作はレスポンスエレメントを返しません。
エラー情報
この操作では以下のエラーを返します。
コード | ステータス | 内容 |
---|---|---|
InvalidAccessKeyId | 403 Forbidden | 指定のアクセスキーIDを持つユーザが存在しません。 |
SignatureDoesNotMatch | 403 Forbidden | 指定されたリクエストのシグネチャが一致しません。 |
AccessDenied | 403 Forbidden | バケットに対するWRITE権限がありません。 |
NoSuchBucket | 404 Not Found | 指定のバケットが存在しません。 |
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に誤った値が指定されています。 |
サンプル
サンプル1: オブジェクトmy-image.jpgをバケットmybucketに追加する
リクエスト
PUT /mybucket/my-image.jpg HTTP/1.1 Host: s3api.iot.iij.jp Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 11434 Expect: 100-continue [11434 bytes of object data]
レスポンス
HTTP/1.1 100 Continue HTTP/1.1 200 OK x-iijgio-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-iijgio-request-id: 0A49CE4060975EAC Date: Wed, 12 Oct 2009 17:50:00 GMT ETag: "1b2cf535f27731c974343645a3985328" Content-Length: 0 Server: s3api.iot.iij.jp
サンプル2: オブジェクトmy-image.jpgをバケットmybucketに、サーバサイド暗号化で暗号化しながら追加するサンプル
リクエスト
PUT /mybucket/my-image.jpg HTTP/1.1 Host: s3api.iot.iij.jp Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= x-iijgio-server-side-encryption-customer-algorithm: AES256 x-iijgio-server-side-encryption-customer-key: MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI= x-iijgio-server-side-encryption-customer-key-md5: dnF5x6K/8ZZRzpfSlMMM+w== Content-Type: text/plain Content-Length: 11434 Expect: 100-continue [11434 bytes of object data]
レスポンス
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-server-side-encryption-customer-algorithm: AES256 x-iijgio-server-side-encryption-customer-key-md5: dnF5x6K/8ZZRzpfSlMMM+w== Date: Wed, 12 Oct 2009 17:50:00 GMT ETag: "7510dc34e6d7b31a30bd83c81a570274" Content-Length: 0 Server: s3api.iot.iij.jp