Notifications pour les budgets

Pour recevoir des notifications lorsque votre utilisation du crédit est susceptible de dépasser vos limites de dépenses, vous devez définir le budget de manière à ce que les notifications puissent être envoyées à la destination de votre choix. Vous pouvez recevoir des notifications par les moyens suivants :

  • E-mail.

  • Messages poussés vers une file d’attente fournie par un service Cloud (Amazon SNS, Azure Event Grid ou Google Cloud PubSub).

  • Appels vers un webhook pour Slack, Microsoft Teams ou PagerDuty.

Note

Les notifications par e-mail sont traitées par les déploiements de Snowflake sur Amazon Web Services (AWS), à l’aide de AWS Simple Email Service (SES). Le contenu d’un e-mail envoyé à l’aide d’AWS peut être conservé par Snowflake pendant un maximum de trente jours afin de gérer la livraison du message. Après cette période, le contenu du message est supprimé.

Contrôle de l’envoi de notifications

Par défaut, les notifications commencent lorsque les dépenses prévues dépassent de plus de 10 % la limite de dépenses du budget.

Vous pouvez remplacer cette valeur par défaut en définissant un seuil de notification, qui correspond à un pourcentage de la limite de dépenses du budget. Les notifications sont envoyées lorsque Snowflake prévoit que les dépenses dépasseront le seuil.

Par exemple, supposons que vous souhaitiez que des notifications soient envoyées lorsque les dépenses prévues dépassent 50 % de la limite de dépenses du budget. Pour définir ce seuil de notification pour le budget du compte, exécutez la commande suivante :

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_THRESHOLD(50);
Copy

Vous pouvez également définir un seuil de notification pour les budgets personnalisés.

Si vous souhaitez réinitialiser le seuil de notification par défaut, appelez la méthode /sql-reference/classes/budget/methods/set_notification_threshold`avec ``110` comme argument.

Définir une notification par e-mail

Pour définir une notification par e-mail :

  1. (Facultatif) Si vous souhaitez utiliser votre propre intégration de notification, créez une intégration de notification ou sélectionnez une intégration de notification existante que vous souhaitez utiliser. Une intégration de notification permet à Snowflake d’envoyer des notifications à un système tiers.

    1. Créez une intégration de notification avec TYPE = EMAIL et ALLOWED_RECIPIENTS définis sur la liste des adresses e-mail vérifiées des destinataires. Pour plus d’informations, voir Créer une intégration des notifications par e-mail et Restreindre la liste des adresses électroniques pouvant recevoir des notifications.

      Note

      Chaque adresse e-mail ajoutée pour les notifications de budget doit être vérifiée. La configuration des notifications par e-mail échoue si une adresse e-mail de la liste n’est pas vérifiée.

      Par exemple :

      CREATE NOTIFICATION INTEGRATION budgets_notification_integration
        TYPE = EMAIL
        ENABLED = TRUE
        ALLOWED_RECIPIENTS = ('costadmin@example.com','budgetadmin@example.com');
      
      Copy
    2. Vérifiez que l’intégration de notification fonctionne comme prévu en appelant la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer un message de test.

      Par exemple, vous pouvez envoyer un message de test au format JSON :

      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
        SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
      );
      
      Copy
    3. Accordez le privilège USAGE sur l’intégration des notifications à l’application SNOWFLAKE. Le privilège USAGE permet au budget d’utiliser l’intégration de notification pour envoyer la notification. Par exemple :

      GRANT USAGE ON INTEGRATION budgets_notification_integration
        TO APPLICATION snowflake;
      
      Copy
  2. Indiquez les adresses e-mail qui doivent recevoir la notification. Si vous avez créé ou sélectionné une intégration de notification à utiliser, associez l’intégration de notification au budget.

    Pour ce faire, appelez la méthode <nom_budget>!SET_EMAIL_NOTIFICATIONS et spécifiez ce qui suit :

    • Si vous ne disposez pas d’une intégration de notification que vous souhaitez utiliser, transmettez une liste délimitée par des virgules d’adresses e-mail vérifiées. Par exemple, si vous configurez des notifications pour le budget du compte :

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
    • Si vous souhaitez utiliser une intégration de notification, indiquez le nom de cette intégration et une liste délimitée par des virgules d’adresses e-mail vérifiées. Par exemple, si vous configurez des notifications pour le budget du compte :

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
  3. Si vous avez associé une intégration de notification au budget, vous pouvez vérifier que le budget est associé à votre intégration de notification en appelant la méthode <nom_budget>!GET_NOTIFICATION_INTEGRATION_NAME. Cette méthode renvoie le nom de l’intégration de notification par e-mail associée au budget.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

