Snowflake

Snowflake Notification Integrations: QUEUE/EMAIL/WEBHOOK連携とSnowpipe自動トリガー

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Notification Integrationは、Snowflakeと外部の通知サービスを安全に接続するオブジェクトです。 クラウドのメッセージキュー(QUEUE)、メール(EMAIL)、 HTTPSエンドポイント(WEBHOOK)の3タイプがあり、 Snowpipeの自動トリガー、タスク失敗通知、アラート発火など幅広い用途で使用されます。

3つのタイプの概要

タイプ接続先主な用途方向
QUEUEAWS SQS / Azure Storage Queue / GCS Pub/SubSnowpipe自動トリガー、External Table自動リフレッシュ外部 → Snowflake(受信)
EMAILSnowflake内蔵メール送信Alert通知、エラー通知Snowflake → 外部(送信)
WEBHOOKHTTPSエンドポイント(Slack / PagerDuty等)リアルタイム通知、ChatOps連携Snowflake → 外部(送信)

QUEUE型: クラウドキュー連携

Snowpipeの自動トリガーで最も使用されるタイプです。 クラウドプロバイダーごとにパラメータが異なります。

AWS SQS連携

-- AWS SQS用のNotification Integration
CREATE OR REPLACE NOTIFICATION INTEGRATION aws_s3_notification
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SQS
  DIRECTION = INBOUND
  AWS_SQS_ARN = 'arn:aws:sqs:ap-northeast-1:123456789012:snowpipe-queue'
  AWS_SQS_ROLE_ARN = 'arn:aws:iam::123456789012:role/snowflake-sqs-role';

-- Integration情報の確認(SF_AWS_IAM_USER_ARN / SF_AWS_EXTERNAL_IDを取得)
DESCRIBE NOTIFICATION INTEGRATION aws_s3_notification;

Azure Storage Queue連携

-- Azure Storage Queue用のNotification Integration
CREATE OR REPLACE NOTIFICATION INTEGRATION azure_blob_notification
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
  DIRECTION = INBOUND
  AZURE_STORAGE_QUEUE_PRIMARY_URI =
    'https://myaccount.queue.core.windows.net/snowpipe-queue'
  AZURE_TENANT_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

DESCRIBE NOTIFICATION INTEGRATION azure_blob_notification;

GCS Pub/Sub連携

-- GCS Pub/Sub用のNotification Integration
CREATE OR REPLACE NOTIFICATION INTEGRATION gcs_notification
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = GCP_PUBSUB
  DIRECTION = INBOUND
  GCP_PUBSUB_SUBSCRIPTION_NAME =
    'projects/my-project/subscriptions/snowpipe-sub';

DESCRIBE NOTIFICATION INTEGRATION gcs_notification;

Snowpipe自動トリガー連携

QUEUE型Notification IntegrationとSnowpipeを組み合わせて、 ファイルがクラウドストレージに到着した時点で自動的にデータを取り込みます。

-- Snowpipeの作成(Notification Integration参照)
CREATE OR REPLACE PIPE raw_data_pipe
  AUTO_INGEST = TRUE
  INTEGRATION = aws_s3_notification
  AS
  COPY INTO raw.events
  FROM @raw.s3_stage/events/
  FILE_FORMAT = (TYPE = 'PARQUET')
  MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;

-- Pipeの状態確認
SHOW PIPES LIKE 'RAW_DATA_PIPE';
SELECT SYSTEM$PIPE_STATUS('raw_data_pipe');

-- Pipeのコピー履歴
SELECT *
FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
  TABLE_NAME => 'RAW.EVENTS',
  START_TIME => DATEADD('HOUR', -24, CURRENT_TIMESTAMP())
));

EMAIL型: メール通知

EMAIL型はAlert機能やストアドプロシージャからメール通知を送信する際に使用します。

-- Email Notification Integrationの作成
CREATE OR REPLACE NOTIFICATION INTEGRATION email_alerts
  ENABLED = TRUE
  TYPE = EMAIL
  ALLOWED_RECIPIENTS = (
    '[email protected]',
    '[email protected]'
  );

-- Alert機能でのメール通知(異常検知の例)
CREATE OR REPLACE ALERT high_cost_alert
  WAREHOUSE = monitor_wh
  SCHEDULE = '60 MINUTE'
  IF (EXISTS (
    SELECT 1
    FROM TABLE(INFORMATION_SCHEMA.WAREHOUSE_METERING_HISTORY(
      DATE_RANGE_START => DATEADD('HOUR', -1, CURRENT_TIMESTAMP())
    ))
    WHERE CREDITS_USED > 100
  ))
  THEN
    CALL SYSTEM$SEND_EMAIL(
      'email_alerts',
      '[email protected]',
      'Snowflake高コストアラート',
      '直近1時間のクレジット消費が100を超えました。確認してください。'
    );

ALTER ALERT high_cost_alert RESUME;

WEBHOOK型: HTTPSエンドポイント連携

