[OCI]Object Storage Objectを別テナンシへコピーしてみた


この記事でやっていること

  • Oracle Cloud Infrastructure のObject Storageのobjectを別のテナンシのObject Storageへコピー
  • 同一リージョン内での操作例

作業手順

  1. オブジェクトのコピーに必要なIAMポリシーの設定・確認
  2. 別のテナンシのObject Storageにアクセス・操作するためのIAMポリシーの設定・確認
  3. objectのコピー

1. オブジェクトのコピーに必要なIAMポリシーの設定・確認

サービス権限

コピー操作を実行する各リージョンにて「オブジェクト・ストレージ」サービスを認可する必要があります。
(コピー元、コピー先双方のテナンシで設定)
指定したリージョンのサービスを認可するポリシーを作成して、
テナンシ内のすべてのコンパートメントのオブジェクト・ストレージのネームスペース、バケットおよび関連オブジェクトを管理できる権限:

Allow service objectstorage-<region_name> to manage object-family in tenancy

操作を限定して許可する権限:

テナンシー全体
Allow service objectstorage-<region_name> to {OBJECT_READ, OBJECT_INSPECT, OBJECT_CREATE, OBJECT_OVERWRITE, OBJECT_DELETE} in tenancy
コンパートメント指定
Allow service objectstorage-<region_name> to {OBJECT_READ, OBJECT_INSPECT, OBJECT_CREATE, OBJECT_OVERWRITE, OBJECT_DELETE} in compartment <compartment_name>

ユーザ権限

コピー元、コピー先双方のテナンシでオブジェクトのコピーを実行するのに必要なアクセス権が必要です。
双方のバケットでオブジェクトを管理する権限も必要です。

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

Allow group <IAM_group_name> to manage object-family in tenancy

指定したグループにテナンシの特定コンパートメントのバケットおよびオブジェクトのみを管理させるポリシー

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

2. 別のテナンシのObject Storageにアクセス・操作するためのIAMポリシーの設定・確認

テナンシ間でコピー操作を許可する権限の設定

コピー元テナンシ

コピー元テナンシのIAMグループ名とコピー先のテナンシのOCIDを取得し、以下のポリシーを作成

define tenancy CopyDestinationTenancy as <OCID_for_destination_tenancy>
endorse group <group_name_in_source_tenancy> to {OBJECT_READ, OBJECT_CREATE, OBJECT_OVERWRITE, OBJECT_INSPECT, OBJECT_DELETE} in tenancy CopyDestinationTenancy }}}

コピー先テナンシ

コピー元のテナンシのOCIDとコピー元のIAMグループのOCIDを取得し、以下のポリシーを作成

define tenancy CopySourceTenancy as <OCID_for_source_tenancy>
define group CopySourceGroup as <OCID_for_group_in_source_tenancy>
admit group CopySourceGroup of tenancy CopySourceTenancy to {OBJECT_READ, OBJECT_CREATE, OBJECT_OVERWRITE, OBJECT_INSPECT, OBJECT_DELETE} in tenancy }}}

3. objectのコピー

コピー元バケット画面
ネームスペース、バケット名、オブジェクト名を確認

コピー先バケット画面
ネームスペース、バケット名を確認

Webコンソールの例

コピー元オブジェクトを選択し、メニューからコピーを選択

コピー先のネームスペース名、リージョン、バケット名を指定し、「オブジェクトのコピー」を押下

コピーの完了

CLIの例

oci os object copy --namespace-name nr9kylwk --bucket-name CrossTenancyRead --source-object-name crosstenancy.txt --destination-namespace nrdoltfd --destination-region ap-tokyo-1 --destination-bucket CrossTenancyCopy --destination-object-name crosstenancy.txt

さいごに

権限付与ができれば、通常操作でテナンシ間でのオブジェクトコピーができた。

参考情報