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では、
・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。
・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。
・少ないエンジニアで事業が成長する仕組みづくりの実現。
・エンジニアが喜ぶ、採用しやすい環境づくりの実現。
・高速なアジャイル開発環境の実現。
・自社プロダクトとしてPrismScalerを展開。
上記事業内容を進行しております。
※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。
ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

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