すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:CopyObject

最終更新日:Apr 01, 2026

CopyObject 操作を使用して、同一リージョン内の同じバケットまたは異なるバケット間でオブジェクトをコピーします。

バージョン管理

デフォルトでは、x-oss-copy-source はオブジェクトの現在のバージョンをコピーします。特定のバージョンをコピーするには、x-oss-copy-source にバージョン ID を含めます。指定されたコピー元バージョンが削除マーカーである場合、OSS は 404 エラーを返し、オブジェクトが存在しないことを示します。

オブジェクトの以前のバージョンを復元するには、そのバージョンを同じバケットにコピーします。この操作により、コピーされたバージョンが新しい現在のバージョンになります。

コピー先バケットでバージョン管理が有効になっている場合、OSS は新しくコピーされたオブジェクトに対して一意のバージョン ID を自動的に生成します。このバージョン ID は、x-oss-version-id レスポンスヘッダーで返されます。コピー先バケットでバージョン管理が無効または一時停止されている場合、OSS は新しいオブジェクトに対して null バージョン ID を持つバージョンを生成します。この新しいバージョンは、null バージョン ID を持つ既存のバージョンを上書きします。

制限事項

  • オブジェクトサイズの制限

    • 暗号化方式またはストレージクラスを変更しない場合、5 GB を超えるオブジェクトを同じバケット内でコピーできます。

    • コピー元とコピー先のバケットが異なり、コピー操作中にオブジェクトの暗号化方式またはストレージクラスを変更しない場合、オブジェクトは 5 GB を超えることはできません。

    • コピー中にオブジェクトの暗号化方式またはストレージクラスを変更する場合、オブジェクトサイズは 1 GB に制限されます。より大きなオブジェクトの場合は、UploadPartCopy 操作を使用する必要があります。

  • 権限

    CopyObject と UploadPartCopy の両方の操作には、コピー元オブジェクトに対する読み取り権限が必要です。

  • バージョン管理が無効になっているバケットで CopyObject 操作を使用し、コピー元とコピー先のオブジェクトが同じである場合:

    • 暗号化方式またはストレージクラスが変更されない場合、OSS はオブジェクトのメタデータのみを変更し、その内容はコピーしません。

    • 暗号化方式またはストレージクラスが変更された場合、OSS はメタデータを変更し、オブジェクトの内容もコピーします。

  • コピー元オブジェクトがシンボリックリンクの場合

    シンボリックリンクに対して CopyObject 操作を使用すると、シンボリックリンクのみがコピーされます。シンボリックリンクが指すオブジェクトの内容はコピーされません。

  • バケットで階層型名前空間が有効になっている場合

    階層型名前空間が有効になっているバケット内でディレクトリをコピーすることはできません。

  • オブジェクトの上書き競合の防止

    ファイルの上書き禁止」を有効にすると、CopyObject を使用してオブジェクトのストレージクラス (標準からアーカイブストレージなど) を変更することはできません。代わりに、ライフサイクルルールを使用してストレージクラスを自動的に移行します。

  • ObjectWorm の制限事項

    追加可能オブジェクトをコピーする場合、リクエストに ObjectWorm 関連のパラメーターを含めることはできません。

権限

デフォルトで、Alibaba Cloud アカウントはすべての権限を持ちます。Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールは、デフォルトではいかなる権限も持ちません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはBucket Policy を通じて操作権限を付与する必要があります。

API

アクション

説明

CopyObject

oss:GetObject

バケット内または同一リージョン内のバケット間でオブジェクトをコピーします。

oss:PutObject

oss:GetObjectVersion

versionId を通じてコピー元オブジェクトのバージョンを指定する場合、この権限も必要です。

oss:GetObjectTagging

x-oss-tagging を通じてオブジェクトタグをコピーする場合、これらの権限が必要です。

oss:PutObjectTagging

oss:GetObjectVersionTagging

versionId を通じてコピー元オブジェクトの特定のバージョンのタグを指定する場合、この権限も必要です。

kms:GenerateDataKey

オブジェクトをコピーする際、コピー先オブジェクトのメタデータに X-Oss-Server-Side-Encryption: KMS が含まれている場合、これら 2 つの権限が必要です。

kms:Decrypt

説明

