IICSのCDIでAmazon S3 V2タイプの接続のターゲットとなるパスにパラメータの値を使う
データアナリティクス事業本部の鈴木です。
今回は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にデータを出力する際に、出力先となるパスにパラメータの値を入れて、セキュアエージェントサーバーに設定されたパラメータファイルによって出力先が変更できるか確認しました。参考になりましたら幸いです。