CREATE NOTIFICATION INTEGRATION

在账户中创建新的通知集成或替换现有集成。通知集成是一个 Snowflake 对象,在 Snowflake 与第三方消息传递服务(第三方云消息队列服务、电子邮件服务等)之间提供接口。

另请参阅:

ALTER NOTIFICATION INTEGRATIONDROP INTEGRATIONSHOW INTEGRATIONS

功能

在每个云存储服务和电子邮件服务的以下功能中,通知集成都是重要组成部分:

Amazon Web Services (AWS):

推送通知:

电子邮件通知:

Google Cloud (GCP):

自动数据加载或元数据刷新:

推送通知:

Microsoft Azure (Azure):

自动数据加载或元数据刷新:

推送通知:

语法

自动数据加载或元数据刷新

CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ]
  <name>
  ENABLED = { TRUE | FALSE }
  TYPE = QUEUE
  cloudProviderParamsAuto
  [ COMMENT = '<string_literal>' ]
Copy

其中:

  • 对于 Google Cloud Storage:

    cloudProviderParamsAuto ::=
      NOTIFICATION_PROVIDER = GCP_PUBSUB
      GCP_PUBSUB_SUBSCRIPTION_NAME = '<subscription_id>'
    
    Copy
  • 对于 Microsoft Azure 存储:

    cloudProviderParamsAuto ::=
      NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
      AZURE_STORAGE_QUEUE_PRIMARY_URI = '<queue_URL>'
      AZURE_TENANT_ID = '<directory_ID>';
    
    Copy

推送通知

CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ]
  <name>
  ENABLED = { TRUE | FALSE }
  DIRECTION = OUTBOUND
  TYPE = QUEUE
  cloudProviderParamsPush
  [ COMMENT = '<string_literal>' ]
Copy

其中:

  • 对于 Amazon SNS:

    cloudProviderParamsPush ::=
    
      NOTIFICATION_PROVIDER = AWS_SNS
      AWS_SNS_TOPIC_ARN = '<topic_arn>'
      AWS_SNS_ROLE_ARN = '<iam_role_arn>'
    
    Copy
  • 对于 Google Pub/Sub:

    cloudProviderParamsPush ::=
      NOTIFICATION_PROVIDER = GCP_PUBSUB
      GCP_PUBSUB_TOPIC_NAME = '<topic_id>'
    
    Copy
  • 对于 Microsoft Azure 事件网格:

    cloudProviderParamsPush ::=
      NOTIFICATION_PROVIDER = AZURE_EVENT_GRID
      AZURE_EVENT_GRID_TOPIC_ENDPOINT = '<event_grid_topic_endpoint>'
      AZURE_TENANT_ID = '<directory_ID>';
    
    Copy

电子邮件通知

CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
  TYPE = EMAIL
  ENABLED = { TRUE | FALSE }
  [ ALLOWED_RECIPIENTS = ( '<email_address>' [ , ... '<email_address>' ] ) ]
  [ DEFAULT_RECIPIENTS = ( '<email_address>' [ , ... '<email_address>' ] ) ]
  [ DEFAULT_SUBJECT = '<subject_line>' ]
  [ COMMENT = '<string_literal>' ]
Copy

必填参数

name

字符串,指定集成的标识符(即名称);在账户中必须是唯一的。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

ENABLED = { TRUE | FALSE }

指定是启动集成操作还是暂停集成操作。

  • TRUE 启用集成。

  • FALSE 禁用集成以便进行维护。Snowflake 与第三方服务之间的任何集成都无法正常工作。

TYPE = QUEUE | EMAIL

指定集成类型:

  • QUEUE:在 Snowflake 与第三方云消息队列服务之间创建接口。

  • EMAIL:在 Snowflake 与第三方电子邮件服务之间创建接口。

    可以为给定账户定义最多 10 个电子邮件通知集成。

可选参数

DIRECTION = OUTBOUND

(对于使用 TYPE = QUEUE 的推送通知)与 Snowflake 有关的云消息传递方向。仅当配置为将推送通知发送到云消息传递服务时才需要。

OUTBOUND:指定 Snowflake 生成发送到云消息传递服务的通知。

COMMENT = 'string_literal'

字符串(字面量),用于指定集成注释。

默认:无值

自动数据加载或元数据刷新的云提供商参数 (cloudProviderParamsAuto)

Google Cloud Storage

NOTIFICATION_PROVIDER = GCP_PUBSUB

将 Google Cloud Pub/Sub 指定为第三方云消息队列服务。

GCP_PUBSUB_SUBSCRIPTION_NAME = '<subscription_id>'

用于允许 Snowflake 访问事件消息的 Pub/Sub 主题订阅 ID。

备注