コピー先バケットで ObjectWorm が有効になっている場合、コピーされたオブジェクトはバケットのデフォルトの保持ポリシーを継承します。x-oss-object-worm-mode および x-oss-object-worm-retain-until-date リクエストヘッダーを使用して、コピー先オブジェクトに個別の保持ポリシーを指定できます。コピー元オブジェクトの保持ポリシーは、コピー先オブジェクトにはコピーされません。

課金

  • CopyObject 操作の各呼び出しは、コピー先バケットに対する 1 回の PUT リクエストとしてカウントされます。

  • CopyObject 操作により、コピー先バケットのストレージ使用量が増加します。

  • CopyObject を使用してオブジェクトのストレージクラスを変更することは、データの上書き操作です。たとえば、低頻度アクセス (IA) オブジェクトが作成から 10 日以内に上書きされ、そのストレージクラスが標準に変更された場合、最低保存期間が満たされなかったため、20 日分の IA ストレージ料金が請求されます。ストレージ料金の詳細については、「ストレージ料金」をご参照ください。

  • 低頻度アクセス (IA) オブジェクトに対して CopyObject 操作を呼び出すと、IA ストレージのデータ取得料金が発生します。コピー元オブジェクトが、リアルタイムアクセスが有効なバケット内の未解凍のアーカイブストレージオブジェクトである場合、リアルタイムアクセスのデータ取得料金が発生します。これらの料金は、コピー元バケットを所有するアカウントに請求されます。課金の詳細については、「データ処理料金」をご参照ください。

リクエスト構文

PUT /DestObjectName HTTP/1.1
Host: DestBucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-copy-source: /SourceBucketName/SourceObjectName

リクエストヘッダー

コピー操作のすべてのリクエストヘッダーは x-oss- で始まり、署名文字列に含める必要があります。

パラメーター

必須

説明

x-oss-forbid-overwrite

String

いいえ

true

同じ名前のコピー先オブジェクトを上書きするかどうかを指定します。コピー先バケットでバージョン管理が有効または一時停止されている場合、x-oss-forbid-overwrite リクエストヘッダーは無視され、オブジェクトの上書きが許可されます。

  • x-oss-forbid-overwrite が指定されていないか、x-oss-forbid-overwritefalse に設定されている場合、同じ名前のコピー先オブジェクトの上書きが許可されます。

  • x-oss-forbid-overwritetrue に設定した場合、同じ名前の既存のコピー先オブジェクトは上書きされません。

x-oss-forbid-overwrite リクエストヘッダーを設定すると、QPS パフォーマンスが低下します。x-x-oss-forbid-overwrite リクエストヘッダーを使用する多数の操作 (QPS > 1000) を実行する必要がある場合は、ビジネスへの影響を避けるためにテクニカルサポートにご連絡ください。

デフォルト値:false

x-oss-copy-source

String

はい

/oss-example/oss.jpg

コピー操作のソースパスを指定します。

デフォルト値:なし

x-oss-copy-source-if-match

String

いいえ

5B3C1A2E053D763E1B002CC607C5****

コピー元オブジェクトの ETag が指定された ETag と一致する場合にのみ、操作が実行されます。

デフォルト値:なし

x-oss-copy-source-if-none-match

String

いいえ

5B3C1A2E053D763E1B002CC607C5****

コピー元オブジェクトの ETag が指定された ETag と一致しない場合にのみ、操作が実行されます。

デフォルト値:なし

x-oss-copy-source-if-unmodified-since

String

いいえ

Mon, 11 May 2020 08:16:23 GMT

指定された時刻以降にオブジェクトが変更されていない場合にのみ、オブジェクトをコピーします。

デフォルト値:なし

x-oss-copy-source-if-modified-since

String

いいえ

Mon, 11 May 2020 08:16:23 GMT

指定された時刻以降にオブジェクトが変更された場合にのみ、オブジェクトをコピーします。

デフォルト値:なし

x-oss-metadata-directive

String

いいえ

COPY

コピー元オブジェクトのメタデータをコピーするか、置き換えるかを指定します。

  • COPY (デフォルト):コピー元オブジェクトからコピー先オブジェクトにメタデータをコピーします。

    OSS は、x-oss-server-side-encryption 設定をコピー元オブジェクトからコピー先オブジェクトにコピーしません。コピー先オブジェクトのサーバー側暗号化は、コピー操作で x-oss-server-side-encryption が指定されているかどうかによって決まります。

  • REPLACE:コピー元オブジェクトのメタデータを無視し、リクエストで指定されたメタデータを使用します。

