OCI Data IntegrationのRESTタスクでOCIサービスの処理を実行する

# はじめに
OCI Data IntegrationではREST APIで呼び出せる処理をRESTタスクとして実行することができます。つまり、REST APIで実行できる様々なOCIサービスを呼び出すことも可能です。以下のblogで、REST APIで呼び出すいくつかのOCIサービスの処理をOCI RESTタスクコレクションとして公開しています。
[OCI Rest Task Collection for OCI Data Integration](https://blogs.oracle.com/dataintegration/post/oci-rest-task-collection-for-oci-data-integration)
その中のOCI Object StrageのObjectのコピーを行うRESTタスクを実行してみました。

# プロジェクトの作成
あらかじめOCI Data IntegrationでRESTタスクコレクション用のプロジェクトを作成しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/ff1927ed-0439-f7cd-0e8b-dfe7013614ca.png)

後でワークスペースOCID、プロジェクト・キーが必要になるので、それぞれのページで確認しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/8b914eae-7429-7415-56c7-8d7662b70e63.png)

# コレクションのロード
コレクションはGithubで公開されています。それをPostmanにインポートし、実行することでOCI Data Integrationにタスクを作成することができます。

## Postmanのインストール
[こちら](https://www.postman.com/downloads/)からダウンロードしてインストールを行います。Postmanはブラウザ版もありますが、ローカルファイルのインポート/エクスポートに制限があるようなので、デスクトップ版を利用します。

## RESTコレクションのダウンロードとインポート
blogで紹介されている[ダウンロードリンク](https://github.com/davidallan/oci-di-postman)にアクセスします。Codeから**Download Zip**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/de37c11c-c5e6-712a-48af-ab85fa036bc0.png)

ダウンロードしたzipファイルをローカルに解凍します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/f5e7ca6b-66fa-a763-b4da-6b93f99a9559.png)

Postmanを起動し、**import**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/c9a6d216-fba2-d8c0-d079-84d91c38ba88.png)

**Drop anyware to import**の**folders**をクリックして、zipファイルを解凍したフォルダを選択します。インポートされるファイルが表示されるので、そのまま**import**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/035b4188-8674-f8c3-717a-479eb96a7e7e.png)

## 変数の設定
Importが完了すると左の**Environments**に**OCI Credentials**が追加されます。選択すると、**Variables**一覧が表示されるので、各変数の**Current value**をOCI Data Integrationを利用する環境に適した値に変更して、**Save**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/8b50b45e-c66f-1e40-eea3-240c08c9bb7e.png)

各変数はOCICLIを利用するときの設定で利用するものと同じなので、値の確認は[チュートリアル](https://oracle-japan.github.io/ocitutorials/intermediates/using-cli/)や[ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/clienvironmentvariables.htm)が参考になると思います。
| 変数名 | 説明 |
| --- | --- |
| tenancy_ocid | テナンシーのOCID |
| user_ocid | ユーザーのOCID |
| fingerprint | ユーザに追加された公開キーのフィンガープリント |
| private_key | API署名キーの秘密キーを張り付け |
| region | リージョン識別子 例:ap-tokyo-1 |

設定後は、右上のEnvironments選択のプルダウンから**OCI Credentials**を選択し有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/89e9a5aa-e2a6-bc9b-9632-8b0af3412623.png)

次に左から**Collections**を選択し、**Data Integration REST Tasks**をクリックします。右に表示されるタブから**Variables**を選択し、*WORKSPACE_OCID*と*PROJECT_KEY*の**Current value**を先に確認したOCI Data IntegrationのワークスペースのOCIDとプロジェクト・キーに、また*REGION*をワークスペースがあるregion識別子に変更します。その後**Save**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/668ea423-1a65-d9ae-58f8-fbbd8849f7b3.png)

## コレクションの実行と確認
**Data Integration Rest Tasks**のメニューをクリックし、**Run Collection**を選択します。実行方法についての編集画面が表示されますが、そのまま実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/254746c4-7477-beaa-2d80-342afe5d7a15.png)

実行状況や結果が表示されます。成功の場合は200のステータスコードが返されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/7183bac3-c779-b6cf-a6f7-4f18dc64dd31.png)

完了すると、OCI Data Integrationのプロジェクトで作成されたRESTタスクが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/3b144db9-736f-88ef-edc8-c98d7c9fd104.png)

# RESTタスクの確認
作成されたRESTタスクを確認してみます。タスク一覧から**Object Storage Copy Task**を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/6809e5ad-47e0-6340-23ea-01c4daad6439.png)

編集画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/92f7e98f-ba4f-db7e-d6d6-1291a99bc5ce.png)

1つずつみていきます。
## REST API詳細

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/4b2a94f4-f22d-cc8a-30fc-65a02d3e397c.png)

HTTPメソッドとURLが確認できます。URLはパラメータが使われていてデフォルト値が設定されていることがわかります。
呼び出しているREST APIについては[こちらのドキュメント](https://docs.oracle.com/en-us/iaas/api/#/en/objectstorage/20160918/Object/CopyObject)をご確認ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/24da1738-c46c-764d-c79e-18559a9db2c4.png)

**リクエスト**タブを見ると、RESTコールのときに渡すパラメータのJSONが確認でき、それにもパラメータが利用されていることがわかります。**次**をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/d4ad8264-b641-0df0-082e-43a6978c9483.png)

POSTの場合はコールのステータスをポーリングで取得することができます。そのURLが設定されています。こちらもREGIONの部分でパラメータが使われています。

## 認証
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/19497e22-fbb1-cebe-b1ad-d20e5fc6acb7.png)

認証はリソース・プリンシパルが設定されています。したがって、実行前にリソース・プリンシパルを利用するためのポリシー設定があらかじめ必要となります。

## パラメータ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/ddfe75a3-12de-51c5-82b9-0cc3c53c9750.png)

REST API詳細でパラメータが使用されていることを確認しました。そのパラメータを一覧で確認することができます。また編集や新規に作成することも可能です。


## タスクの検証
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/bfd9c778-0c6a-951c-f455-ffddeeda13d1.png)

タスクの検証がオプションで可能です。実行すると成功したので、このRESTタスクではリソース・プリンシパルの設定以外は気にする必要はなさそうです。

# RESTタスクの公開と実行
タスクの実行には**アプリケーションへの公開**が必要です。ここではあらかじめ作成しておいたアプリケーションに公開しましたが、デフォルトで作成されているDefault Applicationでももちろん構いません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/e942bba7-ebe6-772c-20b4-5ad3711bbc9f.png)

公開結果は、公開先のアプリケーションの**パッチ**で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/eb165d62-6cd1-c131-cea8-0acc64dc7976.png)

公開が成功したタスクはアプリケーションの**タスク**に登録されます。登録されたタスクはメニューから実行することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/b6520a8a-5525-f469-e26c-e6bd2ae96a9b.png)

実行をすると、タスクで設定されていたパラメータの確認/編集画面が表示されます。実行する環境に合わせてパラメータを編集し実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/4a948d8d-cb22-2e8b-815d-5a3e80ffe069.png)

実行結果は**実行**で確認できます。ステータスは成功です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134317/ba1d3771-49aa-787d-04ca-292e4586002d.png)


# おわりに
公開されているサンプルを使ってOCIサービスのRESTタスクを実行してみました。OCIサービスの呼び出しお手本としてだけでなく、RESTタスクの設定例としても参照いただくと、ドキュメントの理解がしやすいように思えました。


# 参考情報
+ ドキュメント [RESTタスクの操作](https://docs.oracle.com/ja-jp/iaas/data-integration/using/rest-tasks.htm#rest-tasks)