-- Webhook Notification Integrationの作成
CREATE OR REPLACE NOTIFICATION INTEGRATION slack_webhook
  ENABLED = TRUE
  TYPE = WEBHOOK
  WEBHOOK_URL = 'https://hooks.slack.com/services/T00/B00/xxxxx'
  WEBHOOK_SECRET = snowflake.secrets.slack_secret
  WEBHOOK_BODY_TEMPLATE = '{
    "text": "SNOWFLAKE_WEBHOOK_MESSAGE"
  }'
  WEBHOOK_HEADERS = ('Content-Type' = 'application/json');

権限設計

-- Integration作成(ACCOUNTADMINで実行)
USE ROLE ACCOUNTADMIN;

-- 作成済みIntegrationの使用権限を付与
GRANT USAGE ON INTEGRATION aws_s3_notification
  TO ROLE data_engineer_role;
GRANT USAGE ON INTEGRATION email_alerts
  TO ROLE monitoring_role;

-- data_engineer_roleでSnowpipeを作成
USE ROLE data_engineer_role;
CREATE PIPE ... INTEGRATION = aws_s3_notification ...;

トラブルシューティング

症状原因対処
Snowpipeがファイルを検知しないSQSキューのポリシーでSnowflakeのIAMロールが許可されていないDESCRIBE INTEGRATIONで取得したSF_AWS_IAM_USER_ARNをSQSポリシーに追加
メール通知が届かないALLOWED_RECIPIENTSに受信者が含まれていないALTER INTEGRATION SET ALLOWED_RECIPIENTS = (...)で追加
Webhookが403を返すSecret/URLの設定ミス、またはNetwork Ruleが未設定WEBHOOK_URLとWEBHOOK_SECRETを確認し、必要ならExternal Access Integrationを設定
INTEGRATIONの作成でエラーCREATE INTEGRATION権限がないACCOUNTADMINロールで作成し、USAGEを他ロールに付与

試験で問われるポイント

  • QUEUE型はSnowpipeのAUTO_INGESTに必須。クラウドプロバイダーごとにパラメータが異なる
  • EMAIL型はALLOWED_RECIPIENTSでメール送信先を制限する
  • Integration作成はACCOUNTADMINの権限が必要
  • DESCRIBE INTEGRATIONでクラウド側のIAM設定に必要な情報(ARN / External ID等)を取得する
  • Snowpipeの自動取り込みフロー: S3イベント → SQS → Notification Integration → Snowpipe → COPY INTO

問題で確認

SnowPro

問題 1

AWS S3にファイルが到着するたびにSnowpipeで自動的にデータを取り込むパイプラインを構築しています。Notification Integrationの設定で正しい組み合わせはどれですか?

  1. TYPE = EMAIL, NOTIFICATION_PROVIDER = AWS_SNS でS3イベント通知を受信する
  2. TYPE = QUEUE, NOTIFICATION_PROVIDER = AWS_SQS でSQSキューからイベントを受信し、PipeにAUTO_INGEST = TRUEとINTEGRATION句を設定する
  3. TYPE = WEBHOOK でS3のイベントURLをWEBHOOK_URLに設定する
  4. Notification Integrationは不要で、CREATE PIPE文のAUTO_INGEST = TRUEだけで自動取り込みが開始される

正解: B

S3イベント通知 → SQSキュー → Snowflake Notification Integration(QUEUE型/AWS_SQS)→ Snowpipe(AUTO_INGEST = TRUE + INTEGRATION句)が正しいフローです。EMAIL型やWEBHOOK型はSnowpipeの自動トリガーには使用できません。AUTO_INGEST = TRUEだけではクラウドキューとの接続が確立されず、イベントを受信できません。

よくある質問

Notification IntegrationのQUEUE/EMAIL/WEBHOOKはどう使い分けますか?

QUEUE型はクラウドのメッセージキュー(AWS SQS / Azure Storage Queue / GCS Pub/Sub)と連携し、Snowpipeの自動トリガーやExternal Tableの自動リフレッシュに使用します。EMAIL型はSnowflakeからのアラート通知やタスク失敗通知をメール送信する際に使います。WEBHOOK型は外部のHTTPSエンドポイント(Slack / PagerDuty等)に直接通知を送る用途です。Snowpipe連携にはQUEUE型が必須です。

Snowpipeの自動取り込みにNotification Integrationは必ず必要ですか?

クラウドイベント通知でSnowpipeを自動トリガーする場合は必要です。AWSではS3のEvent NotificationをSQSに送り、それをSnowpipeがポーリングする構成でQUEUE型のNotification Integrationを使います。一方、REST APIでSnowpipe(insertFiles)を明示的に呼び出す場合はNotification Integrationは不要です。

Notification Integrationの権限はどのロールに付与すべきですか?

CREATE INTEGRATION権限はACCOUNTADMINが持つため、Integration自体の作成はACCOUNTADMINで行います。作成後にUSAGE ON INTEGRATION権限を必要なロール(例:data_engineer_role)に付与し、そのロールでSnowpipeやAlertのNotification Integration参照を設定します。セキュリティの観点から、ACCOUNTADMINで直接パイプラインを構築するのは避けるべきです。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.