重要

コピー元とコピー先のオブジェクトが同じで、バージョン管理が有効になっていない場合、x-oss-metadata-directive の値に関係なく、コピー元オブジェクトのメタデータは無視されます。コピー先オブジェクトは、リクエストで指定されたメタデータを使用します。

x-oss-server-side-encryption

String

いいえ

AES256

OSS がコピー先オブジェクトを作成する際に使用するサーバー側暗号化アルゴリズムを指定します。

有効な値:AES256 および KMS

重要

シンボリックリンクオブジェクトをコピーする際に x-oss-server-side-encryption を指定することはできません。

KMS 暗号化アルゴリズムは、KMS スイートを購入した後にのみ使用できます。そうでない場合、OSS は KmsServiceNotEnabled エラーを返します。

  • コピー操作で x-oss-server-side-encryption を指定しない場合、コピー元オブジェクトが暗号化されていたかどうかに関係なく、コピー先オブジェクトはサーバー側で暗号化されません。

  • コピー操作で x-oss-server-side-encryption を指定した場合、コピー元オブジェクトが暗号化されていたかどうかに関係なく、コピー先オブジェクトはサーバー側で暗号化されます。コピー操作のレスポンスヘッダーには x-oss-server-side-encryption が含まれ、その値はコピー先オブジェクトの暗号化アルゴリズムになります。

    コピー先オブジェクトがダウンロードされると、レスポンスヘッダーにも x-oss-server-side-encryption が含まれ、その値はオブジェクトの暗号化アルゴリズムになります。

x-oss-server-side-encryption-key-id

String

いいえ

9468da86-3509-4f8d-a61e-6eab1eac****

KMS によって管理されるカスタマーマスターキー (CMK) の ID を指定します。

このパラメーターは、x-oss-server-side-encryption が KMS に設定されている場合にのみ有効です。

x-oss-object-acl

String

いいえ

private

コピー先オブジェクトが作成される際のアクセス制御リスト (ACL) を指定します。

有効な値:

  • default (デフォルト):オブジェクトはバケットの ACL を継承します。

  • private:オブジェクトは非公開リソースです。オブジェクト所有者と許可されたユーザーのみがオブジェクトに対する読み書き権限を持ちます。他のユーザーはオブジェクトにアクセスできません。

  • public-read:オブジェクトは公開読み取りリソースです。オブジェクト所有者と許可されたユーザーのみがオブジェクトに対する読み書き権限を持ちます。他のユーザーは読み取り権限のみを持ちます。この権限は慎重に使用してください。

  • public-read-write:オブジェクトは公開読み書きリソースです。すべてのユーザーがオブジェクトに対する読み書き権限を持ちます。この権限は慎重に使用してください。

アクセス権限の詳細については、「オブジェクト ACL」をご参照ください。

x-oss-storage-class

String

いいえ

Standard

オブジェクトのストレージクラスを指定します。

どのストレージクラスのバケットでも、オブジェクトをアップロードする際にこのヘッダーを指定すると、アップロードされたオブジェクトは指定されたストレージクラスに保存されます。たとえば、IA バケットにオブジェクトをアップロードする際に x-oss-storage-class を Standard に設定すると、オブジェクトは標準オブジェクトとして保存されます。

有効な値:

  • Standard (デフォルト):標準ストレージ

  • IA:低頻度アクセス (IA)

  • Archive:アーカイブストレージ

  • ColdArchive:コールドアーカイブストレージ

  • DeepColdArchive:ディープコールドアーカイブストレージ

    重要

    多数のオブジェクトをコピーする必要がある場合、ストレージクラスを直接ディープコールドアーカイブストレージに設定すると、高い PUT リクエスト料金が発生します。ライフサイクルルールを使用してオブジェクトをディープコールドアーカイブストレージクラスに移行し、PUT リクエスト料金を削減することを推奨します。

ストレージクラスの詳細については、「ストレージクラス」をご参照ください。

x-oss-tagging

String

いいえ

a:1