一个通知集成支持一个 Google Cloud Pub/Sub 订阅。在多个通知集成中引用相同的 Pub/Sub 订阅可能会导致目标表中缺少数据,因为事件通知在通知集成之间是分开的。

Microsoft Azure 存储

NOTIFICATION_PROVIDER = AZURE_EVENT_GRID

将 Microsoft Azure 事件网格指定为第三方云消息队列服务。

AZURE_STORAGE_QUEUE_PRIMARY_URI = 'https://storage_queue_account.queue.core.windows.net/storage_queue_name'

指定为事件网格通知创建的 Azure 队列存储队列的队列 ID。

备注

单个通知集成支持单个 Azure 存储队列。在多个通知集成中引用同一存储队列可能会导致目标表中缺少数据,因为事件通知会在多个通知集成之间拆分。

AZURE_TENANT_ID = 'ad_directory_id'

指定用于身份管理的 Azure Active Directory 租户的 ID。需要此 ID 才能生成允许 Snowflake 访问事件网格通知订阅的同意 URL。

推送通知的云提供商参数 (cloudProviderParamsPush)

Amazon Simple Notification Service

NOTIFICATION_PROVIDER = AWS_SNS

将 Amazon Simple Notification Service (SNS) 指定为第三方云消息队列服务。

AWS_SNS_TOPIC_ARN = '<topic_arn>'

将通知推送到的 Amazon SNS (SNS) 主题的 Amazon Resource Name (ARN)。

AWS_SNS_ROLE_ARN = '<iam_role_arn>'

有权向 SNS 主题发布消息的 IAM 角色的 ARN。

Google Pub/Sub

NOTIFICATION_PROVIDER = GCP_PUBSUB

将 Google Cloud Pub/Sub 指定为第三方云消息队列服务。

GCP_PUBSUB_TOPIC_NAME = '<topic_id>'

Snowpipe 将通知推送到的 Pub/Sub 主题的 ID。

Microsoft Azure 事件网格

NOTIFICATION_PROVIDER = AZURE_EVENT_GRID

将 Microsoft Azure 事件网格指定为第三方云消息队列服务。

AZURE_EVENT_GRID_TOPIC_ENDPOINT = '<event_grid_topic_endpoint>'

Snowpipe 将通知推送到的事件网格主题端点。

AZURE_TENANT_ID = 'ad_directory_id'

用于身份管理的 Azure Active Directory 租户的 ID。需要此 ID 才能生成允许 Snowflake 访问事件网格主题的同意 URL。

电子邮件通知的参数

ALLOWED_RECIPIENTS=('email_address' [, ... 'email_address'])

(对于 TYPE = EMAIL)用逗号分隔的引用电子邮件地址列表,这些地址可接收来自此集成的通知电子邮件。

您必须指定当前账户中用户的电子邮件地址。这些用户必须 验证其电子邮件地址

您可以指定的最大电子邮件地址数为 50。

如果省略此参数,则可以向当前账户中经过验证的所有电子邮件地址发送电子邮件通知。

DEFAULT_RECIPIENTS = ( 'email_address' [ , ... 'email_address' ] )

指定通过此集成发送的邮件的默认收件人列表。使用逗号分隔的带引号的电子邮件地址列表来指定默认收件人。

您必须指定当前账户中用户的电子邮件地址。这些用户必须验证其电子邮件地址。

要替换给定邮件的默认收件人,请在调用 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 存储过程时使用 EMAIL_INTEGRATION_CONFIG 帮助程序函数。

DEFAULT_SUBJECT = 'subject_line'

指定通过此集成发送的邮件的默认主题行。

主题长度不能超过 256 个字符。

默认:“Snowflake 电子邮件通知”

要替换给定邮件的默认主题行,请在调用 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 存储过程时使用 EMAIL_INTEGRATION_CONFIG 帮助程序函数。

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE INTEGRATION

账户

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 不支持为多个 Microsoft Azure 存储队列或 Google Cloud Pub/Sub 订阅创建单个通知集成。

    • 使用与另一个通知集成具有相同队列 URL 的通知集成创建新管道时,管道创建会失败并显示错误:Notification queue already in use with another integration

  • 自动数据加载或元数据刷新不支持使用相同的 Microsoft Azure 存储队列或 Google Cloud Pub/Sub 订阅进行多个入站通知集成。

  • 推送通知支持对多个管道使用相同的出站通知集成。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • 云提供商的政府区域不允许向或从其他商业区域发送事件通知。有关更多信息,请参阅 ` AWS GovCloud (US) <https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-s3.html (https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-s3.html)> `_ 和 ` Azure Government <https://learn.microsoft.com/en-us/azure/azure-government/ (https://learn.microsoft.com/en-us/azure/azure-government/)> `_。

示例

有关特定于 Snowflake 功能的示例,请参阅 功能 中引用的主题(本主题内容)。

语言: 中文