【CAI】InformaticaでRedshiftからデータ取得する外部公開APIを作成してみた
はじめに
こんにちは、データアナリティクス事業本部の渡部です。
今回は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のクエリパラメータが一致するレコードから、catgroup
とcatname
を取得します。
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.DriverJDBC Connection URL
:jdbc:redshift://endpoint:port/database
アクションタブでアクションを定義します。
入力にはcatid
を設定し、テスト値として1を設定しました。
SQLは以下のとおり設定します。
select catid, catgroup, catname, catdesc from dwh.category where catid = '{$catid}'
出力はcatgroup
とcatname
を代入するフィールドを設定します。
テストが成功すればOKです。
アプリケーション接続の作成
DASで使用した接続プロパティのテスト値として同じ値を設定します。
こちらで設定した値が接続処理では使用されます。
プロセスの作成
全体図は以下のとおりになります。
まずは開始ステップで入力フィールドと出力フィールドを設定します。
ここの入力フィールドはクエリパラメータ、出力フィールドはAPIのレスポンスとして使用します。
サービスステップで作成したアプリケーション接続を設定します。
入力フィールドで、開始ステップで設定した入力フィールドを指定します。
割り当てステップで、開始ステップで作成した出力フィールドにDASコネクタで作成した出力フィールドを指定します。
あとはパブリッシュをして完成です。
まとめ
POSTMANでGETしたところ、以下のとおりレスポンスが無事返ってきました。
1秒あたりでレスポンスが返ってきますね。
以上、CAIでのRedshiftからのデータ取得API作成でした。
お役に立てれば幸いです。