オブジェクトのタグを指定します。複数のタグを指定するには、アンパサンド (&) を区切り文字として使用します。例:TagA=A&TagB=B

説明

キーと値は URL エンコードする必要があります。タグに等号 (=) が含まれていない場合、その値は空の文字列と見なされます。

x-oss-tagging-directive

String

いいえ

Copy

コピー先オブジェクトのタグを設定する方法を指定します。

  • Copy (デフォルト):コピー元オブジェクトからコピー先オブジェクトにタグをコピーします。

  • Replace:コピー元オブジェクトのタグを無視し、リクエストで指定されたタグを使用します。

x-oss-object-worm-mode

String

いいえ

COMPLIANCE

コピー先オブジェクトの保持ポリシーモードを指定します。有効な値:COMPLIANCE。このヘッダーは、コピー先バケットで ObjectWorm が有効になっている場合にのみ有効です。

x-oss-object-worm-retain-until-date

String

いいえ

2025-01-01T00:00:00.000Z

コピー先オブジェクトの保持期限を指定します。日付は ISO 8601 形式である必要があります。このヘッダーは、コピー先バケットで ObjectWorm が有効になっている場合にのみ有効です。

この操作では、Host や Date などの共通リクエストヘッダーも使用します。詳細については、「共通リクエストヘッダー」をご参照ください。

レスポンスヘッダー

この操作では、共通レスポンスヘッダーのみを使用します。詳細については、「共通レスポンスヘッダー」をご参照ください。

レスポンス要素

パラメーター

説明

CopyObjectResult

コンテナ

N/A

CopyObject 操作の結果を格納するコンテナです。

デフォルト値:なし

ETag

String

5B3C1A2E053D763E1B002CC607C5****

コピー先オブジェクトの ETag です。

親要素:CopyObjectResult

LastModified

String

Fri, 24 Feb 2012 07:18:48 GMT

コピー先オブジェクトが最後に更新された時刻です。

親要素:CopyObjectResult

  • バージョン管理が無効になっています

    リクエストの例

    PUT /test%2FAK.txt HTTP/1.1
    Host: tesx.oss-cn-zhangjiakou.aliyuncs.com
    Accept-Encoding: identity
    User-Agent: aliyun-sdk-python/2.6.0(Windows/7/AMD64;3.7.0)
    Accept: text/html
    Connection: keep-alive
    x-oss-copy-source: /test/AK.txt
    date: Fri, 28 Dec 2018 09:41:55 GMT
    authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    Content-Length: 0

    レスポンスの例

    x-oss-hash-crc64ecma ヘッダーは、オブジェクトの 64 ビット CRC 値を示します。この値は、CRC-64/XZ 規格に基づいて計算されます。CopyObject 操作は、生成されたオブジェクトが 64 ビット CRC 値を持つことを保証しません。

    HTTP/1.1 200 OK
    Server: AliyunOSS
    Date: Fri, 28 Dec 2018 09:41:56 GMT
    Content-Type: application/xml
    Content-Length: 184
    Connection: keep-alive
    x-oss-request-id: 5C25EFE4462CE00EC6D87156
    ETag: "F2064A169EE92E9775EE5324D0B1****"
    x-oss-hash-crc64ecma: 12753002859196105360
    x-oss-server-time: 150
    <?xml version="1.0" encoding="UTF-8"?>
    <CopyObjectResult>
      <ETag>"F2064A169EE92E9775EE5324D0B1****"</ETag>
      <LastModified>2018-12-28T09:41:56.000Z</LastModified>
    </CopyObjectResult>
  • バージョン ID を指定せずにオブジェクトをコピーする

    リクエストの例

    PUT /dest-object-example HTTP/1.1
    Host: versioning-copy.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    x-oss-copy-source: /versioning-copy-source/source-object

    レスポンスの例

    この例では、x-oss-copy-source-version-id はコピー元オブジェクトのバージョン ID であり、現在のバージョンです。x-oss-version-id ヘッダーには、新しくコピーされたオブジェクトのバージョン ID が含まれます。

    HTTP/1.1 200 OK
    x-oss-copy-source-version-id: CAEQNRiBgIC28uaA0BYiIDY5OGIwNmNlNjYyMTRjNTc4N2M2OGNiMjZkZTQ2****
    x-oss-version-id: CAEQNxiBgIDG8uaA0BYiIGZhZDRkZTk5Zjg3YzRhNzdiMWEwZGViNDM1NTFh****
    x-oss-request-id: 5CAC155CB7AEADE01700****
    Content-Type: application/xml
    Content-Length: 184
    Connection: keep-alive
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Server: AliyunOSS
    <?xml version="1.0" encoding="UTF-8"?>
    <CopyObjectResult>
      <ETag>"C81E728D9D4C2F636F067F89CC14****"</ETag>
      <LastModified>2019-04-09T03:45:32.000Z</LastModified>
    </CopyObjectResult>
  • バージョン ID を指定してオブジェクトをコピーする

    リクエストの例

    PUT /dest-object-example HTTP/1.1
    Host: versioning-copy.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    x-oss-copy-source: /versioning-copy-source/source-object?versionId=CAEQNRiBgICv8uaA0BYiIDliZDc3MTc1NjE5MjRkMDI4ZGU4MTZkYjY1ZDgy****

    レスポンスの例

    この例では、x-oss-copy-source-version-id はコピー元オブジェクトのバージョン ID であり、x-oss-copy-source リクエストヘッダーで指定されたバージョンです。x-oss-version-id ヘッダーには、新しくコピーされたオブジェクトのバージョン ID が含まれます。

    HTTP/1.1 200 OK
    x-oss-copy-source-version-id: CAEQNRiBgICv8uaA0BYiIDliZDc3MTc1NjE5MjRkMDI4ZGU4MTZkYjY1ZDgy****
    x-oss-version-id: CAEQNxiBgMDP8uaA0BYiIDIyNGNhZDQ1M2M3NzRkZThiNzE0N2I3ZDkxOWY4****
    x-oss-request-id: 5CAC155CB7AEADE01700****
    Content-Type: application/xml
    Content-Length: 184
    Connection: keep-alive
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Server: AliyunOSS
    <?xml version="1.0" encoding="UTF-8"?>
    <CopyObjectResult>
      <ETag>"C4CA4238A0B923820DCC509A6F75****"</ETag>
      <LastModified>2019-04-09T03:45:32.000Z</LastModified>
    </CopyObjectResult>

