PUT Object (Copy)
既に保管されているオブジェクトを複製します。
この操作はGET操作を実行して、次にPUT操作を実行した時と結果は同じです。
リクエストヘッダーにx-iijgio-copy-sourceを加えると、ソースオブジェクトを目的のバケットに複製します。
オブジェクトを複製時に、メタデータとして複製元のメタデータを設定するか、全く新しいメタデータを設定するかを選択できます。 複製元のメタデータを設定する場合、メタデータの大部分は保存できますが、ACLは複製されません(デフォルト値としてprivateが設定されます)。
ACLの設定を行う(デフォルト値を無効にする)には、リクエスト生成時にx-iijgio-aclヘッダーを使用し、新たにACLを設定します。
この操作を行うユーザは、コピー元のオブジェクトに対しREAD権限が付与され、コピー先のバケットに対しWRITE権限が付与されていなければなりません。
リクエストヘッダーに特定の条件(ETagがマッチするか、オブジェクトが指定の日時以降(以前)に更新されていないか等)を設定することができます。
リクエストを受信した時点、またはファイルコピーの実行中にエラーを返す可能性があります。 リクエスト受信時の場合、標準のエラーコードを返します。実行中のエラーの場合、エラーは200レスポンスの中に埋め込まれます。
リクエスト情報
シンタックス
PUT /{destination bucket name}/{destination object key} HTTP/1.1 Host: s3api.iot.iij.jp Date: date x-iijgio-copy-source: /{source bucket name}/{source object key} x-iijgio-metadata-directive: {metadata directive} 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} <request metadata> Authorization: {authorization string}
リクエストパラメータ
この操作ではリクエストパラメータは使用しません。
リクエストヘッダー
この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。
表. PUT Object(Copy) リクエストヘッダー一覧
HTTPヘッダー | 説明 | 必須 | ||
---|---|---|---|---|
x-iijgio-acl | ACLの設定
| × | ||
x-iijgio-copy-source | バケット名とオブジェクトキー
| ○ | ||
x-iijgio-metadata-directive | メタデータをオブジェクトからコピーした値にするか、リクエストで提供した値にするかの指定
| × | ||
x-iijgio-copy-source-if-match | ETagが指定のタグと一致する場合コピーを実行します。
| × | ||
x-iijgio-copy-source-if-none-match | ETagが指定のタグとマッチしない場合コピーを実行します。
| × | ||
x-iijgio-copy-source-if-unmodified-since | 指定された時間以降にオブジェクトが更新されていなければ、コピーを実行し、その他の場合には412 ステータスエラー(precondition failed)を返します。
| × | ||
x-iijgio-copy-source-if-modified-since | 指定された時間以降にオブジェクトが更新されていれば、コピーを実行し、その他の場合には412 ステータスエラー(precondition failed)を返します。
| × | ||
x-iijgio-website-redirect-location | このオブジェクトに対するリクエストのリダイレクト先URL このヘッダー要素は、指定のバケットのウェブサイトサポートが有効な場合に限り指定することができます。 同じバケットの異なるオブジェクトへのリダイレクトであれば以下のようなURLを指定します。 x-iijgio-website-redirect-location: /another_object また、外部のウェブサイトであれば以下のように絶対URLを指定します。 x-iijgio-website-redirect-location: http://www.example.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エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。 | 〇 |
ソースオブジェクト(x-iijgio-copy-sourceで指定したオブジェクト)が サーバサイド暗号化で暗号化されている場合、以下のヘッダを指定します。
名前 | 説明 | 必須 |
---|---|---|
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エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。 | 〇 |
リクエストエレメント
この操作ではリクエストエレメントは使用しません。
レスポンス情報
レスポンスヘッダー
この操作では基本レスポンスヘッダーを返します。
オブジェクトを サーバサイド暗号化 で暗号化した場合、追加で以下のヘッダを返します。
表. PUT Object(Copy) レスポンスヘッダー(サーバサイド暗号化)一覧
HTTPヘッダー | 説明 |
---|---|
x-iijgio-server-side-encryption-customer-algorithm | 暗号化に利用したアルゴリズムを返します。
|
x-iijgio-server-side-encryption-customer-key-MD5 | 暗号化に利用した暗号化キーのMD5値を返します。
|
コピー元のオブジェクトが サーバサイド暗号化 で暗号化されていた場合、追加で以下のヘッダを返します。
HTTPヘッダー | 説明 |
---|---|
x-iijgio-copy-source-server-side-encryption-customer-algorithm | ソースオブジェクトの復号に用いたアルゴリズムを返します。
|
x-iijgio-copy-source-server-side-encryption-customer-key-MD5 | ソースオブジェクトの復号に用いた暗号化キーのMD5値を返します。
|
レスポンスエレメント
この操作では以下のレスポンスエレメントを返します。
名前 | 説明 |
---|---|
CopyObjectResult | 全てのレスポンスエレメントのためのコンテナ
|
ETag | 新しいオブジェクトから生成されたMD5ハッシュ値ETagはメタデータの変更を反映せず、オブジェクトの変更のみ反映します。
|
LastModified | 最終更新日時
|
エラー情報
この操作では以下のエラーを返します。
コード | ステータス | 内容 |
---|---|---|
InvalidAccessKeyId | 403 Forbidden | 指定のアクセスキーIDを持つユーザが存在しません。 |
SignatureDoesNotMatch | 403 Forbidden | 指定されたリクエストのシグネチャが一致しません。 |
AccessDenied | 403 Forbidden | Objrctに対するREAD権限がない、またはバケットに対するWRITE権限がありません。 |
NoSuchBucket | 404 Not Found | 指定のバケットが存在しません。 |
NoSuchKey | 404 Not Found | 指定keyのオブジェクトが存在しません。 |
KeyTooLong | 400 Bad Request | オブジェクトのkeyが許容サイズを超えています。 |
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に誤った値が指定されています。 |
InvalidArgument | 400 Bad Request | 以下のいずれかが原因です。サーバサイド暗号化用のヘッダの指定に誤りがありますhttpsで通信をしていません |
InvalidEncryptionAlgorithmError | 400 Bad Request | x-iijgio-server-side-encryption-customer-algorithに誤った値が指定されています。 |
サンプル
my-image.jpgを複製し、my-second-image.jpgというキー名でbucketに追加するサンプル
リクエスト
PUT /bucket/my-second-image.jpg HTTP/1.1 Host: s3api.iot.iij.jp Date: Wed, 28 Oct 2009 22:32:00 GMT x-iijgio-copy-source: /bucket/my-image.jpg
レスポンス
HTTP/1.1 200 OK x-iijgio-id-2: eftixk72aD6Ap51TnqcoF8eFidJG9Z/2mkiDFu8yU9AS1ed4OpIszj7UDNEHGran x-iijgio-request-id: 318BC8BC148832E5 x-iijgio-copy-source-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIb rHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo x-iijgio-version-id: QUpfdndhfd8438MNFDN93jdnJFkdmqnh893 Date: Wed, 28 Oct 2009 22:32:00 GMT Server: s3api.iot.iij.jp <CopyObjectResult> <LastModified>2009-10-28T22:32:00</LastModified> <ETag>9b2cf535f27731c974343645a3985328</ETag> </CopyObjectResult>