CopyObject (SOAP API)
注記
SOAP API for Amazon S3 は新規顧客には利用できず、2025 年 8 月 31 日にサポート終了 (EOL) となります。REST API か AWS SDK を使用することをお勧めします。
説明
ソースオブジェクトのキーとバケット、およびターゲット送信先のキーとバケットを指定すると、CopyObject オペレーションによってオブジェクトのコピーが作成されます。
オブジェクトをコピーするときは、すべてのメタデータを保持する (デフォルト) か、新しいメタデータを指定できます。ただし、ACL は保持されず、リクエストを行ったユーザーに対して private に設定されます。デフォルトの ACL 設定を上書きするには、コピーリクエストを生成するときに新しい ACL を指定します。詳細については、「ACL によるアクセス管理」を参照してください。
すべてのコピーリクエストには認証が必要です。さらに、ソースオブジェクトへの read アクセスと、送信先バケットへの write アクセスが必要です。詳細については、「認証アクセスの使用」を参照してください。
Etag が一致するかどうか、オブジェクトが指定された日付の前後に変更されたかどうかなど、特定の条件下でのみオブジェクトをコピーするには、リクエストパラメータ CopySourceIfUnmodifiedSince、CopyIfUnmodifiedSince、CopySourceIfMatch、または CopySourceIfNoneMatch を使用します。
注記
大きなオブジェクトをコピーするには、SOAP スタックソケットのタイムアウトを設定する必要がある場合があります。
リクエストの構文
<CopyObject xmlns="http://bucket_name.s3.amazonaws.com/2006-03-01"> <SourceBucket>source_bucket</SourceBucket> <SourceObject>source_object</SourceObject> <DestinationBucket>destination_bucket</DestinationBucket> <DestinationObject>destination_object</DestinationObject> <MetadataDirective>{REPLACE | COPY}</MetadataDirective> <Metadata> <Name>metadata_name</Name> <Value>metadata_value</Value> </Metadata> ... <AccessControlList> <Grant> <Grantee xsi:type="user_type"> <ID>user_id</ID> <DisplayName>display_name</DisplayName> </Grantee> <Permission>permission</Permission> </Grant> ... </AccessControlList> <CopySourceIfMatch>etag</CopySourceIfMatch> <CopySourceIfNoneMatch>etag</CopySourceIfNoneMatch> <CopySourceIfModifiedSince>date_time</CopySourceIfModifiedSince> <CopySourceIfUnmodifiedSince>date_time</CopySourceIfUnmodifiedSince> <AWSAccessKeyId>AWSAccessKeyId</AWSAccessKeyId> <Timestamp>TimeStamp</Timestamp> <Signature>Signature</Signature> </CopyObject>
リクエストパラメータ
| 名前 | 説明 | 必須 |
|---|---|---|
SourceBucket
|
ソースバケットの名前。 タイプ: 文字列 デフォルト: なし 制約: 有効なソースバケット。 |
はい |
SourceKey
|
ソースオブジェクトのキーの名前。 タイプ: 文字列 デフォルト: なし 制約: READ アクセスを持つ有効なソースオブジェクトのキー。 |
はい |
DestinationBucket
|
宛先 バケットの名前。 タイプ: 文字列 デフォルト: なし 制約: 送信先バケットへの WRITE アクセスが必要です。 |
はい |
DestinationKey
|
送信先オブジェクトのキー。 タイプ: 文字列 デフォルト: なし 制約: 送信先バケットへの WRITE アクセスが必要です。 |
はい |
MetadataDirective
|
メタデータをソースオブジェクトからコピーするか、リクエストで指定されたメタデータに置き換えるかを指定します。 タイプ: 文字列 デフォルト: COPY 有効な値: COPY | REPLACE 制約: |
いいえ |
Metadata
|
オブジェクトに設定するメタデータの名前と値のペアを指定します。MetadataDirective が タイプ: 文字列 デフォルト: なし 制約: なし。 |
いいえ |
AccessControlList
|
E メールアドレスまたは正規ユーザー ID でユーザーにアクセス権を付与します。 タイプ: 文字列 デフォルト: なし 制約: なし。 |
いいえ |
CopySourceIfMatch
|
エンティティタグ (ETag) が指定されたタグと一致する場合はオブジェクトをコピーします。一致しない場合は、PreconditionFailed を返します。 タイプ: 文字列 デフォルト: なし 制約: なし。Etag が一致しない場合、オブジェクトはコピーされません。 |
いいえ |
CopySourceIfNoneMatch
|
エンティティタグ (ETag) が指定された Etag と異なる場合はオブジェクトをコピーします。それ以外の場合はエラーを返します。 タイプ: 文字列 デフォルト: なし 制約: なし。 |
いいえ |
CopySourceIfUnmodifiedSince
|
指定された時刻以降に変更されていない場合は、オブジェクトをコピーします。それ以外の場合は、PreconditionFailed を返します。 型: dateTime デフォルト: なし |
いいえ |
CopySourceIfModifiedSince
|
指定された時刻以降に変更された場合は、オブジェクトをコピーします。それ以外の場合は、エラーを返します。 型: dateTime デフォルト: なし |
いいえ |
レスポンスの構文
<CopyObjectResponse xmlns="http://bucket_name.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"etag"</ETag> <LastModified>timestamp</LastModified> </CopyObjectResponse> </CopyObjectResponse>
レスポンス要素
以下は、レスポンス要素のリストです。
注記
SOAP API は余分な空白を返しません。追加の空白は REST API によってのみ返されます。
| 名前 | 説明 |
|---|---|
Etag
|
新しいオブジェクトの ETag を返します。ETag は、オブジェクトのコンテンツに加えた変更のみを反映し、メタデータに加えた変更は反映しません。 タイプ: 文字列 祖先: CopyObjectResult |
LastModified
|
オブジェクトの最終変更日時を返します。 タイプ: 文字列 祖先: CopyObjectResult |
一般的なレスポンス要素については、「REST エラーレスポンスヘッダーの使用」を参照してください。
特殊なエラー
このオペレーションには特別なエラーはありません。一般的な Amazon S3 のエラーについては、「エラーコードのリスト」を参照してください。
例
このサンプルは、flotsam オブジェクト (pacific バケット) を jetsam オブジェクト (atlantic バケット) にコピーし、そのメタデータを維持します。
リクエスト例
<CopyObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <SourceBucket>pacific</SourceBucket> <SourceObject>flotsam</SourceObject> <DestinationBucket>atlantic</DestinationBucket> <DestinationObject>jetsam</DestinationObject> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2008-02-18T13:54:10.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbq7RrtSFmw=</Signature> </CopyObject>
レスポンス例
<CopyObjectResponse xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2008-02-18T13:54:10.183Z</LastModified> </CopyObjectResponse> </CopyObjectResponse>
この例では、ワンダーランドバケットから「tweedledee」オブジェクトをワンダーランドバケットの「tweedledum」オブジェクトにコピーし、メタデータを置き換えます。
リクエスト例
<CopyObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <SourceBucket>wonderland</SourceBucket> <SourceObject>tweedledee</SourceObject> <DestinationBucket>wonderland</DestinationBucket> <DestinationObject>tweedledum</DestinationObject> <MetadataDirective >REPLACE</MetadataDirective > <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>relationship</Name> <Value>twins</Value> </Metadata> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2008-02-18T13:54:10.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbq7RrtSFmw=</Signature> </CopyObject>
レスポンス例
<CopyObjectResponse xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2008-02-18T13:54:10.183Z</LastModified> </CopyObjectResponse> </CopyObjectResponse>