はじめに
ご無沙汰しております。
直近記事のネタになりそうなものがなく、投稿をサボっていました。
さて、今回は
Amazon S3へのファイル配置をトリガーに、TMC上のTalendジョブを実行
という仕組みを構築しましたので、その備忘録として記事にまとめたいと思います。
今回の記事は2部構成で
- [AWS側] イベント通知設定
- [Talend側] TMC上でのWebhook実行の設定
となります。
本投稿は
[AWS側] イベント通知設定
についての内容となります。
Talendへの連携に限らず、さまざまな用途で利用可能ですので、ぜひご覧ください。
必要な作業
今回は、
「Amazon S3にファイルが配置されたことをトリガーに、Amazon SNSのパブリッシュを行い、TMCのWebhook用URLにリクエストを送信する」
という仕組みを構築しました。
この実現のためには、以下の2つの設定を行う必要があります。
下記で、これらについて順を追って解説していきます。
Amazon SNSの設定
Amazon Simple Notification Service (Amazon SNS) について、詳細は公式サイトをご覧ください。
Amazon SNS側の設定としては、以下の2つを行う必要があります。
トピックの作成
トピックの作成は下記の手順で行います。
-
今回の設定内容は以下の通り
- タイプ : 今回は「スタンダード」を選択
- 名前 : 条件に沿った任意の文字列
- 表示名 - オプション : 条件に沿った任意の文字列
- アクセスポリシー : 以下の内容を追加
"Sid": "(任意の名称)", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:<region>:<AccountID>:<Topic>", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:s3:::<BucketName>" } }
- その他の設定は変更しない
これで、トピックの作成は完了しました。
サブスクリプションの設定
次に、サブスクリプションの設定を行います。
-
今回の設定内容は以下の通り
- トピックARN : トピックの作成で作成したトピックのARN
- プロトコル : 今回は"HTTPS"を指定
- エンドポイント : Webhook実行用URLを指定
- その他の設定は変更しない
サブスクリプションが作成された際、サブスクリプションを有効化するための情報が、登録したURLに対して送信されます。
サブスクリプションの登録後、SubscribeURLにGetリクエストを送信することで、このサブスクリプションが有効になります。
Amazon SNSからTalendのWebhook用アドレスにリクエストを送信した場合、(SubscribeURLも含め) Talendジョブ側にJSON形式で情報が渡ります。
このため今回は、Webhookで呼び出されるジョブに「JSONの"\$.data.Type"の値が"SubscriptionConfirmation"である場合に、"\$.data.SubscribeURL"のURLにGetリクエストを送信する」という処理を入れ、初回登録時に自動で有効化できるようにしました。
ここまでで、サブスクリプションが利用できるようになりました。手動でも「メッセージの発行」を行うことで、(一応は) Webhookでジョブを実行することができます。
Amazon S3の設定
Amazon SNSの設定ができたところで、次はAmazon S3側の設定を下記の手順で行います。
ここまでで、S3側の設定も完了です。
お疲れ様でした。
最後に
最近、Talendとは直接関係のない作業を行うことも増えてきましたが、なんやかんやでそれらタスクを (一応は) こなせている自分自身に驚いています。
こうやって、少しづつでもできることが増えていくのはとてもいいものですね。
以上、お読みいただきありがとうございました。