Cloud StorageへのファイルアップロードをトリガーにGoogle Chatへチャットを送る方法
GCSへのファイルアップロードをGoogle Chatで検知する仕組みを作ってみよう!
Google Cloud Platform(GCS)でデータ分析基盤などを運用している場合、データレイクとして様々なデータをCloud Storage(GCS)のバケットに連携しているケースが多いかと思います。そのような場合、GCPの外部からGCSのバケットにデータ連携が適切に行われたかどうか、確認したいと思っている方もいるかと思います。
特に、夜間や早朝のバッチ処理などで、基幹系のシステムからGCPにデータ連携処理をしている場合には、正常にデータ連携が行われていない場合にはリカバリーが必要になるため、通知があると便利かと思います。
GCSにはバケットの更新をトリガーに、Cloud Functionsの関数を自動的に実行する機能があります。GCPを利用している人は恐らくGoogle Chatを利用している方が多いと思うので、バケットに正常にファイルアップロードができたことをGoogle Chatに通知を出せる仕組みを作ってみましょう!
バケットへのアップロードをトリガーにCloud Functionsを実行する手順
Cloud Storage上にバケットを作成する
それでは、必要となる手順について、説明していきます。
まずはCloud Storage上にバケットを作成します。バケットの作成は以下の投稿を参考にしていただけるとよいかと思います。
(参考)BigQueryをもっと活用するために-Cloud Storageでデータレイクの構築
Google Chatにチャットルームを作成する
Google Chat上で通知を出す方法として、今回は通知専用のチャットルームを作成することにします。
チャットルーム横の”+”をクリック
「チャットルームを作成」をクリック
チャットルームに名前(ここでは”GCF_TRIGGER”)を付けて「作成」をクリックします。
チャットルームからWebhookの設定に必要なURLを取得する
Cloud FunctionsからGoogle Chatに通知を飛ばすには、Webhookの仕組みを利用する必要があります。作成したチャットルームから設定に必要となるURLを取得します。
「Webhookを管理」をクリック
Webhook設定用のURLをコピーする
Cloud Functionsで関数を作成する
Cloud Functionsで関数を作成します。今回作成する関数は、Cloud Storageのバケット(triggertest_20210606)にファイル、フォルダがアップロードされたら、アップロードされた旨をGoogle Chatのグループチャット「GCF_TRIGGER」に通知メッセージを出力する関数です。
関数の作成画面で以下の設定を行い、「保存」→「次へ」をクリック
- 関数名:googlechat-trigger
- リージョン:asia-northeast1
- トリガーのタイプ:Cloud Storage
- Event type:ファイナライズ/作成
- バケット:任意のバケット名(本記事では”triggertest_20210606″を利用)
- ランタイム:Python3.7 (3.8、3.9でも可)
- エントリポイント:googlechat_trigger
- main.pyに以下のコードを記述
コードの詳細は以下の通りとなります。
from json import dumps from httplib2 import Http def googlechat_trigger(data, context): url = [Google Chatのグループチャットから取得したWebhook設定用のURL] bot_message = { 'text': data['name'] + 'ファイルがアップロードされました'} message_headers = {'Content-Type': 'application/json; charset=UTF-8'} http_obj = Http() response = http_obj.request( uri=url, method='POST', headers=message_headers, body=dumps(bot_message), ) print(response) if __name__ == '__main__': googlechat_trigger()
コードを作成したらデプロイします。
デプロイが完了したら、対象のバケット内にデータをアップロードし、Google Chatのメッセージがグループチャットに届くことを確認します。
以上で設定手順は完了です。ぜひGoogle ChatとCloud Functions、Cloud Storageをうまく利用して、システムの運用を効率的に行いましょう!
また、関連記事として、Google Cloudのサービスを利用してGoogle Chatのスペースに自動で投稿する仕組みの作り方を載せています。
(参考)Google Chatのスペース上に自動で投稿するbotを作成するための手順
こちらも参考にしていただければ幸いです。