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

2020.11.02

はじめに

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

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

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

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

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

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

AWS SNSコネクション

AWS SQSコネクションを作成するとSQSをイベントソースとイベントターゲットとして扱えます。イベントソースに設定するとプロセスの開始トリガーとして使えます。一方イベントターゲットとして設定するとサービスステップの接続で呼び出すことができ、SQSキューにメッセージを送ることができます。

今回も前回のSNSと同様に以前作成した「Hello Worldを返すAPI」のプロセス内にSQSサービスステップを追加して、リクエストされた値をメッセージとして送信する様に改良します。

そのため事前準備としてSQSキューとそれをトリガーにするLambdaが必要なのですが、これはAWS公式チュートリアルで作成する「チュートリアル: Amazon Simple Queue Service で AWS Lambda を使用する 」を使いたいので準備しておきます。

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

SNSコネクションの設定

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

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

  • 名前 : 適当な名前の入力
  • タイプ : Amazon SQSを選択
  • 実行 : 事前準備したSecure Agentを選択
  • Access Key : AWS SQSのサービスを扱えるロールを持ったユーザーのAccess Keyを入力
  • Secret Key : 上記のユーザーのSecret Keyを入力
  • SNS Endpoint : SASのEnQpointを入力
    • sqs.{リージョン}.amazonaws.comの形式で入力します。リージョンはSQSのキューを作成したリージョンと合わせます。SQSコネクションの設定と違い、https://は必要有りません。

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

手順3)プロセス内でイベントターゲットとしてサービスステップで使用するため、イベントターゲットタブでAdd Event Targetでイベントターゲットを設定する。

  • 名前 : 適当な名前の入力
  • Queue Name : Amazon SQSで作成したキューの名前を入力
  • Queue Owner AWS Account ID : AWSアカウントIDを入力
  • Region : 作成したキューのリージョンを入力

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

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

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

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

このプロセス内にSQSサービスステップを追加してリクエストで送られた値をメーセージ本文に格納しメッセージをSQSに送信します。

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

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

  • サービスタイプ:接続を選択
  • 接続: 先に設定したsqs-testを選択
  • アクション: 先に作成したイベントターゲットAwsSQSWriterを選択

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

名前 内容
event 計算式 下記参照

値で計算式を選ぶと計算式エディターのモーダルが開くのでここでSQSに送るメッセージを編集できます。SQSに送る場合は最低限<Message><body>タグがあり、<body>タグ内にSQSに送りたい文字列があれば良いです。今回の例ではThis is SQS TEST. Input val isの文字列の後にリクエストで送られた$input.Inputの値を展開しています。

<Message>
   <body>
  This is SQS TEST. Input val is {$input.Input} 
   </body>
</Message>

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

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

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

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

{
  "output": "hello world 2 SQS"
}

AWSのマネージメントコンソールのCloudWatchLogsから確認すると送られてきたメッセージが適切に処理されていることがわかります。

まとめ

AWS SQSアプリケーション接続を作成し、プロセス内でサービスステップで呼び出しSQSキューへメッセージを送信してみました。今回はSQSコネクションをイベントターゲットとして使いましたが、イベントソースとして設定することでプロセスの起動トリガーとして働きます。

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