IICS(CAI)でAWS SNS接続を設定する

2020.11.02

はじめに

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

Informatica Intelligent Cloud Services(以降、IICS)はオンプレミスおよびクラウド環境に置かれているデータサービスとアプリケーションサービスを統合するiPaaS(integration Platform as a Service)製品です。

IICSの機能の一つであるInformatica Cloud Application Integration(以降、CAI)ではAPIをGUIの操作で簡単に構築することができます。

CAIではアプリケーション接続を作成することでプロセス内のサービスステップから作成した様々なサービスを呼び出すことができます。

前回はJDBCコネクションの作成を行いましたので今回はAWS SNSコネクションを作成しプロセス内で使ってみたいと思います。

  • JDBCコネクション(第1回)
  • AWS SNSコネクション(第2回)
  • AWS SQSコネクション(第3回)

AWS SNSコネクション

AWS SNSコネクションを作成するとSNSトピックの作成やメッセージのパブリッシュなどのAWS SNSに関する一連の操作が行えるようになります。今回行うのは以前作成した「Hello Worldを返すAPI」のプロセス内にSNSサービスステップを追加して、リクエストされた値をメッセージとして送信する様に改良します。

そのため事前準備として「SNSトピックの作成」とそれに付随する「サブスクリプションへのエンドポイントの追加」は行っているものとして進めます。

またSNSコネクションはSecureAgentが必須なため作成するAPIもSecureAgent上で動かします。

SNSコネクションの設定

手順1) サイドメニューから新規を選択するとモーダルが表示されるのでその中からアプリケーション接続を選択し、作成を押下する。

手順2) 接続の詳細の設定を行う。

  • 名前 : 適当な名前の入力
  • タイプ : Amazon SNSを選択
  • 実行 : 事前準備したSecure Agentを選択
  • SNS Endpoint : SNSのEndpointを入力
    • https://sns.{リージョン}.amazonaws.com/の形式で入力します。リージョンはSNSトピックと合わせます。
  • Access Key : AWS SNSのサービスを扱えるロールを持ったユーザーのAccess Keyを入力
  • Secret Key : 上記のユーザーのSecret Keyを入力

*他は基本的にデフォルト設定で問題ないです。

手順3)右上のメニューからパブリッシュを押下してアプリケーション接続をパブリッシュする。

これでSNSコネクションの作成は終わりです。次にこのステップをプロセス内で使ってみます。

プロセスへSNSコネクションのサービスステップの追加

プロセスは以前作成した「Hello Worldを返すAPI 」の中のオウム返しをするプロセス「p_hello_world_2」を使います。これはリクエストで送られた値をそのままレスポンスで返すプロセスでした。

このプロセス内にSNSサービスステップを追加してリクエストで送られた値をSNSトピックにメッセージとして送るようにしたいと思います。

手順1)以前作成意したp_hello_world_2プロセスを開き、サービスステップを終了ステップの前に配置する。

手順2)サービスのタブを選択してアクションの設定を行う。

  • サービスタイプ:接続を選択
  • 接続: 先に設定したsns-testを選択
  • アクション: Publish Messageを選択

手順3)入力フィールドタブを開き、メッセージをパブリッシュする設定を行う。

名前 内容
Topic ARN コンテンツ メッセージをパブリッシュしたいAWS SNSトピックARN
Publish Message 計算式 fn:concat ("Input: ", $input.Input , " is sent." ,fn:current-dateTime())

これでSNSサービスステップの追加は終わりなのですが、先に説明した通りAWS SNSコネクションはSecureAgent上でしか動かせません。したがってこのプロセスもSecureAgent上で実行しなくてはいけないのでその設定を行います。

プロセスをSecureAgent上で実行する設定

手順1)開始ステップを選択し、開始タブを押下する。実行で事前準備したSecure Agentを選択する。

手順2)保存を押下してプロセスを保存し、右上のメニューからパブリッシュを実行する。

手順3)同じ右上のメニューからプロパティの詳細を押下し、サービスURLを確認する。

以前プロセスを作成した際には実行環境がIICSのクラウドサーバーを選択したためサービスURLもIICSのアドレスになっていましたが今回はSecureAgentを実行環境に選択したためアドレスとポートが変わっています。そのためSwaggerファイルの表示やリクエストの送信先を変更する必要があります。また表示されているサービスURLはSecureAgentからみたアドレスになっているのでこれをlocalhostからSecureAgentにアクセスできるIP(URL)に読み替える必要があります。

APIエンドポイントにリクエストを送ってみる

curl -X POST "https://{SecureAgentのアドレス}:7443/process-engine/public/rt/p_hello_world_2" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"Input\": \"testtest\"}"

レスポンスとして以下が返ってきます。

{
  "output": "testtest"
}

AWS SNSトピックのサブスクリプションのエンドポイントにEMAILを設定してあるのでメールを確認してみると意図した内容でメールが送られてきているのが確認できます。

まとめ

AWS SNSアプリケーション接続を作成し、プロセス内でサービスステップで呼び出しSNSトピックにメーセージをパブリッシュしてみました。特に難しい設定も無く簡単に使えると思います。

次回はアプリケーション接続のAWS SQS編を試してみたいと思います。

最後まで読んで頂いてありがとうございました。