0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[AWS/Talend] AWS S3へのファイル配置をトリガーにTMC上のTalendジョブを実行する手順 (part1 AWS編)

Last updated at Posted at 2024-12-13

はじめに

ご無沙汰しております。
直近記事のネタになりそうなものがなく、投稿をサボっていました。
さて、今回は
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つを行う必要があります。

  1. トピックの作成
  2. サブスクリプションの設定

トピックの作成

トピックの作成は下記の手順で行います。

  1. Amazon SNSのダッシュボードにアクセスし、「トピック」を押下する
    topic_01.png

  2. 「トピックの作成」を押下する
    topic_02.png

  3. 情報を入力し、画面下部の「トピックを作成」を押下する
    topic_03.png
    topic_04.png

    今回の設定内容は以下の通り

    • タイプ : 今回は「スタンダード」を選択
    • 名前 : 条件に沿った任意の文字列
    • 表示名 - オプション : 条件に沿った任意の文字列
    • アクセスポリシー : 以下の内容を追加
      "Sid": "(任意の名称)",
      "Effect": "Allow",
      "Principal": {
          "AWS": "*"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:<region>:<AccountID>:<Topic>",
      "Condition": {
          "StringEquals": {
              "AWS:SourceArn": "arn:aws:s3:::<BucketName>"
          }
      }
      
    • その他の設定は変更しない
  4. 「トピック (トピック名) が正常に作成されました」と表示されたら完了
    topic_05.png

これで、トピックの作成は完了しました。

サブスクリプションの設定

次に、サブスクリプションの設定を行います。

サブスクリプションの設定にあたり、事前にTMC側にてWebhook用のURLを用意しておく必要があります。
赤枠の箇所にURLが表示されます。
webhook.png

  1. Amazon SNSのダッシュボードにアクセスし、「トピック」を押下する
    subscription_01.png

  2. 「サブスクリプションの作成」を押下する
    subscription_02.png

  3. 情報を入力し、画面下部の「トピックを作成」を押下する
    subscription_03.png
    subscription_04.png

    今回の設定内容は以下の通り

    • トピックARN : トピックの作成で作成したトピックのARN
    • プロトコル : 今回は"HTTPS"を指定
    • エンドポイント : Webhook実行用URLを指定
    • その他の設定は変更しない
  4. 「(トピック名) へのサブスクリプションが正常に作成されました」と表示されたら、サブスクリプションの作成は完了
    subscription_05.png

サブスクリプションが作成された際、サブスクリプションを有効化するための情報が、登録した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側の設定を下記の手順で行います。

  1. イベント通知を行いたいバケットのプロパティから、「イベント通知の作成」を押下する
    s3_01.png

  2. 情報を入力し、画面下部の「変更の保存」を押下する
    s3_02.png
    s3_03.png
    s3_04.png

  3. 「イベント通知「(入力名)」は正常に作成されました。」と表示されたら完了
    s3_05.png

ここまでで、S3側の設定も完了です。
お疲れ様でした。

最後に

最近、Talendとは直接関係のない作業を行うことも増えてきましたが、なんやかんやでそれらタスクを (一応は) こなせている自分自身に驚いています。
こうやって、少しづつでもできることが増えていくのはとてもいいものですね。

以上、お読みいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?