Définir la notification de file d’attente

Pour définir la notification de file d’attente

  1. Créez une intégration de notification ou sélectionnez une intégration de notification existante que vous souhaitez utiliser. Une intégration de notification permet à Snowflake d’envoyer des notifications à un système tiers.

    Créez une intégration de notification avec TYPE=QUEUE, DIRECTION=OUTBOUND, et les propriétés supplémentaires requises pour le fournisseur de Cloud. Pour plus d’informations, voir :

    Note

    Votre compte doit être sur la même plateforme cloud en tant que file d’attente du fournisseur de cloud.

    Par exemple :

    CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration
      ENABLED = TRUE
      TYPE = QUEUE
      DIRECTION = OUTBOUND
      NOTIFICATION_PROVIDER = AWS_SNS
      AWS_SNS_TOPIC_ARN = '<ARN_for_my_SNS_topic>'
      AWS_SNS_ROLE_ARN = '<ARN_for_my_IAM_role>';
    
    Copy

    Note

    Pour les notifications de file d’attente et de webhook, vous pouvez associer jusqu’à 10 intégrations de notification à un budget.

  2. Vérifiez que l’intégration de notification fonctionne comme prévu en appelant la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer un message de test.

    Par exemple, vous pouvez envoyer un message de test au format JSON :

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. Accordez le privilège USAGE sur l’intégration des notifications à l’application SNOWFLAKE. Le privilège USAGE permet au budget d’utiliser l’intégration de notification pour envoyer la notification. Par exemple :

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. Associez l’intégration de notification au budget. Appelez la méthode <nom_budget>!ADD_NOTIFICATION_INTEGRATION en indiquant le nom de l’intégration.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  5. Vérifiez que l’intégration de notification est associée au budget.

    Appelez la méthode <nom_budget>!GET_NOTIFICATION_INTEGRATIONS pour imprimer la liste des intégrations de notification associées au budget.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Cette méthode permet d’imprimer une table qui liste les noms des intégrations, les dates auxquelles elles ont été utilisées pour envoyer des notifications et les dates auxquelles elles ont été ajoutées.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

Définir une notification par webhook

