【CAI】InformaticaでRedshiftからデータ取得する外部公開APIを作成してみた

Informaticaで簡単にRedshiftからデータ取得するAPIを作成できますよ。
2024.06.11

はじめに

こんにちは、データアナリティクス事業本部の渡部です。

今回はInformaticaのCloud Application Integration(以下、CAI)でRedshiftからデータ取得するAPIを作成してみます。
CAIで作成するAPIには以下特徴があります。

  • ネットワークが繋がっていなくてもAPIでデータ取得できる(APIをInformaticaCloud公開とした場合)
  • APIを自由に作成することができる
  • 認証認可やIPフィルタリング・流量制御が簡単に設定できる
  • APIをCloud公開とする場合は、5MBのサイズ制限がある

実現すること

以下のような構成でRedshift ServerlessからデータをAPI経由で取得します。
構成図は簡単のために省略している箇所がありますが、SecureAgentからRedshiftにアクセスするAPI処理を作成して、外部公開APIとしてパブリッシュしたものをクライアントが実行する、というのが分かっていただければ幸いです。

RedshiftのテーブルはAWSのtickitdbのCATEGORYテーブルを使用します。

以下のテーブルのcatidとAPIのクエリパラメータが一致するレコードから、catgroupcatnameを取得します。

catid catgroup catname catdesc update_at
1 Sports MLB Major League Baseball 2024-05-30 15:44:25
2 Sports NHL National Hockey League 2024-05-30 15:44:25
3 Sports NFL National Football League 2024-05-30 15:44:25
4 Sports NBA National Basketball Association 2024-05-30 15:44:25
5 Sports MLS Major League Soccer 2024-05-30 15:44:25

やってみる

JDBCドライバのダウンロードとインストール

CAIのDASコネクタを使用するので、JDBCでRedshiftと接続するためJDBCドライバのインストールが必要です。
DASコネクタの詳しい解説についてはこちらの記事をご参考ください。

RedshiftのJDBCドライバはこちらからダウンロードします。

展開すると、redshift-jdbc42-2.1.0.28.jarがあるのが確認できます。
将来的には異なるjarファイルとなっていると思われるので、その際は似た名前のファイルを選択ください。
jarファイルをSecure Agentがインストールされているサーバーの<Informatica Cloud Secure Agent>\apps\process-engine\extに配置して、サーバーを再起動します。

DASコネクタの作成

ここからはInformaticaの開発ターンです。
以下のとおりDASコネクタを作成します。

接続プロパティは以下のとおり設定して、他はデフォルトのままとします。

  • JDBC Driver:com.amazon.redshift.jdbc.Driver
  • JDBC Connection URL:jdbc:redshift://endpoint:port/database

アクションタブでアクションを定義します。
入力にはcatidを設定し、テスト値として1を設定しました。

SQLは以下のとおり設定します。

select catid, catgroup, catname, catdesc from dwh.category where catid = '{$catid}'

出力はcatgroupcatnameを代入するフィールドを設定します。

テストが成功すればOKです。

アプリケーション接続の作成

DASで使用した接続プロパティのテスト値として同じ値を設定します。
こちらで設定した値が接続処理では使用されます。

プロセスの作成

全体図は以下のとおりになります。

まずは開始ステップで入力フィールドと出力フィールドを設定します。
ここの入力フィールドはクエリパラメータ、出力フィールドはAPIのレスポンスとして使用します。

サービスステップで作成したアプリケーション接続を設定します。
入力フィールドで、開始ステップで設定した入力フィールドを指定します。

割り当てステップで、開始ステップで作成した出力フィールドにDASコネクタで作成した出力フィールドを指定します。

あとはパブリッシュをして完成です。

まとめ

POSTMANでGETしたところ、以下のとおりレスポンスが無事返ってきました。
1秒あたりでレスポンスが返ってきますね。

以上、CAIでのRedshiftからのデータ取得API作成でした。
お役に立てれば幸いです。