CREATE NOTIFICATION INTEGRATION (webhooks)

Cria uma nova integração de notificação ou substitui uma integração existente para um webhook.

Consulte também:

ALTER NOTIFICATION INTEGRATION (webhooks), DESCRIBE INTEGRATION, DROP INTEGRATION, SHOW INTEGRATIONS

Sintaxe

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>' ]
Copy

Parâmetros obrigatórios

name

Cadeia de caracteres que especifica o identificador (ou seja, nome) para a integração; deve ser única em sua conta.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

ENABLED = { TRUE | FALSE }

Especifica se deve iniciar a operação da integração ou suspendê-la.

  • TRUE permite a integração.

  • FALSE desabilita a integração para manutenção. Qualquer integração entre o Snowflake e um serviço de terceiro não funciona.

TYPE = WEBHOOK

Especifica que esta é uma integração de notificação para um webhook.

WEBHOOK_URL = 'url'

Especifica o URL para o webhook. O URL devem usar o protocolo https://.

É possível especificar apenas os seguintes URLs:

  • URLs para webhooks do Slack. Esses URLs devem começar com https://hooks.slack.com/services/.

  • URLs para webhooks do Teams. Esses URLs devem usar o seguinte formato geral:

    https://<hostname>.webhook.office.com/webhookb2/<path_components>/IncomingWebhook/<path_components>
    
    Copy
  • URLs para webhooks PagerDuty. Este URL deve ser https://events.pagerduty.com/v2/enqueue.

Se o URL inclui um segredo e você criou um objeto secreto para esse segredo, substitua esse segredo no URL por SNOWFLAKE_WEBHOOK_SECRET. Por exemplo, se você criou um objeto secreto para o segredo em um URL de webhook do Slack, defina WEBHOOK_URL como:

WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
Copy

Parâmetros opcionais

WEBHOOK_SECRET = secret_name

Especifica o segredo a ser usado com esta integração.

Se você estiver usando o espaço reservado SNOWFLAKE_WEBHOOK_SECRET em WEBHOOK_URL, WEBHOOK_BODY_TEMPLATE ou WEBHOOK_HEADERS, o espaço reservado será substituído por este segredo quando você enviar uma notificação.

Se o banco de dados e o esquema com o objeto secreto não estiverem ativos quando você enviar uma notificação, qualifique o nome do segredo com o nome do esquema ou os nomes do banco de dados e esquema. Por exemplo:

WEBHOOK_SECRET = my_secrets_db.my_secrets_schema.my_slack_webhook_secret
Copy

É necessário ter privilégio USAGE no segredo (e no banco de dados e esquema que o contém) para especificar este parâmetro.

Padrão: sem valor

WEBHOOK_BODY_TEMPLATE = 'template_for_http_request_body'

Especifica um modelo para o corpo da solicitação HTTP a ser enviada para a notificação.

Se o webhook exigir um formato específico para o corpo da solicitação HTTP (por exemplo, um formato JSON específico), defina isso como uma cadeia de caracteres que especifique o formato. Nesta cadeia de caracteres:

  • Se a mensagem precisar incluir um segredo, e você tiver criado um objeto secreto para esse segredo, use o espaço reservado SNOWFLAKE_WEBHOOK_SECRET onde o segredo deve aparecer na mensagem.

  • Use o espaço reservado SNOWFLAKE_WEBHOOK_MESSAGE onde a mensagem de notificação precisa ser incluída.

Por exemplo:

WEBHOOK_BODY_TEMPLATE='{
  "routing_key": "SNOWFLAKE_WEBHOOK_SECRET",
  "event_action": "trigger",
  "payload":
    {
      "summary": "SNOWFLAKE_WEBHOOK_MESSAGE",
      "source": "Snowflake monitoring",
      "severity": "INFO",
    }
  }'
Copy

Se você definir WEBHOOK_BODY_TEMPLATE, também é necessário definir WEBHOOK_HEADERS para incluir o cabeçalho Content-Type com o tipo da mensagem. Por exemplo, se você definir WEBHOOK_BODY_TEMPLATE para um modelo no formato JSON, defina WEBHOOK_HEADERS para incluir o cabeçalho Content-Type: application/json:

WEBHOOK_HEADERS=('Content-Type'='application/json')
Copy

Padrão: sem valor

WEBHOOK_HEADERS = ( 'header'='value' [ , 'header'='value', ... ] )

Especifica uma lista de cabeçalhos HTTP e valores a serem incluídos na solicitação HTTP do webhook.

Se um cabeçalho HTTP precisar incluir um segredo (por exemplo, o cabeçalho Authorization) e você criou um objeto secreto para esse segredo, use o espaço reservado SNOWFLAKE_WEBHOOK_SECRET no valor do cabeçalho. Por exemplo:

WEBHOOK_HEADERS=('Authorization'='Basic SNOWFLAKE_WEBHOOK_SECRET')
Copy

Padrão: sem valor

COMMENT = 'string_literal'

Cadeia de caracteres (literal) que especifica um comentário da integração.

Padrão: sem valor

Requisitos de controle de acesso

Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:

Privilégio

Objeto

Notas

CREATE INTEGRATION

Conta

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

USAGE

Segredo

Se você definir a propriedade WEBHOOK_SECRET como um objeto secreto, será necessário ter o privilégio USAGE sobre esse segredo e sobre o banco de dados e o esquema que o contém.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

Exemplos

Consulte Criação da integração de notificação de webhook.