DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【GCP入門】SlackにBigQueryの結果を通知する機構を作る - PrismScaler

【GCP入門】SlackにBigQueryの結果を通知する機構を作る - PrismScaler

1. はじめに

こんにちは!株式会社Definerの阪本です!
今回は、SlackにBigQueryの結果を通知する機構を作る方法についてご紹介したいと思います。

2. 目的・ユースケース

この記事では、SlackにBigQueryの結果を通知したいときに、参考になる情報やプラクティスをまとめています。

3. セットアップ

まずは、セットアップを行なっていきます。
前提として、BigQueryはすでに存在するものとします。
 
①Pub/Subの作成
GCPにログインし、「Pub/Sub」のトピックの作成をクリックします。
 
②BigQueryのスケジュール化
BigQuery画面に移動し、「スケジュールされたクエリ」から、クエリの定期実行設定をします。
通知オプションで、先ほど作成したPub/Subを指定します。
 
ここまでで、下準備は完了です

4. Slackへの通知

続いてSlackへの通知を、Cloud Functionsで作っていきます。
 
①関数トリガーの設定
GCPコンソールからCloud Functionsに画面に遷移し、「関数の作成」
トリガータイプは「Cloud Pub/Sub」を選択します。
 

 
②関数のコード設定
メインのSlack通知部分を、Pythonで記載していきます。
以下のコードのうち、Slack Web hookは各自のSlack web hookに読み替えてください。
import base64
import requests
import json
import os

def notify_slack(event, context):
    event_decode = base64.b64decode(event['data']).decode('utf-8')
    message = json.loads(event_decode)
    if message['state'] != 'FAILED':
        return
    name = message['name']
    error_status = message['errorStatus']['message']
    query = message['params']['query']
    error_summary = {
        "text": "スケジュールされたクエリが失敗しました。",
        "attachments": [{
            "color": "danger",
            "pretext": "Failed",
            "title": "Failed",
            "fields": [
                {
                    "title": "Name",
                    "value": name,
                },
                {
                    "title": "Error status",
                    "value": error_status,
                },
                {
                    "title": "Query",
                    "value": query,
                }],
        }]
    }

    url = ${Slack web hook}
    response = requests.post(url, data=json.dumps(error_summary))

    return print(response.text.encode('utf8'))                
 

失敗時、Slackに通知されました!

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

・ PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
・ クラウド基盤にまつわる「自動構築」「自動監視」「問題検知」「構成可視化」などの効率化を実現し、クラウドエンジニア、SRE/DevOpsエンジニアが行う泥臭く大変な作業を肩代わりするソリューションです。
・ クラウド基盤構築/クラウド移行や、クラウドの保守運用・コスト最適化など幅広い利用シーンを想定しており、IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
 

7. お問合せ

本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。