オブジェクトのコピー

このトピックでは、オブジェクト・ストレージのオブジェクトをコピーする方法について説明します。オブジェクトを同じリージョン内の他のバケットおよび他のリージョン内のバケットにコピーできます。

必須IAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。

注意

オブジェクト・ストレージ・サービスに代理でオブジェクトをコピーする権限がない場合、オブジェクト・コピーは機能しません。詳細は、サービス権限を参照してください。

ユーザー権限

オブジェクト・コピーを実行する場合、ソース・バケットおよび宛先バケットの両方に対して必要なアクセス権を持っている必要があります。ソース・バケットおよび宛先バケット内のオブジェクトを管理する権限も必要です。

管理者の場合:

  • 指定したIAMグループで、テナンシのすべてのコンパートメント内のオブジェクト・ストレージのネームスペース、バケット、およびそれらに関連付けられたオブジェクトを管理するポリシーを作成できます:

    Allow group <IAM_group_name> to manage object-family in tenancy
  • または、アクセスの範囲を狭くするポリシーを作成できます。たとえば、指定したグループがテナンシの特定のコンパートメント内のバケットとオブジェクトのみを管理するようにするには:

    Allow group <IAM_group_name> to manage buckets in compartment <compartment_name>

ポリシーを記述するための他の代替手段の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。

サービス権限

オブジェクト・ストレージはリージョナル・サービスであるため、代理でコピー操作を実行する各リージョンのオブジェクト・ストレージ・サービスを認可する必要があります。たとえば、オブジェクト・ストレージ・サービスをリージョン米国東部(アッシュバーン)で認可して、代理でオブジェクトを管理できます。オブジェクト・ストレージ・サービスを認可すると、米国東部(アッシュバーン)バケットに格納されているオブジェクトを、別のリージョンのバケットにコピーできます。

Oracle Cloud Infrastructureリージョンのリージョン識別子の値を決定するには、リージョンおよび可用性ドメインを参照してください。

管理者の場合:

オブジェクト・コピーを有効にするには、代理でオブジェクトを管理するサービスを認可する必要があります:

  • 指定したリージョンで、テナンシのすべてのコンパートメント内のオブジェクト・ストレージのネームスペース、バケット、およびそれらに関連付けられたオブジェクトを管理するサービスを認可するポリシーを作成できます:

    Allow service objectstorage-<region_identifier> to manage object-family in tenancy
  • ポリシー動詞manageを使用するかわりに、次のいずれかのステートメントを使用して、アクセスの範囲を狭くするポリシーを作成できます:

    Allow service objectstorage-<region_identifier> to manage object-family in tenancy where any {request.permission='OBJECT_READ', request.permission='OBJECT_INSPECT', request.permission='OBJECT_CREATE', request.permission='OBJECT_OVERWRITE', request.permission='OBJECT_DELETE'}
    Allow service objectstorage-<region_identifier> to manage object-family in compartment <compartment_name> where any {request.permission='OBJECT_READ', request.permission='OBJECT_INSPECT', request.permission='OBJECT_CREATE', request.permission='OBJECT_OVERWRITE', request.permission='OBJECT_DELETE'}

オブジェクトのコピー作業リクエスト

オブジェクト・ストレージ・サービスは、コピー・リクエストを非同期的に処理します。サービスによって、コピー・リクエストのキューが作成され、システム・リソースが使用可能になったときにリクエストが処理されます。進行中のコピー操作に可視性を持たせるために、オブジェクト・ストレージ作業リクエストを作成します。作業リクエストのステータスをモニタリングすることで、コピー操作の進行状況をトラッキングできます。

作業リクエストのステータスは:

ACCEPTED
コピー・リクエストは、処理対象の作業リクエスト・キューにあります。
IN_PROGRESS
オブジェクト・コピーは進行中です。
COMPLETED
コピー操作は正常に完了しました。
CANCELING
コピー・リクエストは取消処理中です。
CANCELED
コピー・リクエストは取り消されました。
FAILED
コピー操作は失敗しました。上書きルールのため、またはユーザー認可が不十分であるために完了しない作業リクエストには、失敗ステータスが割り当てられます。
コピーが失敗した理由は、次の方法で確認できます:

オブジェクトのコピー上書きルール

エンティティ・タグ(ETag)の値に基づいてオブジェクトのコピーを制御するには、上書きルールを使用します。

  • 宛先オブジェクトの上書き: ETag値によるコピー操作を制限しない場合は、このオプションを使用します。このオプションはデフォルトです。このオプションは、既存のオブジェクトの上書きを伴うかどうかに関係なく、すべてのコピー操作に使用できます。
  • 宛先オブジェクトを上書きしない: 宛先オブジェクトのETag値に関係なく、宛先の場所にあるオブジェクトの既存のコピーが上書きされないようにする場合は、このオプションを使用します。
  • 指定したETagに一致する場合にのみ宛先オブジェクトの上書き: 指定したETagがない宛先の場所にあるオブジェクトが誤って上書きされないようにする場合は、このオプションを使用します。このオプションを使用すると、コピー・リクエスト開始時に指定したETagが宛先オブジェクトのETagと一致する場合のみ、コピー操作が成功します。
  • ソースが指定されたETagと一致する場合にのみオブジェクトをコピー: コピー・リクエストの開始時に指定したETagがソース・オブジェクトのETagと一致する場合にのみ、コピー操作が成功するようにする場合は、このオプションを使用します。データ管理アクティビティの一部として意図的に更新および上書きされるオブジェクトの場合、このオプションを使用すると、指定したバージョンのオブジェクト(ETagで指定)のみがコピーできるようになります。コピー作業リクエストの作成後、コピー操作が実行される前にオブジェクトのETag値が変更された場合、コピー操作は完了しません。
注意

オブジェクトを上書きすると、操作は元に戻せません。

範囲および制約

  • アーカイブ・ストレージからオブジェクトを直接コピーすることはできません。現在アーカイブ・ストレージにあるオブジェクトをコピーするには、最初にオブジェクトを標準オブジェクト・ストレージ層にリストアする必要があります。オブジェクトは、標準層または頻度の低いアクセス層からアーカイブ層バケットに直接コピーできます。オブジェクトをアーカイブ・ストレージ・バケットにコピーすると、オブジェクトのコピーはすぐにアーカイブされます。
  • コピー・リクエストに既存のターゲット・バケットを指定します。コピー操作では、バケットは自動的に作成されません。
  • オブジェクトがコピーされると、宛先オブジェクトは新しいETag値を受け取ります。
  • コピー操作中にソース・オブジェクトの名前の変更、上書きまたは削除を実行すると、コピー操作が失敗し、宛先オブジェクトは作成または上書きされません。
  • 一括コピーはサポートされていません。コピー・リクエストで単一オブジェクトを識別します。