CREATE NOTIFICATION INTEGRATION (Webhook)¶
为 webhook 创建新的通知集成或替换现有集成。
- 另请参阅:
ALTER NOTIFICATION INTEGRATION (Webhook)、DESCRIBE INTEGRATION、DROP INTEGRATION、SHOW INTEGRATIONS
语法¶
CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
TYPE = WEBHOOK
ENABLED = { TRUE | FALSE }
WEBHOOK_URL = '<url>'
[ WEBHOOK_SECRET = <secret_name> ]
[ WEBHOOK_BODY_TEMPLATE = '<template_for_http_request_body>' ]
[ WEBHOOK_HEADERS = ( '<header_1>'='<value_1>' [ , '<header_N>'='<value_N>', ... ] ) ]
[ COMMENT = '<string_literal>' ]
必填参数¶
name
字符串,指定集成的标识符(即名称);在账户中必须是唯一的。
此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object"
)。放在双引号内的标识符也区分大小写。有关更多信息,请参阅 标识符要求。
ENABLED = { TRUE | FALSE }
指定是启动集成操作还是暂停集成操作。
TRUE
启用集成。FALSE
禁用集成以便进行维护。Snowflake 与第三方服务之间的任何集成都无法正常工作。
TYPE = WEBHOOK
指定这是 Webhook 的通知集成。
WEBHOOK_URL = 'url'
指定 Webhook 的 URL。URL 必须使用
https://
协议。只能指定以下 URLs:
Slack Webhook 的 URLs。这些 URLs 必须以
https://hooks.slack.com/services/
开头。Teams Webhook 的 URLs。这些 URLs 必须使用以下通用格式:
https://<hostname>.webhook.office.com/webhookb2/<path_components>/IncomingWebhook/<path_components>
PagerDuty Webhook 的 URLs。此 URL 必须是
https://events.pagerduty.com/v2/enqueue
。
如果 URL 包含一个密钥并且您 为该密钥创建了一个密钥对象,请使用 SNOWFLAKE_WEBHOOK_SECRET 替换 URL 中的密钥。例如,如果您 为 Slack Webhook URL 中的密钥创建了一个密钥对象,请将 WEBHOOK_URL 设置为:
WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
可选参数¶
WEBHOOK_SECRET = secret_name
指定 要用于此集成的密钥。
如果您在 WEBHOOK_URL、WEBHOOK_BODY_TEMPLATE 或 WEBHOOK_HEADERS 中使用 SNOWFLAKE_WEBHOOK_SECRET 占位符,当您发送通知时,将用此密钥替换占位符。
如果发送通知时包含密钥对象的数据库和架构未处于活动状态,请 使用架构名称或数据库和架构名称限定密钥名称。例如:
WEBHOOK_SECRET = my_secrets_db.my_secrets_schema.my_slack_webhook_secret
您必须拥有对密钥(以及包含它的数据库和架构)的 USAGE 权限才能指定此参数。
默认:无值
WEBHOOK_BODY_TEMPLATE = 'template_for_http_request_body'
指定用于发送通知的 HTTP 请求正文的模板。
如果 Webhook 要求 HTTP 请求正文采用特定格式(例如,特定 JSON 格式),请将此项设置为指定该格式的字符串。在此字符串中:
如果消息需要包含密钥,而您 为该密钥创建了一个密钥对象,则在消息中应出现密钥的位置使用 SNOWFLAKE_WEBHOOK_SECRET 占位符。
在需要包括通知消息的位置使用 SNOWFLAKE_WEBHOOK_MESSAGE 占位符。
例如:
WEBHOOK_BODY_TEMPLATE='{ "routing_key": "SNOWFLAKE_WEBHOOK_SECRET", "event_action": "trigger", "payload": { "summary": "SNOWFLAKE_WEBHOOK_MESSAGE", "source": "Snowflake monitoring", "severity": "INFO", } }'
如果设置了 WEBHOOK_BODY_TEMPLATE,则还必须设置 WEBHOOK_HEADERS 以包括其中包含您的消息类型的
Content-Type
标头。例如,如果您将 WEBHOOK_BODY_TEMPLATE 设置为 JSON 格式的模板,则设置 WEBHOOK_HEADERS 以包括标头Content-Type: application/json
:WEBHOOK_HEADERS=('Content-Type'='application/json')
默认:无值
WEBHOOK_HEADERS = ( 'header'='value' [ , 'header'='value', ... ] )
指定一个 HTTP 标头和值列表,以包括在对 Webhook 的 HTTP 的请求中。
如果 HTTP 标头必须包含一个密钥(例如,
Authorization
标头),并且您 为该密钥创建了一个密钥对象,请在标头值中使用 SNOWFLAKE_WEBHOOK_SECRET 占位符。例如:WEBHOOK_HEADERS=('Authorization'='Basic SNOWFLAKE_WEBHOOK_SECRET')
默认:无值
COMMENT = 'string_literal'
字符串(字面量),用于指定集成注释。
默认:无值
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE INTEGRATION |
账户 |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
USAGE |
密钥 |
如果将 WEBHOOK_SECRET 属性设置为密钥对象,则必须对该密钥以及包含该密钥的数据库和架构拥有 USAGE 权限。 |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
请参阅 创建 Webhook通知集成。