
IICSのCDIでAmazon S3 V2タイプの接続のターゲットとなるパスにパラメータの値を使う
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
データアナリティクス事業本部の鈴木です。
今回は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/userparametersにparameter.txtを作成したので、以下のようにファイル名のみ設定しました。

パラメータファイルの作成
先に記載した通り、パラメータファイルは、デフォルトでパラメータファイルが参照されるセキュアエージェントサーバーのローカルのapps/Data_Integration_Server/data/userparametersにparameter.txtとして作成しました。
内容はまず以下のようにしておきました。
[Global] $$env=dev
動かしてみた
ここまでの記載で、今回の検証の初期状態となる設定までご紹介しました。
今回は、マッピングのターゲットの詳細のFolder Pathにパラメータの値を入れることで、パラメータファイルの値を使ってパスが切り替えられるか確認します。まずは初期設定で動かした後、パスの切り替え方法を確認します。
1. 初期設定での挙動
マッピングタスクを実行し、終了するのを待ってS3バケットを確認すると、cm-nayuts-test/output/output.csvというキーのオブジェクトが接続に設定したバケットに作成されていました。

2. パラメータファイルのパラメータを使ったときの挙動
次にマッピングタスクを修正し、パラメータファイルのパラメータを使ったときの挙動を確認します。
マッピングのターゲットの詳細を開き、以下のようにFolder Pathを設定しました。注意点は、バケット名/キーのプレフィクスとなるように記載する点です。値を入力し、保存しておきます。

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

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

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

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

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

今回は$$envはdevとパラメータファイルに設定してありましたが、例えばGitHub経由で本番のIICSの組織とセキュアエージェントサーバーにデプロイした場合、パラメータファイルに$$envがprodと定義されてあれば、パスも切り替わってほしいですね。今回はパラメータファイルを書き換えることで、擬似的に上手くいくか確認してみます。
パラメータファイルを以下のように書き換えました。
[Global] $$env=prod
再度マッピングを実行すると、以下のオブジェクトが作成されました。

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






