Activer le budget du compte ou créer des budgets personnalisés¶
Pour utiliser la fonction Budgets, activez le budget du compte et créez des budgets personnalisés afin de surveiller l’utilisation du crédit pour un groupe d’objets Snowflake spécifiques.
Vous pouvez configurer un budget pour qu’il vous avertisse par e-mail, par une file d’attente d’un fournisseur Cloud ou par un webhook lorsque l’utilisation du crédit devrait dépasser la limite de dépenses.
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é.
Activation du budget du compte¶
Pour commencer à utiliser les budgets afin de surveiller l’utilisation du crédit pour votre compte, activez le budget du compte. Après avoir activé le budget du compte, vous pouvez fixer la limite de dépenses pour le compte et indiquez les adresses e-mail à utiliser pour recevoir des notifications lorsque l’utilisation du crédit devrait dépasser la limite de dépenses. Les notifications commencent lorsque les dépenses prévues dépassent de plus de 10 % la limite de dépenses.
Vous pouvez activer le budget de compte en utilisant l”Snowsight ou en exécutant les instructions SQL.
Les sections suivantes expliquent comment activer le budget des comptes :
Après avoir activé et configuré le budget du compte, vous pouvez permettre à un utilisateur qui n’est pas administrateur de surveiller le budget du compte en utilisant un rôle personnalisé. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller le budget du compte.
Créer un rôle personnalisé pour gérer le budget du compte¶
Vous pouvez créer un rôle personnalisé pour activer et modifier le budget du compte. Un utilisateur qui se voit attribuer ce rôle peut agir en tant qu’administrateur du budget et peut effectuer les actions suivantes sur le budget du compte :
Activer ou désactiver le budget du compte.
Définir une limite de dépense.
Modifier les paramètres de notification.
Surveiller l’utilisation du crédit pour le compte.
Pour obtenir la liste complète des rôles et privilèges requis pour le rôle d’administrateur du budget, voir Rôles et privilèges Budgets.
L’exemple suivant crée un rôle nommé account_budget_admin
et octroie à ce rôle la possibilité de contrôler et de gérer le budget du compte :
USE ROLE ACCOUNTADMIN;
CREATE ROLE account_budget_admin;
GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE account_budget_admin;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_admin;
Utiliser l”Snowsight pour activer le budget du compte¶
Note
Seul un utilisateur ayant le rôle ACCOUNTADMIN ou un rôle bénéficiant des privilèges d’administrateur de budget de compte peut activer et configurer le budget de compte.
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
Si vous y êtes invité, sélectionnez un entrepôt.
Dans le coin supérieur droit du tableau de bord, sélectionnez Set up Account Budget.
Saisissez la limite de dépenses cible pour le compte.
Saisissez les adresses e-mail qui recevront les courriels de notification.
Note
Chaque adresse e-mail ajoutée pour les notifications de budget doit être vérifiée. La configuration des e-mails de notification échoue si une adresse e-mail de la liste n’est pas vérifiée.
Sélectionnez Finish Setup.
Utilisez les commandes SQL pour activer le budget du compte¶
Note
Seul un utilisateur ayant le rôle ACCOUNTADMIN ou un rôle bénéficiant des privilèges d’administrateur de budget de compte peut activer et configurer le budget de compte.
Activez le budget du compte en appelant la méthode budget_racine_compte!ACTIVATE sur l’objet SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET :
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ACTIVATE();
Définissez la limite des dépenses en utilisant la méthode <nom_budget>!SET_SPENDING_LIMIT :
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_SPENDING_LIMIT(1000);
Définissez des notifications pour le budget afin de recevoir des notifications lorsque votre utilisation du crédit devrait dépasser vos limites de dépenses.
Création d’un budget personnalisé¶
Vous pouvez créer un budget personnalisé à l’aide de l”Snowsight ou en exécutant les instructions SQL.
Les sections suivantes expliquent comment créer un budget personnalisé :
Créer un rôle personnalisé pour créer des budgets¶
Vous pouvez utiliser un rôle personnalisé pour créer des budgets dans votre compte. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour créer un budget personnalisé, voir Rôles et privilèges Budgets.
L’exemple suivant crée un rôle nommé budget_owner
et accorde le rôle et les privilèges requis pour créer des budgets personnalisés dans le schéma budgets_db.budgets_schema
. L’exemple doit être exécuté en utilisant le rôle ACCOUNTADMIN :
USE ROLE ACCOUNTADMIN;
CREATE ROLE budget_owner;
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_owner;
GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner;
GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_owner;
GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
TO ROLE budget_owner;
Si vous souhaitez permettre à un rôle autre que le propriétaire du budget de modifier les paramètres d’un budget personnalisé, vous pouvez créer un rôle personnalisé avec des privilèges de modification. Pour plus d’informations, voir Créer un rôle personnalisé pour gérer un budget personnalisé.
Utiliser l”Snowsight pour créer un budget personnalisé¶
Note
Si le budget du compte n’est pas activé ou a été désactivé, vous ne pouvez pas utiliser Snowsight pour créer des budgets personnalisés. En revanche, vous pouvez créer des budgets personnalisés via SQL.
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
Dans le coin supérieur droit du tableau de bord, sélectionnez
(Ajouter un budget).
Entrez un Budget name.
Sélectionnez la base de données et le schéma dans lesquels vous souhaitez créer votre budget.
Entrez le Spending limit.
Indiquez les adresses e-mail qui reçoivent les notifications.
Note
Chaque adresse e-mail ajoutée pour les notifications de budget doit être vérifiée. La configuration des e-mails de notification échoue si une adresse e-mail de la liste n’est pas vérifiée.
Sélectionnez Resources to monitor.
Pour ajouter une base de données, développez Databases pour sélectionner une base de données.
Pour ajouter des objets dans un schéma, développez le schéma pour obtenir la liste des objets disponibles. Développez la catégorie d’objets (par exemple, Tables ou Tasks) pour sélectionner les objets.
Pour ajouter un entrepôt, développez Warehouses et sélectionnez un entrepôt.
Pour ajouter un pool de calcul, développez Compute Pools pour sélectionner un pool de calcul.
Note
Lorsque vous sélectionnez une base de données ou un schéma, tous les objets pris en charge (par exemple, les tables) contenus dans la base de données ou le schéma sont également ajoutés au budget.
Vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Si un objet est actuellement inclus dans un budget personnalisé et que vous ajoutez cet objet à un deuxième budget personnalisé, Budgets supprime l’objet du premier budget personnalisé sans émettre d’avertissement.
Après avoir créé et configuré un budget personnalisé, vous pouvez créer un rôle personnalisé pour permettre aux administrateurs ne possédant pas de compte de surveiller les ressources et l’utilisation du budget. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.
Utiliser les commandes SQL pour créer un budget personnalisé¶
Créez un budget personnalisé, puis définissez la limite de dépenses et les adresses e-mail de notification.
Note
Pour créer un budget personnalisé, vous devez utiliser un rôle doté des privilèges requis pour créer un budget.
Pour modifier un budget personnalisé, vous devez utiliser un rôle doté des privilèges requis pour modifier un budget.
Examinez les budgets existants dans votre compte :
Note
L’instruction suivante renvoie les budgets pour lesquels vous disposez de privilèges d’accès. Seul un utilisateur ayant le rôle ACCOUNTADMIN peut voir tous les budgets du compte.
SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
Créez le budget
my_budget
dansbudgets_db.budgets_schema
en utilisant la commande CREATE BUDGET :USE SCHEMA budgets_db.budgets_schema; CREATE SNOWFLAKE.CORE.BUDGET my_budget();
Fixez une limite de dépenses mensuelles. Par exemple, fixez la limite de dépenses à 500 crédits par mois :
CALL my_budget!SET_SPENDING_LIMIT(500);
Définissez des notifications pour le budget afin de recevoir des notifications lorsque votre utilisation du crédit devrait dépasser vos limites de dépenses.
Après avoir créé et configuré un budget personnalisé, vous pouvez créer un rôle personnalisé pour permettre aux administrateurs ne possédant pas de compte de surveiller les ressources et l’utilisation du budget. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.
Pour ajouter des objets à votre nouveau budget, consultez Ajout et suppression d’objets dans un budget personnalisé.
Créer un rôle personnalisé pour gérer un budget personnalisé¶
Pour contrôler et modifier un budget personnalisé, vous pouvez accorder des privilèges et des rôles d’instance à un rôle personnalisé. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour modifier un budget personnalisé, voir Rôles et privilèges Budgets.
Exemples¶
Accorder au rôle personnalisé budget_admin
la possibilité de surveiller et de modifier le budget my_budget
dans le schéma budgets_db.budgets_schema
:
Note
Seul un rôle disposant du privilège OWNERSHIP sur le budget personnalisé peut exécuter les exemples suivants.
Par exemple, accordez les privilèges requis et le rôle d’instance au rôle personnalisé
budget_admin
pour le budgetmy_budget
dans le schémabudgets_db.budgets_schema
:GRANT USAGE ON DATABASE budgets_db TO ROLE budget_admin; GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_admin; GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN TO ROLE budget_admin; GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_admin;
Accordez le privilège APPLYBUDGET sur les objets à ajouter ou à retirer d’un budget personnalisé. Cette étape est nécessaire pour chaque objet à ajouter ou à supprimer.
Par exemple, pour permettre au rôle
budget_admin
d’ajouter la base de donnéesdb1
au budget personnalisémy_budget
, exécutez les instructions suivantes :GRANT USAGE ON DATABASE db1 TO ROLE budget_admin; GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
Pour modifier les objets d’un budget personnalisé, voir Ajout et suppression d’objets dans un budget personnalisé.
Travailler avec les notifications pour un budget¶
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.
Les sections suivantes expliquent comment définir des notifications et interpréter les messages de notification :
Définir une notification par e-mail¶
Pour définir une notification par e-mail :
(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.
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');
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') );
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;
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' );
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' );
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' );
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' );
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();
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();
Définir la notification de file d’attente¶
Pour définir la notification de file d’attente
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>';
Note
Pour les notifications de file d’attente et de webhook, vous pouvez associer jusqu’à 10 intégrations de notification à un budget.
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') );
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;
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', );
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', );
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();
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();
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 :
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;
Note
Pour les notifications de file d’attente et de webhook, vous pouvez associer jusqu’à 10 intégrations de notification à un budget.
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') );
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;
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;
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', );
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', );
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();
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();
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"
}
L’objet JSON contient les paires clés-valeurs suivantes :
Clé |
Description |
---|---|
|
Nom de votre compte. |
|
Nom de votre budget. Pour le budget du compte, le nom est |
|
Le type de la notification (par exemple, |
|
La limite de dépenses que vous avez définie pour le budget. |
|
Le montant de l’utilisation du crédit pour ce mois. |
|
Le pourcentage de la limite de dépenses qui a déjà été dépensé ( |
|
Pourcentage prévu de la limite de dépenses à dépenser avant la fin du mois ( |
|
Pourcentage du temps écoulé pour le mois (par exemple, |
Consulter l’historique des notifications relatives à un budget¶
Pour voir l’historique des notifications concernant 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'
)
);
La colonne message_source
contient BUDGET
pour les lignes représentant les notifications de budget.
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',
);
Ajout et suppression d’objets dans un budget personnalisé¶
Vous pouvez ajouter ou supprimer des objets d’un budget personnalisé en utilisant Snowsight ou SQL.
Note
Pour ajouter ou supprimer des objets d’un budget personnalisé, vous devez utiliser un rôle disposant des privilèges requis sur le budget et l’objet. Pour plus d’informations, voir Créer un rôle personnalisé pour gérer un budget personnalisé.
Utiliser l”Snowsight pour ajouter ou supprimer des objets d’un budget personnalisé¶
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
Sélectionnez le budget à modifier.
Dans le coin supérieur droit du tableau de bord, sélectionnez
(icône de modification).
Sélectionnez + Resources.
Pour ajouter ou supprimer une base de données, développez Databases pour sélectionner ou désélectionner une base de données.
Pour ajouter ou supprimer des objets dans un schéma, développez le schéma pour obtenir la liste des objets disponibles. Développez la catégorie d’objets (par exemple, Tables ou Tasks) pour sélectionner ou désélectionner des objets.
Pour ajouter ou supprimer un entrepôt, développez Warehouses pour sélectionner ou désélectionner un entrepôt.
Pour ajouter ou supprimer un pool de calcul, développez Compute Pools pour sélectionner ou désélectionner un pool de calcul.
Note
Lorsque vous sélectionnez une base de données ou un schéma, tous les objets pris en charge (par exemple, les tables) contenus dans la base de données ou le schéma sont également ajoutés au budget.
Vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Si un objet est actuellement inclus dans un budget personnalisé et que vous ajoutez cet objet à un deuxième budget personnalisé, Budgets supprime l’objet du premier budget personnalisé sans émettre d’avertissement.
Sélectionnez Done.
Utiliser les commandes SQL pour ajouter ou supprimer des objets d’un budget personnalisé¶
Le rôle utilisé pour ajouter ou supprimer un objet d’un budget doit avoir le privilège APPLYBUDGET sur l’objet. Pour plus d’informations, voir les exemples à la section Créer un rôle personnalisé pour gérer un budget personnalisé.
Pour consulter la liste des objets déjà présents dans le budget personnalisé, appelez la méthode <nom_budget>!GET_LINKED_RESOURCES du budget. Par exemple, pour afficher la liste des objets du budget my_budget
dans le schéma budgets_db.budgets_schema
, exécutez l’instruction suivante :
CALL budgets_db.budgets_schema.my_budget!GET_LINKED_RESOURCES();
L’instruction renvoie la sortie suivante :
+-------------+-----------------+-----------+-------------+---------------+
| RESOURCE_ID | NAME | DOMAIN | SCHEMA_NAME | DATABASE_NAME |
|-------------+-----------------+-----------+-------------+---------------|
| 326 | DB1 | DATABASE | NULL | NULL |
| 157 | MY_WH | WAREHOUSE | NULL | NULL |
+-------------+-----------------+-----------+-------------+---------------+
Note
La liste ne comprend pas les objets qui ont été ajoutés automatiquement (par exemple, les pools de calcul et les entrepôts créés et détenus par une Snowflake Native App).
Les objets doivent être ajoutés ou supprimés d’un budget par référence.
Vous pouvez ajouter la table
t1
au budgetmy_budget
en suivant les étapes suivantes :Accordez le privilège APPLYBUDGET sur la table au rôle
budget_admin
en exécutant l’instruction suivante :GRANT APPLYBUDGET ON TABLE t1 TO ROLE budget_admin;
Transmettez une référence pour la table
t1
à la méthode d’instance ADD_RESOURCE en exécutant l’instruction suivante :CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE( SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
La fonction SYSTEM$REFERENCE crée une référence à un objet TABLE,
t1
, avec le privilège APPLYBUDGET accordé à la table. Cela permet au budget de surveiller l’objet spécifié dans votre compte. Le troisième paramètre de la fonction spécifie la portée de la référence ; dans ce cas, « SESSION » crée une référence avec la portée de la session. Les références transmises à la méthode ADD_RESOURCE pour un budget peuvent être créées avec n’importe quelle portée de référence transitoire (c’est-à-dire que le troisième paramètre peut être soit « SESSION », soit « CALL »).Pour obtenir la liste complète des objets et des privilèges, voir Types d’objets pris en charge et privilèges pour les références.
Note
Si vous souhaitez ajouter une Snowflake Native App à un budget, lorsque vous appelez SYSTEM$REFERENCE, spécifiez
'DATABASE'
(et non'APPLICATION'
) pour l’argumentobject_type
.
Note
Vous ne pouvez ajouter un objet qu’à un seul budget personnalisé. Si un objet est actuellement inclus dans un budget personnalisé et que vous ajoutez cet objet à un deuxième budget personnalisé, Budgets supprime l’objet du premier budget personnalisé sans émettre d’avertissement.
Vous pouvez supprimer la base de données
db1
du budgetmy_budget
en procédant comme suit :Accordez le privilège APPLYBUDGET sur la base de données au rôle
budget_admin
en exécutant l’instruction suivante :GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
Supprimez la base de données en transmettant une référence à la méthode de l’instance REMOVE_RESOURCE :
CALL budgets_db.budgets_schema.my_budget!REMOVE_RESOURCE( SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));
Création d’un rôle personnalisé pour le suivi des budgets¶
Vous pouvez déléguer la surveillance des budgets en créant un rôle personnalisé qui peut être utilisé par des utilisateurs non administrateurs pour surveiller les budgets.
Créer un rôle personnalisé pour surveiller le budget du compte¶
Vous pouvez créer un rôle personnalisé pour permettre aux utilisateurs qui ne sont pas administrateurs du compte de surveiller le budget du compte. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour contrôler le budget du compte, voir Rôles et privilèges Budgets.
Exemple¶
Note
Seul un administrateur de compte peut exécuter les instructions de cet exemple.
Par exemple, créez le rôle account_budget_monitor
et donnez-lui la possibilité de voir l’utilisation du crédit pour le budget du compte :
USE ROLE ACCOUNTADMIN;
CREATE ROLE account_budget_monitor;
GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE account_budget_monitor;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_monitor;
Créer un rôle personnalisé pour surveiller un budget personnalisé¶
Vous pouvez créer un rôle personnalisé pour permettre aux utilisateurs qui ne sont pas administrateurs de comptes de contrôler les budgets personnalisés. Pour obtenir la liste complète des privilèges et des rôles qui doivent être accordés à un rôle pour assurer le suivi d’un budget personnalisé, voir Rôles et privilèges Budgets.
Exemple¶
Note
Seul un propriétaire de budget (un rôle avec le privilège OWNERSHIP) peut exécuter les instructions dans cet exemple.
Utilisez le rôle de propriétaire du budget pour accorder au rôle personnalisé budget_monitor
la possibilité de contrôler le budget my_budget
dans le schéma budgets_db.budgets_schema
:
USE ROLE custom_budget_owner;
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_monitor;
GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_monitor;
GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!VIEWER
TO ROLE budget_monitor;
GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_monitor;
Surveillance des budgets¶
Vous pouvez surveiller des budgets en utilisant Snowsight ou SQL.
Utiliser l”Snowsight pour contrôler les budgets¶
Vous pouvez visualiser les dépenses budgétaires actuelles et historiques en utilisant la page Budgets dans Snowsight.
Note
Seul un utilisateur ayant le rôle ACCOUNTADMIN ou un utilisateur auquel ont été accordés les privilèges et le rôle requis peut contrôler les budgets à l’aide de Snowsight.
Pour plus d’informations sur l’utilisation d’un rôle de compte personnalisé pour surveiller le budget du compte, voir Créer un rôle personnalisé pour surveiller le budget du compte.
Pour plus d’informations sur l’utilisation d’un rôle de compte personnalisé pour contrôler les budgets personnalisés, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
Dans la vue Current Month d’un budget, vous pouvez examiner l’utilisation du crédit par jour jusqu’au jour en cours. Vous pouvez voir si vous risquez de dépasser votre budget pour le mois. Le graphique à barres continue jusqu’à la fin du mois avec votre utilisation du crédit projetée basée sur votre utilisation du crédit réelle pour le mois. La ligne Spending limit indique la limite de dépenses à partir de laquelle une notification de budget est déclenchée.

Sélectionnez (mois à afficher) pour filtrer la vue par Current Month ou des périodes plus longues.
Vous pouvez comparer Spend (utilisation actuelle du crédit) à Interval (temps restant dans le mois en cours) pour voir si vos dépenses dépassent votre budget mensuel.
Vous pouvez filtrer la vue en sélectionnant Budgets ou
Resources :
Vous pouvez sélectionner un budget personnalisé dans la vue Budgets pour obtenir des détails sur un budget spécifique.
Note
La liste Service Type pour un budget personnalisé comprend un type Unused Resources. Ce type de service est affiché lorsqu’un objet dans un budget n’a pas de données d’utilisation du crédit à afficher. Cela peut se produire si l’objet n’a pas d’utilisation du crédit pour les coûts de calcul, ou si vous avez récemment ajouté un objet à un budget et que la tâche d’arrière-plan sans serveur n’a pas encore été exécutée.
Dans la vue Resources, vous pouvez filtrer et trier par Service Type, objet Name et Credit Usage.
Utiliser les commandes SQL pour contrôler les budgets¶
Pour surveiller le budget du compte, vous devez disposer des privilèges requis. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller le budget du compte.
Utilisez le rôle account_budget_monitor
pour voir l’historique des dépenses pour le budget du compte :
USE ROLE account_budget_monitor;
CALL snowflake.local.account_root_budget!GET_SPENDING_HISTORY(
TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Vous pouvez surveiller l’historique des dépenses par type de service. Pour voir l’historique des dépenses de la fonction sans serveur d’optimisation de la recherche pour le budget du compte au cours de la semaine écoulée, exécutez les instructions suivantes :
USE ROLE account_budget_monitor;
CALL snowflake.local.account_root_budget!GET_SERVICE_TYPE_USAGE(
SERVICE_TYPE => 'SEARCH_OPTIMIZATION',
TIME_DEPART => 'day',
USER_TIMEZONE => 'UTC',
TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Pour surveiller un budget personnalisé, vous devez disposer des privilèges requis. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.
Utilisez le rôle budget_monitor
pour voir l’historique des dépenses pour un budget personnalisé. Par exemple, pour voir l’historique des dépenses du budget personnalisé na_finance_budget
dans le schéma budgets_db.budgets_schema
, exécutez les instructions suivantes :
USE ROLE budget_monitor;
CALL budgets_db.budgets_schema.na_finance_budget!GET_SPENDING_HISTORY(
TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Vous pouvez surveiller l’historique des dépenses par type de service. Par exemple, pour consulter l’historique des dépenses pour les vues matérialisées incluses dans le budget, exécutez les instructions suivantes :
USE ROLE budget_monitor;
CALL budgets_db.budgets_schema.na_finance_budget!GET_SERVICE_TYPE_USAGE(
SERVICE_TYPE => 'MATERIALIZED_VIEW',
TIME_DEPART => 'day',
USER_TIMEZONE => 'UTC',
TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Pour plus d’informations, voir Méthodes Budgets.
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);
Désactivation du budget du compte¶
Vous pouvez désactiver le budget du compte en utilisant Snowsight ou SQL.
La désactivation du budget du compte rétablit le budget du compte dans l’état où il se trouvait avant l’activation :
Toutes les données historiques relatives au budget du compte sont supprimées.
La tâche de mesure en arrière-plan pour le budget du compte est suspendue.
Les paramètres du budget du compte pour la limite de dépenses et les notifications par e-mail sont réinitialisés.
La désactivation du budget du compte n’affecte pas les budgets personnalisés. Pour supprimer un budget personnalisé de votre compte, utilisez la commande DROP BUDGET.
Note
Si le budget du compte est désactivé, vous ne pouvez pas créer de nouveaux budgets personnalisés à l’aide de Snowsight. Toutefois, vous pouvez continuer à créer des budgets personnalisés à l’aide de SQL.
Utiliser l”Snowsight pour désactiver le budget du compte¶
Vous pouvez désactiver le budget du compte en utilisant la page Budgets :
Connectez-vous à Snowsight.
Sélectionnez Admin » Cost Management.
Sélectionnez Budgets.
Sélectionnez le menu … plus en haut à droite.
Sélectionnez Deactivate account budget.
Utiliser les commandes SQL pour désactiver le budget du compte¶
Vous pouvez utiliser la méthode budget_racine_compte!DEACTIVATE pour désactiver le budget du compte :
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!DEACTIVATE();