OCI Object Storageにおいて、クロスリージョンコピーをやってみた

# はじめに
## 概要

リージョン間の異なるOCI オブジェクト・ストレージにおいて、データを互いにコピーする方法について記載します。サイズの大きいデータを移動させたいといった場合に、帯域の広いバックボーンネットワークを利用できるため、インターネット回線を利用するよりも高速にコピーできます。

## 前提条件

## 実施イメージ
![obscc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/d1bd58cf-5907-1f7a-fdcb-46054e2547d4.png)

# 実施手順

クロスリージョンコピーは、GUIとCUI両方実施可能です。クロスリージョンコピーを実施するには、まず、サービス・パーミッションを設定します。


## ■ サービス・パーミッションの設定

クロスリージョンコピーを有効するには、テナント管理者は、サービスを認可し、オブジェクトストレージサービスのソース側とターゲット側両方に権限を付与する必要があります。

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

コンソール左上のハンバーガーアイコンから下の方の「アイデンティティ」をクリックしてから、「ポリシー」ボタンをクリック
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/6b0a4e17-0521-c19d-1f98-265f53cfd862.png)


「ポリシー」ボタンをクリック
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/32d33783-7813-1f60-ee43-2637887655af.png)


「名前」と「説明」を入力し、「ポリシー・ステートメント」を以下の構文で記述します。構文の詳細については参考資料に紹介されているのでそちらを参照ください。

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

以下の画面ショットはAshburnリージョンとTokyoリージョンを例とします。リージョン間で互いにコピーできるように、2つのポリシー・ステートメントを記述します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/ca2f5ff2-cde9-778f-7a51-f86df74a1b95.png)


## ■ リージョン１のオブジェクト・ストレージからリージョン2のオブジェクト・ストレージへコピー

サービス・パーミッションが設定できたら、コピー対象となるオブジェクトの右側をクリックし、「コピー」ボタンをクリックします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/3629ff92-3d8e-5e2a-abce-0a0cb8939c9d.png)


転送先の「宛先ネームスペース」、「宛先リージョン」、「Bucket_2」を入力し、「オブジェクトのコピー」ボタンをクリックします。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/9499b4bd-17d8-c5ea-83d6-446dca4a6eb8.png)


オブジェクトがコピーされたら、ステータスは「完了済み」と表示されます。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/01cd938e-2142-ebe8-823d-b5f6c7093ad8.png)


## ■ CUIでのクロスリージョンコピー

クロスリージョンコピーはGUIだけではなく、CUIコマンドラインでも実施可能です。

CUIを使用するには、まずCLI(Command Line Interface)を構成する必要があります。Computeインスタンスでターミナルを開き、以下のコマンドを実行します。

```
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
```
インストールスクリプトにより、いくつかの情報の入力を求められますが、基本的に、デフォルトの設定は問題がありません。個人の好みに合わせて変更することも可能です。

上記のインストールが完了したら、以下のコマンドで設定ファイルを構成します。

```
oci setup config
```

ユーザーのOCIDやSSHキーなどの情報の入力を求められますので、適切の値を入力いただければと思います。

SSHキーペアが作成されたら、oci_api_key_public.pemの内容を右クリックでコピーしつつ、下記「ユーザー設定」ボタンをクリックします。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/ca878d8e-774c-7d65-0065-7054ff1c899d.png)


「公開キーの追加」ボタンをクリック
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/67e5b39a-cf95-f6ec-0526-b7e4c0b05fe1.png)


コピーしていたoci_api_key_public.pemの内容を貼り付けます。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148299/182841d4-86e7-6b96-6bb9-96b607987596.png)


以下のコマンド構文でクロスリージョンコピーを実施します。構文の詳細については参考資料に紹介されているのでそちらを参照ください。

```
oci os object copy --namespace-name sehubjapaciaas  --bucket-name Bucket_1 --source-object-name testdata_02.dmp --destination-namespace sehubjapaciaas --destination-region ap-tokyo-1 --destination-bucket Bucket_2 --destination-object-name testdata_02.dmp
```


## ■ 参考資料
https://docs.oracle.com/cd/E97706_01/Content/Object/Tasks/copyingobjects.htm
https://docs.oracle.com/cd/E97706_01/Content/API/Concepts/cliconcepts.htm