SDK

この操作を呼び出すには、次の言語の SDK を使用できます:

ossutil CLI

CopyObject 操作に対応する ossutil コマンドについては、「copy-object」をご参照ください。

エラーコード

エラーコード

HTTP ステータスコード

説明

InvalidArgument

400

x-oss-storage-class などのパラメーターの値が無効です。

PreconditionFailed

412

このエラーは、次のいずれかの理由で返されます:

  • x-oss-copy-source-if-match リクエストヘッダーが指定されていますが、コピー元オブジェクトの ETag が指定された ETag と一致しません。

  • x-oss-copy-source-if-unmodified-since リクエストヘッダーが指定されていますが、コピー元オブジェクトが指定された時刻以降に変更されました。

NotModified

304

このエラーは、次のいずれかの理由で返されます:

  • x-oss-copy-source-if-none-match リクエストヘッダーが指定されていますが、コピー元オブジェクトの ETag が指定された ETag と一致します。

  • x-oss-copy-source-if-modified-since リクエストヘッダーが指定されていますが、コピー元オブジェクトが指定された時刻以降に変更されていません。

KmsServiceNotEnabled

403

x-oss-server-side-encryption を KMS に設定しましたが、KMS スイートを購入していません。

FileAlreadyExists

409

このエラーは、次のいずれかの理由で返されます:

  • リクエストヘッダーに x-oss-forbid-overwrite=true が含まれており、同じ名前のオブジェクトの上書きを防ぎますが、その名前のオブジェクトがバケットに既に存在します。

  • バケットで階層型名前空間機能が有効になっており、コピー元またはコピー先のオブジェクトがディレクトリであるオブジェクトをコピーしようとしました。

FileImmutable

409

このエラーは、ObjectWorm 保持ポリシーで保護されているオブジェクトを変更しようとしたときに返されます。

よくある質問

CopyObject は一度に複数のオブジェクトのコピーをサポートしていますか?

CopyObject 操作は単一のオブジェクトのみをコピーします。複数のオブジェクトをバッチでコピーするには、ossutil コマンドラインツールを使用します。