はじめに
こんにちは。クラウド&NW技術統括部T.Hです。
今回は、GoogleCloud上で、Cloud Data FusionにデプロイされているパイプラインをトリガーにしてCloud Functionsの関数を実行する方法を紹介します。
前提
Cloud Data Fusionとは?
Cloud Data FusionはGoogle Cloudが提供するフルマネージドのデータ統合サービスです。
ブラウザ上での操作のためコードを書く必要がなくコードの知識がない方でも直感的に操作が出来るかと思います。
詳しく知りたい方はこちらを参照してください。
どんなときにCloud Data FusionパイプラインからCloud Functions関数を呼び出す必要がある?
いろんなことができるかと思いますが、
例えば「パイプラインの実行に失敗したらSlackに通知してほしい」という要件があったとき、今回の方法が役立ちます。
Cloud Functionsに、指定のSlackチェンネルにメッセージを送信する関数を作成してデプロイしておいて、Cloud Data Fusionパイプラインに今回紹介する方法で紐づければ、上の要件が実現できるのです。
どの機能を使ってData FusionパイプラインからCloud Functions関数を実行する?
ずばり、"Pipeline Alert"という機能を使います。
この機能の中に、「Make HTTP Call」があり、それを使うことでパイプラインの実行結果が「成功・失敗・完了」のいずれかのステータスのときに設定したURLにHTTPリクエストを送信す
準備するもの
- デプロイ済みのCloud Data Fusionパイプライン
- デプロイ済みのCloud Functions関数(※)
※関数の設定値で以下の部分を以下のように設定してください。
- トリガータイプ: HTTP
- トリガー認証:未認証の呼び出しを許可
- 上り(内向き)設定:内部トラフィックのみを許可する
★Cloud Data Fusion の Make HTTP call アクションから送信されるリクエストには、適切な認証情報(Cloud IAM で認証されたトークンなど)が含まれておらず、トリガー実行時に認証エラーが発生するため、Cloud Functions関数のトリガー認証設定を「未認証の呼び出しを許可」に設定します。
この際に、外部からHTTP関数を実行されないようにするために、ネットワークの上り(内向き)設定を「内部トラフィックのみを許可する」にします。これによりGoogle Cloudの内部ネットワークからのトラフィックのみが関数にアクセスできるようになります。つまり、外部からの直接的なアクセスは拒否されます。
トリガータイプ
トリガー認証
上り(内向き)設定
設定手順
1. 任意のパイプラインの編集画面を開く
2. 「Configure」から「Pipeline Alert」を追加する。
3. 「HTTP Callback」を選択する。
4. 各種設定をする。
- Run Condition:トリガーの発動条件設定でパイプラインの完了・成功・失敗の3つの中から選択する。
- URL:CloudFunctions関数のトリガーURLを入力する。
- HTTP Method:POSTを選択する。
5.設定を保存して終了する。
画像赤枠の「Next」をクリックします。
画像赤枠の「Confirm」をクリックします。
6. 編集を終了しデプロイする。
画像赤枠の「Save」をクリックします。
画像赤枠の「Deploy」をクリックします。
7. パイプラインの実行画面から設定が適用されていることを確認する。
動作確認
Cloud Data Fusionパイプラインの様子
Logsからパイプラインの実行成功とトリガーが成功していることが確認できました!
Cloud Functions関数の様子
Cloud Functionsからもトリガーによって関数が実行されていることが確認できました!
おわりに
個人的な感想としては、発動条件(Runcondition)が選べるので、失敗したら通知するなどのように結果次第で異なるアクションを行えるのがとても便利だなと思いました。
以上、Cloud Data FusionパイプラインをトリガーにしてCloud Functions関数を実行する方法の紹介でした。