Oracle Cloud Object Storage コネクタをCDI マッピングタスクで使ってみる

この記事は [インフォマティカ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/informatica) Day 2 の記事として書かれています。

### はじめに
2022年のIICSのメジャーリリースでは合計18本の新規コネクター（プレビュー版を含む）がリリースされました。その中でも、10月のメジャーリリースで提供されたばかりのOracle Cloud Object Storageコネクタを使ってみたいと思います。

Oracle Cloud Infrastructure(OCI) のAlways Free 枠を活用して、Oracle Cloud Object StorageからAutonomous Data Warehouse にInformatica Intelligent Cloud Services(IICS)のCloud Data Integration(CDI)を使ってETLしてみます。

### OCIでの環境用意
ここでは詳しく触れませんが、テスト目的ですのでObject Storageではルート直下のコンパートメントに「bucket-20200410-1245」というバケットを作成し、バケット内に「advent-calendar」というフォルダを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/05144bbb-d86d-17a9-f5ef-e156d2999753.png)

同様にデータベースもルート直下のコンパートメントに「XA9LL2DQ1161QZ2Y」というAutonomous Data WarehouseタイプのAutonomous Databaseを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/5e6235c8-1eed-6f04-019b-d9d8e5b41613.png)

## IICSでのOracle Cloud Object Storageコネクタの「接続」作成
IICSでのAutonomous Databaseへの「接続」作成については、昨年[インフォマティカ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/informatica) Day 23 の記事がありますので、そちらを参照いただくとして、ここのではこの記事のメインであるOracle Cloud Object Storageコネクタの「接続」作成方法について手順を記載していきます。

まだ、英語版のオンラインマニュアルしか存在していませんが[Oracle Cloud Object Storage connection properties](
https://docs.informatica.com/integration-cloud/cloud-platform/current-version/connections/connection-properties/oracle-cloud-object-storage-connection-properties.html)を参照しつつ、実際の「接続」作成画面で入力が必要な情報をOCIコンソールから取得します。実際の「接続」作成画面を見てみましょう。

接続名と説明に適切な情報を入力し、タイプのLOVから「Oracle Cloud Object Storage(Informatica)」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/b9931c7b-002d-3abc-5ca9-dd18e8bf4e41.png)
Connection Sectionでの入力項目は8つですのでそれほど多くはないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/ca39e901-3642-9d76-eb8f-a8106b515543.png)

## OCIコンソールからの情報取得
今回はAuthentication TypeでSimple Authenticationを使用しますので、Config File LocationとProfile Name以外のプロパティに値をセットしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/ba80521e-2924-26b6-6f25-6c0b7cb2dc94.png)

Bucket Nameに「bucket-20200410-1245」,Folder Pathに「advent-calendar」を入力し、RegionではLOVから「uk-london-1」を選択すればOKです。残りのUser, Finger Print, Tenancy, Private Key File Locationの入力について説明を進めます。これらの情報を得るためにはOCIコンソールのプロファイル（人物アイコン）をクリックしてメニュー開き、「oracleidentitycloudservice/OCIのログインユーザー名」を選択して、「ユーザーの詳細」を表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/7db0069c-8964-f847-efa7-6a7bccaf3b56.png)
※ハンバーガーマークからは、「アイデンティティとセキュリティ」-> アイデンティティ配下の「ユーザー」-> 表示されたユーザー一覧からOCIログインユーザー名を選択することで同じ画面にたどり着きます。

画面をスクロールダウンすると左側に「リソース」というメニューがリストされますので、「APIキー」をクリックします。そして、【APIキーの追加】ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/4ce1d2c2-fda1-9a40-7e7b-11b55dcf2096.png)

下記のようなダイアログが表示されます。デフォルトで「APIキー・ペアの生成」が選択されていますので、そのまま【秘密キーのダウンロード】ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/d477868f-9504-4ac8-6476-90a27571253d.png)
最後に【追加】ボタンをクリックすると、下記のようなダイアログが表示されます。これはConfigFile Authenticationで使用するためのConfigFileに記載する情報を表示しているのですが、そのままSimple Authenticationの入力情報として活用できますので、「構成ファイルのプレビュー情報」はメモ帳等にコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/07a2eab0-7a37-6389-90c5-bf2b9152efae.png)
これで残すはPrivatekey File Locationの入力のみです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/541f11c9-dda1-4df8-2341-bf1206ce3195.png)

## Privatekey File Location の設定
先ほど「APIキー・ペアの生成」で【秘密キーのダウンロード】をしました。ローカルのダウンロードフォルダにoracleidentitycloudservice_OCIユーザー名-MM-DD-HH-MM.pemというファイルが存在しているはずです。この秘密キーをSecure Agentにアップロードし、適切なディレクトリに配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/517ad662-46a2-5d44-73c0-0037dd5f4200.png)
デフォルトでは$home/.ociの配置先のようなので、この例でもSecure Agentのオーナーであるinfa1ユーザのホームディレクトリ配下に「.oci」ディレクトリを新規に作成し、秘密キーをそこに配置しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/d1815bb1-080a-9984-4098-c97d0cf7da0c.png)
これで必要な情報の入力は完成ですので「接続のテスト」をクリックしてOKであれば「保存」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/1b792111-ae21-22fa-2505-0dad38320552.png)
正常に接続できましたので、最後にこの接続を使ってCDIのマッピングタスクを動かしてみます。
### CDI マッピングタスクを動かしてみる
Oracle Object Storageに1万件の個人情報のダミーデータが入ったCSVファイルを配置しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/30e30920-1ed3-72af-0a3a-83ad49209325.png)
血液型は「B型以外」、性別は「男」というフィルターをかけて、Autonomous Data Warehouseにロードするという単純なマッピングを動かしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/934011be-296a-7559-d69c-3fc1a5fe4283.png)
ロンドン(Storage) - 日本(Secure Agent) - ロンドン(DB) というネットワーク的に非効率なテスト環境だったため、想像以上に時間がかかりましたが、無事に4653行がターゲットにロードされ、ジョブとして正常終了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/786891/ee574341-3a83-d008-4c7a-72ba07ea8ff4.png)

### おわりに
2022年5月にOracle社とInformaticaは[戦略的グローバル・パートナーシップ](https://www.informatica.com/jp/about-us/news/news-releases/2022/05/20220526-informatica-announces-strategic-global-partnership-with-oracle-in-cloud.html)を発表しています。近い将来、OCIでIICSが動くようになるのは、個人的には感慨深いものがあります。