IICSのCDIでAmazon S3 V2タイプの接続のターゲットとなるパスにパラメータの値を使う

2023.04.10

データアナリティクス事業本部の鈴木です。

今回はInformatica Cloud Data Integration(以降、CDI)でAmazon S3 V2コネクタを使ってS3にデータを出力する際に、出力先となるパスにパラメータの値を入れて、セキュアエージェントサーバーに設定されたパラメータファイルによって出力先が変更できるか確認しました。

やりたいこと

CDIでS3バケットにデータを出力するようなETLパイプラインを構築する場合、環境の切り替えは、例えば接続によってバケットごと向き先を切り替えることができます。

以下のようなイメージです。

接続による環境の切り替えイメージ

一方で何かしらの理由でパラメータを使ってパスを切り替えたい場合がある場合、接続だけでは対応できないので、今回はパラメータファイルに入っている値を使って切り替えられないかと考え、設定方法について確認してみました。

パスによる環境の切り替えイメージ

今回は、マッピングのターゲットの詳細Folder Pathにパラメータの値を入れることで、パラメータファイルの値を使ってパスが切り替えられるか確認します。

リソースの準備

接続の作成

管理者接続で、Amazon S3 V2コネクタで接続を作成しました。Folder Pathにはあらかじめ作成しておいた検証用のS3バケットを設定しました。

Amazon S3 V2タイプについては以下のドキュメントを参照ください。

ソースとなるファイルの配置

接続で参照しているS3上に以下のように適当なCSVファイルを配置しておきました。

ソースの配置

マッピングの作成

今回は以下の2つのアセットを用意しました。

用意したアセット

ソースは以下のように定義しました。Amazon S3 V2タイプの接続で、適当なCSVファイルを読み込んでいます。今回はターゲットでオブジェクト出力のパスの切り替えができるか見たいだけなので、深くは記載しません。

ソース

ターゲットは以下のように定義しました。こちらもAmazon S3 V2タイプの接続で、ソースで読み込んだデータをそのままFlat形式で書き込むようにしています。詳細はひとまずデフォルトのままとしておきます。

ターゲット

ターゲットオブジェクトの設定は以下です。output.csvという名前の、cm-nayuts-test/outputというキープレフィクスでオブジェクトが作成されます。

ターゲットオブジェクトの設定

マッピングタスクは以下のように、先ほど作成したマッピングを設定しておきます。

マッピングの設定

今回はパラメータファイルのパラメータを後ほど利用するので、読み込み設定をしておきます。パラメータファイルは、デフォルトでパラメータファイルが参照されるapps/Data_Integration_Server/data/userparametersparameter.txtを作成したので、以下のようにファイル名のみ設定しました。

パラメータファイルの設定

パラメータファイルの作成

先に記載した通り、パラメータファイルは、デフォルトでパラメータファイルが参照されるセキュアエージェントサーバーのローカルのapps/Data_Integration_Server/data/userparametersparameter.txtとして作成しました。

内容はまず以下のようにしておきました。

parameter.txt

[Global]
$$env=dev

動かしてみた

ここまでの記載で、今回の検証の初期状態となる設定までご紹介しました。

今回は、マッピングのターゲットの詳細Folder Pathにパラメータの値を入れることで、パラメータファイルの値を使ってパスが切り替えられるか確認します。まずは初期設定で動かした後、パスの切り替え方法を確認します。

1. 初期設定での挙動

マッピングタスクを実行し、終了するのを待ってS3バケットを確認すると、cm-nayuts-test/output/output.csvというキーのオブジェクトが接続に設定したバケットに作成されていました。

初期設定で作成されるオブジェクト

2. パラメータファイルのパラメータを使ったときの挙動

次にマッピングタスクを修正し、パラメータファイルのパラメータを使ったときの挙動を確認します。

マッピングのターゲット詳細を開き、以下のようにFolder Pathを設定しました。注意点は、バケット名/キーのプレフィクスとなるように記載する点です。値を入力し、保存しておきます。

Folder Pathの記載

また、envパラメータファイルから値が読めるように、マッピングに入出力パラメータを設定しておきました。パラメータボタンを押します。

入出力パラメータの設定

以下のようにenvパラメータを設定し、OKを押しました。

入出力パラメータの設定2

以下のように設定できました。

入出力パラメータの設定3

マッピングでマッピングタスクを再設定すると、以下のように入出力パラメータが設定されたことを確認できます。(このときはまだ未実行なので空になっています)

入出力パラメータの設定4

マッピングを実行すると、以下のようにFolder Pathで指定した場所にファイルが作成されました。

devの出力先

今回は$$envdevとパラメータファイルに設定してありましたが、例えばGitHub経由で本番のIICSの組織とセキュアエージェントサーバーにデプロイした場合、パラメータファイルに$$envprodと定義されてあれば、パスも切り替わってほしいですね。今回はパラメータファイルを書き換えることで、擬似的に上手くいくか確認してみます。

パラメータファイルを以下のように書き換えました。

parameter.txt

[Global]
$$env=prod

再度マッピングを実行すると、以下のオブジェクトが作成されました。

prodの出力先

最後に

今回はIICS CDIでAmazon S3 V2コネクタを使ってS3にデータを出力する際に、出力先となるパスにパラメータの値を入れて、セキュアエージェントサーバーに設定されたパラメータファイルによって出力先が変更できるか確認しました。参考になりましたら幸いです。