SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()を使って通知を送ってみた
さがらです。
私もよくチェックしているSelect Labs社のブログにて、Alerts & Notifications in Snowflake (Updated for 2024) という記事が2024年1月に出ていました。
この記事の中で、SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()
を使って通知を送る方法の記載がありましたので、私も実際にやってみたいと思います。
Slackチャンネルのメールアドレスの取得
まず、通知を送りたいSlackのチャンネルから右上の設定を編集する
から、インテグレーション
タブを開き、このチャンネルにメールを送信する
を押します。
メールアドレスを取得する
を押し、表示されたメールアドレスをコピーします。
Snowflakeでユーザーを作成
次に、Snowflakeからメールを送ることが出来るのはユーザーとして登録されたメールアドレスだけのため、先ほど取得したメールアドレスを用いて任意のユーザーを作成します。
※余談:現在はTYPEの指定ができるため、type = service
とすることでパスワードも発行されずSlackでのメッセージ送信のためだけに用いるユーザーと出来る…と思って一度試したのですが、メールアドレスの確認メッセージを送ることが出来ず…
create user <任意のユーザー名>
type = person
default_role = public
password = '<任意のパスワード>'
must_change_password = true
email = '<取得したアドレス>';
この後、作成したユーザーでログインし、ProfileからResend verification email
を押します。
すると、下図のようにSlackチャンネルにメッセージが飛ぶので、VALIDATE YOUR EMAIL
を押します。
押した後に、下図のような画面が表示されればOKです。
type=emailのNOTIFICATION INTEGRATIONを作成
次に、SYSTEM$SEND_EMAIL()
を使うにはtype = email
のNOTIFICATION INTEGRATIONが必要のため、作成します。
create notification integration <任意の名称>
type = email
enabled = true;
SYSTEM$SEND_EMAIL()でSlackへメッセージを送信
これまでの工程で準備は整ったので、実際にSYSTEM$SEND_EMAIL()
を使ってSlackにメッセージを送信してみたいと思います。
call system$send_email(
'<作成したNOTIFICATION INTEGRATIONの名称>',
'<Slackチャンネルのメールアドレス>',
'<メールのタイトル>',
'<メールの本文>'
);
すると、下図のようにSlackにメッセージが送信されました!本文では\n
を入れると改行も出来ます。
あとは、SYSTEM$SEND_EMAIL()
を各種通知に使っていけばOKです!
最後に
Select Labs社のブログに記載されていた内容に沿って、SnowflakeからSlackの特定のチャンネルにSYSTEM$SEND_EMAIL()
を使って通知を送ることをやってみました。
SnowflakeからSlackに連携して通知するには色々な方法があるのですが、この方法が一番簡単に実現出来ると思います!気になった方はぜひやってみてください。