【CDI】Informatica Cloud Data IntegrationでParamSetCliを使ってタスクフロー起動時にパラメータセットから値を取得してみた
こんにちは、データアナリティクス事業本部ビジネスソリューション部SAチームの渡部です。
今回はInformaticaのCloud Data Integration(以下、CDI)でParamSetCliを使用して、タスクフロー実行時にパラメータセットから値を取得してみます。
パラメータファイルではなくて、パラメータセットというのがミソです。
もしもパラメータ取得用にダミーマッピングタスクを用意して、パラメータファイルから値を取得している、、、という場合は今回の記事が参考になるかと思います。
やってみる
ParamSetCliの準備
ParamSetCliは、Informatica管理のクラウドリポジトリへ、パラメータセットをアップロードなどの操作をするための、Informaticaコマンドラインインターフェースツールです。
CDIでパラメータを取得するためにSecureAgentサーバーに配置していたものをパラメータファイルと呼称するのに対して、ParamSetCliでクラウドリポジトリにアップロードしたものはパラメータセットと呼称するようです。
ParamSetCliをダウンロード
まずはParamSetCliユーティリティをダウンロードします。
ダウンロードは以下のサイトのファイル
から可能です。
HOW TO: Configure a parameter set in a Taskflow
その次にダウンロードしたファイルを、SecureAgentにインストールします。
scpコマンドを使用してSecureAgentのインストールディレクトリの配下に配置します。
配置をしたらば、unzipコマンドでファイルを解凍しましょう。
私は<SecureAgentインストールディレクトリ>/apps/
に配置をしました。
⚠️⚠️⚠️2024/5/30追記⚠️⚠️⚠️
<SecureAgentインストールディレクトリ>/apps/
に自分で作成したディレクトリ内のファイルは、自動的に削除されてしまいます。
FAQ: Files placed within custom folders in the path '
作成したのにいつのまにか無くなってる・・・ということにならないよう、
上記ディレクトリ以外にファイルを配置しましょう。
ParamSetCliのパスワード設定
ParamSetCliで使用するユーザーとパスワードの認証情報をrestenv.properties
に書き込みます。
ユーザーとパスワードについてはInformaticaのログイン時に使用するものを使います。
実際のプロジェクトでは退職や離任があることを考えて、個人に紐づかないアカウントを使用すると良いでしょう。
なおパスワードについてはハードコードではなく暗号化した文字列に置き換えて、書き込むことが可能です。
その際はrestenv.properties
の"password"に暗号化文字列を、"use.encryption"にtrueを記載します。
暗号化文字列についてはParamSetCliで取得できるようになっています。
以下は私が実際に打ったコマンドです(申し遅れましたがOSはLinuxです)。
OSがWindowsの場合は、paramsetcli.sh
の箇所をparamsetcli.bat
と読み替えてWin仕様のコマンドを打ち込んでください。
$ chmod +x paramsetcli.sh ## paramsetcli.shに実行権限を付与 $ ./paramsetcli.sh encryptText -t <パスワード> ## パスワードを暗号化(パスワードはシングルアポストロフィで囲む) . Encrypted Password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ## 暗号化された文字列が出力される $ vi restenv.properties ## restenv.propertiesに書き込み $ cat restenv.properties baseUrl=https://dm-us.informaticacloud.com/ma username=<ユーザー名> password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ACTIVITYMONITORWAIT=2000 TOTALWAIT=5000 PROXYHOST= PROXYPORT= RETRYCOUNT= use.encryption=true paramSetBaseUrl=https://na1.dm-us.informaticacloud.com/active-bpel
Java Runtime Environmentをインストール
ParamSetCliを使用するためにはJava Runtime Environmentが必要なため、SecureAgentにインストールします。
JavaについてはSecureAgentサーバーのOSに合ったJavaをダウンロードしてください。
ちょっとここはどのJavaを選べば良いか難しいポイントです。
https://www.java.com/ja/download/manual.jsp
ダウンロードをしたらParamSetCliと同様にSecureAgentサーバーにインストール・解凍をします。
配置場所についてはParamSetCliと同じ階層で良いかと思います。
ParamSetCliでパラメータセットをアップロード
パラメータセットの作成
パラメータセットについては、パラメータファイルと同じように作成します。
#USE_SECTIONS [Global] $$mail_to=<私のメールアドレス> $$text=helloParamSetCli [cm-watanabe].[create-target-at-run-time-new].[tf_create_file_at_run_time_new] $$data_source_backet=create-file-at-run-time-2
パラメータセットのアップロード
パラメータセットを作成したら、ParamSetCliでInformatica管理のクラウドリポジトリへアップロードします。
un
ではパラメータセット名、pf
ではアップロードするパラメータのファイル名、pd
ではパラメータのファイルのディレクトリを渡します。
例えば「これまではパラメータファイルを使用していたけれど、パラメータセットも使用してみたい」ということであれば、パラメータファイルをパラメータセットとしてアップロードということが可能です。
$ paramsetcli.sh runParamSetCli -un Paramset-watanabe.params -pf watanabe.prm -pd ~/infaagent/apps/Data_Integration_Server/data/userparameters -a upload . 0 [main] INFO com.activee.rt.hub.tf.paramset.cli.plugin.AeBaseCliPlugin - Welcome to Informatica CLI tool. 6081 [main] INFO com.activee.rt.hub.tf.paramset.cli.task.AeParamSetTask - 1/23/24 10:44 PM: Running upload action on Paramset-watanabe.params 6738 [main] INFO com.activee.rt.hub.tf.paramset.cli.task.AeParamSetTask - Successfully completed upload action. { "paramSetName" : "Paramset-watanabe.params", "parameterFileName" : "watanabe.prm", "parameterDir" : "/home/infa/infaagent/apps/Data_Integration_Server/data/userparameters" }
こちらにParamSetCliについての詳しい使い方の記載があるので、ご参照ください。
アップロード以外にもダウンロードや削除・リスト化が可能です。
タスクフロー作成 & 実行
以下のようなパラメータセットを使用するタスクフローを準備しました。
今回はデータタスクを失敗させて、通知タスクでメールを飛ばす処理にしています。
宛先・件名をパラメータセットからの設定とします。
まずはパラメータセットにparamSetName
の名前を記載します。
タスクフローの入力フィールドにパラメータセットのパラメータと同名のフィールドを用意します。
通知タスクにて宛先・件名を入力フィールドで設定します。
実行すると無事メールが届きました。
パラメータセットからパラメータが渡っていることがわかりました。
まとめ
以上、ParamSetCliを使用してパラメータセットからパラメータ取得をやってみました。
パラメータセットからの値取得の何が嬉しいかというと、タスクフロー実行時に入力フィールドへの値代入が可能になることです。
これまでタスクフローでは、入力フィールドへの値代入はJSONおよびXMLを通してのみ可能でした。
そのためタスクフローでパラメータファイルの値を使用する場合は、マッピングタスクで指定している入出力パラメータにパラメータファイルから値を代入してから、その入出力パラメータを使用するというような作りとしていました。
イメージとしては、パラメータファイルから値を取得するためのダミーのデータタスクを用意する、という感じです。
それがParamSetCliを使用したパラメータセットで解決するようになった!ということです。
Informatica前身のPowerCenterにおいては、ワークフロー実行時にパラメータファイルを読み込んで変数への値代入が可能でした。
パラメータセットを使用することで、CDIでもPowerCenterのような処理が実現できるということで、IDMCへの移行にも役立つでしょう。
ぜひ使ってみてください!