Cloud Integration Hub でファイルストアパブリケーションリポジトリを使ってみる

# 2023 年 4 月のアップデートによる変更点 (2023/03/31 更新)
2023 年 4 月のアップデートにより、ファイルストアパブリケーションリポジトリ使用時のファイル取り込みタスクの作成方法が変更されます。具体的には、パブリケーションのターゲットおよびサブスクリプションのソースで、下記で案内しているように「ローカルフォルダ」を指定するのではなく、「Cloud Integration Hub」を選択するようになります。
既存のファイル取り込みタスクとそれを使用したパブリケーション/サブスクリプションは変更せずにそのまま使用できますが、タスクの編集を行う場合には、そのタイミングで接続を「Cloud Integration Hub」に変更する必要があります。

---

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

# はじめに

2022 年 10 月のアップデートにより、Cloud Hub Integration (以下 CIH) にファイルストアパブリケーションリポジトリの機能が追加されました。
これにより、オンプレミスの Data Integration Hub で広くご使用いただいているファイルパススルーのように、CIH でもパブリケーションとサブスクリプションでファイルをそのまま扱うことができるようになりました。

この記事では実際にファイルストアパブリケーションリポジトリを使用したパブリケーションとサブスクリプションを作成してみます。

# ファイルストアパブリケーションリポジトリの有効化
まず最初にファイルストアパブリケーションを有効化します。
Informatica Intelligent Cloud Services へログインし、マイサービス画面から「統合ハブ」を選択し、ホーム画面右上の「セットアップ」をクリックします。

セットアップ画面下部に「ファイルストアパブリケーションリポジトリ」という欄が追加されています。
「ファイルストアの有効化」にチェックを行い、「ファイルストアリポジトリの場所」として、ファイルを格納するフォルダへのパスを指定します。Secure Agent がアクセス可能な場所を指定する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/5b1381a5-fe85-b87a-6261-c66cd9b21308.png)

# タスクを作る
通常の CIH のパブリケーションやサブスクリプションでは、データの移送部分は Cloud Data Integration のマッピングタスクを使用しますが、ファイルストアパブリケーションリポジトリを使用する場合にはファイル取り込みタスクを使用します(つまり、セキュアエージェントグループで Mass Ingestion - Files のサービスを有効化する必要があります)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/51ca89ce-3515-fc00-9971-253ac78f453d.png)

注意点はマニュアルの「[ファイル取り込みタスクのルールとガイドライン](https://docs.informatica.com/ja_jp/integration-cloud/cloud-integration-hub/current-version/_cloud-integration-hub_cloud-integration-hub_current-version_ditamap/GUID-BE4C0254-D38A-43E4-BE7C-4491D4D16C5F/GUID-5A354CE9-2F47-4A85-BBFD-0DC7B51BF152.html)」に記載がありますが、まとめると下記です。

- パブリケーション/サブスクリプション共通
① スケジュールは「このタスクはスケジュールを使用しない」に設定する
② 「ファイルの安定性を確認」を選択しない
- パブリケーション
③ ターゲットの接続タイプは「ローカルフォルダ」を指定する
④ ターゲットディレクトリは、パラメータ \\$\{\$PMTargetFileDir} を指定する
- サブスクリプション
⑤ ソースの接続タイプは「ローカルフォルダ」を指定し、ファイルリストによるファイルピックアップを行う
⑥ ソースディレクトリは、パラメータ \\${\$PMSourceFileDir} を指定する
⑦ ファイルリストにダミーの文字列を指定する

## パブリケーション
マイサービスで「一括取り込み」を選択し、ファイル取り込みタスクを新規作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/08ef44c8-bf86-0960-acaf-20cc87bf300e.png)

取り込み元となるソースの設定を行います。
今回は Google Cloud Storage からファイルを取得します。バケットには、名前が「src」から始まるファイルと「tgt」から始まるファイルがそれぞれ 10 づつアップロードされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/2db10691-d8db-34ba-0e1b-06392d131ab0.png)