Pour définir une notification par webhook :

  1. Créez une intégration de notification ou sélectionnez une intégration de notification existante que vous souhaitez utiliser. Une intégration de notification permet à Snowflake d’envoyer des notifications à un système tiers.

    Créez une intégration de notification avec TYPE=WEBHOOK et les propriétés supplémentaires requises pour le webhook. Pour plus d’informations, voir Envoi de notifications webhook.

    Le message de notification est au format JSON, vous devez donc configurer l’intégration de notification pour qu’elle le prenne en charge. Par exemple, les instructions suivantes créent un secret et une intégration de notification pour un webhook Slack :

    CREATE OR REPLACE SECRET my_database.my_schema.slack_secret
      TYPE = GENERIC_STRING
      SECRET_STRING = '... secret in my Slack webhook URL ...';
    
    CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration
      ENABLED = TRUE
      TYPE = WEBHOOK
      WEBHOOK_URL = 'https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
      WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
      WEBHOOK_HEADERS=('Content-Type'='application/json')
      WEBHOOK_SECRET = slack_secret;
    
    Copy

    Note

    Pour les notifications de file d’attente et de webhook, vous pouvez associer jusqu’à 10 intégrations de notification à un budget.

  2. Vérifiez que l’intégration de notification fonctionne comme prévu en appelant la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer un message de test.

    Par exemple, vous pouvez envoyer un message de test au format JSON. Assurez-vous d’échapper les guillemets doubles de la chaîne JSON et les barres obliques inverses :

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{\\\"name\\\": \\\"value\\\"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. Accordez le privilège USAGE sur l’intégration des notifications à l’application SNOWFLAKE. Le privilège USAGE permet au budget d’utiliser l’intégration de notification pour envoyer la notification. Par exemple :

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. Si vous utilisez une intégration de notification par webhook qui repose sur un secret, accordez les privilèges suivants à l’application SNOWFLAKE.

    • Le privilège READ relatif à ce secret.

    • Le privilège USAGE relatif au schéma contenant ce secret.

    • Le privilège USAGE relatif à la base de données contenant ce schéma.

    Par exemple :

    GRANT READ ON SECRET slack_secret TO APPLICATION snowflake;
    GRANT USAGE ON SCHEMA my_schema TO APPLICATION snowflake;
    GRANT USAGE ON DATABASE my_database TO APPLICATION snowflake;
    
    Copy
  5. Associez l’intégration de notification au budget.

    Appelez la méthode <nom_budget>!ADD_NOTIFICATION_INTEGRATION et indiquez le nom de l’intégration.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  6. Vérifiez que l’intégration de notification est associée au budget.

    Appelez la méthode <nom_budget>!GET_NOTIFICATION_INTEGRATIONS, qui imprime la liste des intégrations de notification associées au budget.

    Par exemple, si vous configurez des notifications pour le budget du compte :

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Si vous configurez des notifications pour un budget personnalisé, appelez la méthode sur l’objet du budget personnalisé. Par exemple, si vous avez créé un budget personnalisé appelé my_budget :

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    Cette méthode permet d’imprimer une table qui liste les noms des intégrations, les dates auxquelles elles ont été utilisées pour envoyer des notifications et les dates auxquelles elles ont été ajoutées.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

Interpréter le message de notification JSON

Lorsque vous configurez un budget pour envoyer une notification à une file d’attente d’un fournisseur de Cloud ou à un webhook, le message de notification contient un objet JSON similaire à ce qui suit :

{
  "account_name": "MY_ACCOUNT",
  "budget_name": "MY_BUDGET_NAME",
  "type": "BUDGET_LIMIT_WARNING",
  "limit": "100",
  "spending": "67.42",
  "spending_percent": "67.42",
  "spending_trend_percent": "130.63",
  "time_percent":"51.61"
}
Copy

L’objet JSON contient les paires clés-valeurs suivantes :

Clé

Description

account_name

Nom de votre compte.

budget_name

Nom de votre budget. Pour le budget du compte, le nom est ACCOUNT_ROOT_BUDGET.

type

Le type de la notification (par exemple, BUDGET_LIMIT_WARNING).

limit

La limite de dépenses que vous avez définie pour le budget.

spending

Le montant de l’utilisation du crédit pour ce mois.

spending_percent

Le pourcentage de la limite de dépenses qui a déjà été dépensé (spending / limit).

spending_trend_percent

Pourcentage prévu de la limite de dépenses à dépenser avant la fin du mois (spending_percent / time_percent * 100).

time_percent

Pourcentage du temps écoulé pour le mois (par exemple, 50.00 si le mois est à moitié écoulé).

Consulter l’historique des notifications relatives à un budget

Pour voir l’historique des notifications pour un budget, appelez la fonction NOTIFICATION_HISTORY et filtrez par nom d’intégration. Par exemple :

SELECT * FROM TABLE(
  INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
    INTEGRATION_NAME=>'budgets_notification_integration'
  )
);
Copy

La colonne message_source contient BUDGET pour les lignes représentant les notifications de budget.

Désactiver les notifications pour un budget

Pour désactiver les notifications pour un budget, appelez la méthode SET_NOTIFICATION_MUTE_FLAG et passez TRUE comme argument. Par exemple :

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_MUTE_FLAG(TRUE);
Copy

Supprimer l’intégration d’une notification dans un budget

Pour supprimer une intégration de notification d’un budget, appelez la méthode <nom_budget>!REMOVE_NOTIFICATION_INTEGRATION en indiquant le nom de l’intégration. Par exemple :

CALL my_budget!REMOVE_NOTIFICATION_INTEGRATION(
  'budgets_notification_integration',
);
Copy