Si vous maîtrisez les coûts et souhaitez contrôler votre environnement par rapport à votre budget, vous pouvez utiliser les notifications de budget automatisées pour automatiser votre réponse en fonction de la notification budgétaire.
Les notifications budgétaires utilisent des sujets Pub/Sub pour fournir un état en temps réel du budget Cloud Billing, en utilisant l'évolutivité, la flexibilité et la fiabilité du middleware de messagerie d'entreprise pour le cloud.
Ce document contient des exemples et des instructions détaillées pour utiliser les notifications de budget avec les fonctions Cloud Run en vue d'automatiser la gestion des coûts.
Configurer les notifications de budget
La première étape consiste à activer un sujet Pub/Sub pour le budget. Pour en savoir plus, consultez la page Gérer les notifications d'alerte budgétaire.
Une fois que vous avez activé les notifications de budget, veillez à prendre note des informations suivantes :
- Sujet Pub/Sub : il s'agit du point de terminaison des notifications configuré pour le budget.
- ID de budget: il s'agit d'un ID unique pour le budget, qui est indiqué dans toutes les notifications. Vous pouvez localiser l'ID du budget depuis le budget sous Manage notifications (Gérer les notifications). L'ID s'affiche lorsque vous sélectionnez Connect a Pub/Sub topic to this budget (Associer un sujet Pub/Sub à ce budget).
Écouter les notifications
L'étape suivante consiste à écouter les notifications en vous abonnant au sujet Pub/Sub. Si le sujet n'a aucun abonné, Pub/Sub abandonnera les messages publiés et vous ne pourrez pas les récupérer plus tard.
Bien qu'il existe de nombreuses façons de créer un abonnement associé au sujet, ces exemples utilisent des déclencheurs de fonctions Cloud Run.
Créer une fonction Cloud Run
Pour créer une fonction Cloud Run, procédez comme suit :
Dans la console Google Cloud, accédez à la page Fonctions Cloud Run.
Cliquez sur
CRÉER UNE FONCTION et donnez-lui un nom en relation avec le budget.Sous Trigger (Déclencheur), sélectionnez Pub/Sub topic (Sujet Pub/Sub).
Sélectionnez le sujet que vous avez configuré dans le budget.
Fournissez le code source et les dépendances que la fonction doit exécuter.
Assurez-vous de définir la Fonction à exécuter sur le nom de fonction correct.
Décrire votre fonction Cloud Run
Pour indiquer à la fonction Cloud Run ce qu'elle doit faire avec la notification reçue, vous pouvez soit écrire le code à l'aide de l'éditeur intégré, soit importer un fichier. Pour en savoir plus sur les notifications que le code recevra, consultez la section Format des notifications.
Par exemple, une fonction peut enregistrer les notifications, les attributs et les données Pub/Sub reçus lorsqu'elle est déclenchée par une notification de budget. Pour en savoir plus, consultez la section Déclencheurs Pub/Sub.
Afficher les événements de votre fonction Cloud Run
Après avoir enregistré la fonction Cloud Run, vous pouvez cliquer sur AFFICHER LES JOURNAUX pour afficher les notifications de budget enregistrées. Les journaux des appels de fonctions s'affichent alors.
Tester votre fonction Cloud Run
Les notifications sont envoyées à Pub/Sub et les abonnés reçoivent les messages. Pour tester un exemple de notification afin de vous assurer que votre fonction s'exécute comme prévu, publiez un message dans Pub/Sub en utilisant cet objet comme corps du message :
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
Vous pouvez également ajouter des attributs de messages, tels que l'ID du compte de facturation. Pour en savoir plus, consultez la documentation complète sur le format de notification.
Envoyer des notifications à Slack
L'e-mail n'est pas toujours le meilleur moyen de rester informé des coûts associés à votre utilisation du cloud, surtout si votre budget est critique et sensible au facteur temps. Avec les notifications, vous pouvez transférer vos messages budgétaires vers d'autres plates-formes.
Dans cet exemple, nous décrivons comment transférer les notifications de budget vers Slack. Ainsi, chaque fois que Cloud Billing publie une notification de budget, une fonction Cloud Run publie un message, à l'aide d'un bot, sur un canal Slack de l'espace de travail du bot.
Configurer un canal Slack et des autorisations
La première étape consiste à créer un espace de travail Slack ainsi que les jetons de l'utilisateur bot utilisés pour appeler l'API Slack. Les jetons d'API peuvent être gérés à l'adresse https://api.slack.com/apps. Pour obtenir des instructions détaillées, consultez la page concernant les utilisateurs bot sur le site de Slack.
Écrire une fonction Cloud Run
Créez une fonction en suivant les étapes décrites dans Créer une fonction Cloud Run. Assurez-vous que le déclencheur est défini sur le même sujet Pub/Sub que celui sur lequel votre budget est configuré.
Ajoutez des dépendances :
Node.js
Copiez ce qui suit dans le fichier
package.json
:Python
Copiez ce qui suit dans le fichier
requirements.txt
:Écrivez du code ou utilisez l'exemple suivant pour publier des notifications de budget sur un canal de discussion Slack à l'aide de l'API Slack.
Assurez-vous que les paramètres postMessage de l'API Slack suivants sont correctement définis :
- Jeton d'accès OAuth de l'utilisateur bot
- Nom de la chaîne
Exemple de code :
Node.js
Python
Vous pouvez maintenant tester votre fonction Cloud Run pour afficher un message dans Slack.
Plafonner (désactiver) la facturation pour mettre fin à toute utilisation
Cet exemple vous montre comment plafonner les coûts et arrêter l'utilisation d'un projet en désactivant Cloud Billing. La désactivation de la facturation sur un projet entraîne la résiliation de tous les services Google Cloud du projet, y compris les services en version gratuite.
Pourquoi désactiver la facturation ?
Vous pouvez vouloir plafonner les coûts si l'on vous impose une limite stricte sur ce que vous pouvez dépenser sur Google Cloud. C'est typiquement le cas des étudiants, chercheurs ou développeurs travaillant dans des environnements de bac à sable. Dans de telles circonstances, il est important de bloquer les dépenses, voire d'arrêter tous les services Google Cloud et leur utilisation dès lors que le seuil budgétaire est atteint.
Dans notre exemple, nous utilisons acme-backend-dev comme projet de non-production, sur lequel Cloud Billing peut être désactivé en toute sécurité.
Avant de commencer à utiliser cet exemple, assurez-vous d'avoir effectué les opérations suivantes:
Activez l'API Cloud Billing. Votre fonction Cloud Run doit appeler l'API Cloud Billing pour désactiver Cloud Billing pour un projet.
Configurez un budget pour surveiller les coûts du projet et activer les notifications de budget.
Écrire une fonction Cloud Run
Vous devez ensuite configurer votre fonction Cloud Run pour qu'elle appelle l'API Cloud Billing. Cela permet à la fonction Cloud Run de désactiver Cloud Billing pour le projet acme-backend-dev utilisé dans cet exemple.
Créez une fonction en suivant les étapes décrites dans Créer une fonction Cloud Run. Assurez-vous que le déclencheur est défini sur le même sujet Pub/Sub que celui sur lequel votre budget est configuré.
Ajoutez les dépendances suivantes :
Node.js
Copiez ce qui suit dans le fichier
package.json
:Python
Copiez ce qui suit dans le fichier
requirements.txt
:Copiez le code suivant dans la fonction Cloud Run.
Définissez la fonction à exécuter sur
stopBilling
(Node) oustop_billing
(Python).Selon votre environnement d'exécution, la variable d'environnement
GOOGLE_CLOUD_PROJECT
peut être définie automatiquement. Consultez la liste des variables d'environnement définies automatiquement et déterminez si vous devez définir manuellement la variableGOOGLE_CLOUD_PROJECT
sur le projet pour lequel vous souhaitez plafonner (désactiver) Cloud Billing.
Node.js
Python
Configurer les autorisations du compte de service
La fonction Cloud Run est exécutée en tant que compte de service automatiquement créé. Pour que le compte de service puisse désactiver la facturation, vous devez lui accorder les autorisations appropriées, telles que Administrateur de facturation.
Pour identifier le bon compte de service, consultez les informations de la fonction Cloud Run. Le compte de service est répertorié au bas de la page.
Vous pouvez gérer les autorisations de l'administrateur de la facturation sur la page Facturation de la console Google Cloud.
Pour accorder des privilèges de Billing Account Administrator (Administrateur de compte de facturation) au compte de service, sélectionnez le nom du compte de service.
Vérifier que Cloud Billing est désactivé
Lorsque le budget envoie une notification, le projet spécifié n'a plus de compte de facturation Cloud. Si vous souhaitez tester la fonction, publiez un exemple de message semblable à celui ci-dessus. Le projet ne sera plus visible sous le compte de facturation Cloud et les ressources du projet seront désactivées, y compris la fonction Cloud Run si elle se trouve dans ce projet.
Vous pouvez réactiver manuellement Cloud Billing pour votre projet dans la console Google Cloud.
Contrôler l'utilisation de manière sélective
Le plafonnement (la désactivation) de Cloud Billing, tel qu'il est décrit dans l'exemple précédent, est binaire et final. Le projet est soit activé, soit désactivé. Lorsque le projet est désactivé, tous les services sont arrêtés et toutes les ressources finissent par être supprimées.
Si vous souhaitez obtenir une réponse plus nuancée, vous pouvez contrôler les ressources de manière sélective. Par exemple, si vous souhaitez arrêter certaines ressources Compute Engine, mais garder Cloud Storage intact, vous pouvez contrôler l'utilisation de manière sélective. Cela réduit votre coût horaire sans désactiver complètement votre environnement.
Vous pouvez écrire des règles aussi nuancées que vous le souhaitez. Cependant, dans notre exemple, le projet effectue des recherches sur plusieurs machines virtuelles Compute Engine et stocke les résultats dans Cloud Storage. Cet exemple de fonction Cloud Run arrête toutes les instances Compute Engine, mais n'a aucune incidence sur les résultats stockés une fois le budget dépassé.
Écrire une fonction Cloud Run
Créez une fonction en suivant les étapes décrites dans Créer une fonction Cloud Run. Assurez-vous que le déclencheur est défini sur le même sujet Pub/Sub que celui sur lequel votre budget est configuré.
Assurez-vous que vous avez ajouté les dépendances décrites dans Plafonner (désactiver) la facturation pour mettre fin à toute utilisation.
Copiez le code suivant dans la fonction Cloud Run.
Définissez la fonction à exécuter sur
limitUse
(Node) oulimit_use
(Python).Selon votre environnement d'exécution, la variable d'environnement
GCP_PROJECT
peut être définie automatiquement. Consultez la liste des variables d'environnement définies automatiquement et déterminez si vous devez définir manuellement la variableGCP_PROJECT
sur le projet exécutant les machines virtuelles.Définissez le paramètre ZONE. Dans cet exemple, il s'agit de la zone dans laquelle les instances seront arrêtées.
Node.js
Python
Configurer les autorisations du compte de service
- La fonction Cloud Run est exécutée en tant que compte de service automatiquement créé. Pour contrôler l'utilisation, vous devez accorder au compte de service des autorisations sur tous les services du projet dont il aura besoin pour apporter des modifications.
- Pour identifier le bon compte de service, consultez les informations de la fonction Cloud Run. Le compte de service est répertorié au bas de la page.
- Dans la console Google Cloud, accédez à la page IAM pour définir les autorisations appropriées.
Accéder à la page "IAM"
Vérifier que les instances sont arrêtées
Lorsque le budget envoie une notification, les machines virtuelles Compute Engine sont arrêtées.
Pour tester la fonction, publiez un exemple de message semblable à celui utilisé précédemment. Vous pouvez valider l'exécution réussie de la fonction en vérifiant les machines virtuelles Compute Engine dans la console Google Cloud.