パブリッシュするファイルのパターンの指定により、「src」から始まる名前のファイルのみ移送するよう指定してみます。また、「ファイルの安定性を確認」はデフォルトの未チェックの状態のままにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/b7b1b51e-2d0b-ef57-f517-d85166619e99.png)

続いてターゲットを指定します。Secure Agent がファイルストアパブリケーションリポジトリとして指定したフォルダへ書き込むための設定として、「接続タイプ」は「**ローカルフォルダ**」、「ターゲットディレクトリ」は「**\\$\{\$PMTargetFileDir}**]を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/ea228b2f-f12b-d3a7-c152-d80d2571bf77.png)

「スケジュールの詳細」では、デフォルトの「このタスクはスケジュールどおりに実行しない」のままにし、タスクを保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/d6d8a03d-f82a-1c6e-aaf6-65a585c01fb6.png)

## サブスクリプション
サブスクリプション用のファイル一括タスクはソースの指定でいろいろとコツがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/bfcf4942-0df8-e7e6-4a0a-948343bee530.png)

接続タイプはパブリケーションのソースと同じく「ローカルフォルダ」を指定します。ファイルのピックアップ方法はファイルリストですが、「ファイルリスト」の入力フィールドではダミーの値を設定します。また、ソースディレクトリも、パブリケーションのターゲットディレクトリと同じようにパラメータ「**\\${\$PMSourceFileDir}**」を指定します。

ターゲットは Advanced SFTP V2 コネクタを使用して Linux マシンにファイルを置くことにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/a3050af1-125b-1855-4a27-8f0642af9907.png)

ランタイムオプションでスケジュール設定にしない点はパブリケーションと同様です。

# CIH のアセットを作る
タスクを作成したので、続いて CIH のアセットを作成します。

まずはトピックです。「パブリケーションリポジトリタイプ」で「**ファイルストア**」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/fc6ad8a0-9edd-6e60-8598-528ef856e6ab.png)

続いてパブリケーションを作成します。
「パブリケーション方法」で「**ファイル取り込みタスクでファイルをパブリッシュ**」、「トピック」では上記で作成したファイルストア用のトピックを指定します。「ファイル取り込みタスクでファイルをパブリッシュ」を選択すると、「タスク」のリストには一括取り込みタスクが表示されるので、そこからタスクを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/f6f376e4-ad97-3102-4280-6ff6b830fcda.png)

サブスクリプションも同じように「コンシューム方法」で「**ファイル取り込みタスクでファイルをコンシューム**」、「タスク」でサブスクリプション用に作成したタスクを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/543691c9-3ac3-f021-2613-3881c71b2f2a.png)

# 実行
それではパブリケーションを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/64cc7350-4b78-04f9-fd05-acb7be71adfa.png)

一括取り込みのジョブ画面でも、タスクが実行されたことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/47f9afc9-7d36-ad77-d57a-0928c3b973b1.png)

パブリケーションにより、ファイルストアパブリケーションリポジトリにどのようにファイルが配置されたかを見てみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/25834470-53ff-a068-b642-8673280211dd.png)

下記のような階層になっていることがわかります。

① 「ファイルストアリポジトリの場所」で指定したパス
② 組織ID
③ トピック名
④ 実行日(YYYYMMDD)
⑤ イベントID

また、ファイルパターンで指定した通り「src」から始まる名前のファイルのみが移送されていることがわかります。

続いてサブスクリプションを実行します。
サブスクリプションでは、上記④の実行日以降のフォルダ構造が維持された状態でファイルが移送されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2335778/16bd46ce-5563-7730-e7df-dfa0a6e2c971.png)

# おわりに
タスク作成時にいくつかのポイントはありますが、それらをおさえれば簡単に CIH でファイルを扱う処理を作成できます。ファイルストアパブリケーションリポジトリを是非ご利用ください。