Wenn Sie kostenbewusst sind und Ihre Umgebung relativ zu Ihrem Budget steuern müssen, können Sie programmatische Budgetbenachrichtigungen verwenden, um die Kostenkontrollenantwort auf Basis der Budgetbenachrichtigung zu automatisieren.
Budgetbenachrichtigungen verwenden Pub/Sub-Themen, um den Status des Cloud Billing-Budgets unter Verwendung der Skalierbarkeit, Flexibilität und Zuverlässigkeit der unternehmensbezogenen nachrichtenorientierten Middleware für die Cloud in Echtzeit darzustellen.
In diesem Dokument finden Sie Beispiele und detaillierte Anleitungen dazu, wie Sie mithilfe von Cloud Run-Funktionen Budgetbenachrichtigungen zur Automatisierung der Kostenverwaltung nutzen können.
Budgetbenachrichtigungen einrichten
Der erste Schritt besteht darin, ein Pub/Sub-Thema für Ihr Budget zu aktivieren. Dies wird unter Benachrichtigungen zu programmatischen Budgetbenachrichtigungen verwalten ausführlich beschrieben.
Beachten Sie Folgendes, nachdem Sie die Budgetbenachrichtigungen aktiviert haben:
- Pub/Sub-Thema: Dies ist der konfigurierte Benachrichtigungsendpunkt für das Budget.
- Budget-ID: Dies ist eine eindeutige ID für das Budget, die Bestandteil aller Benachrichtigungen ist. Sie finden die Budget-ID im Budget unter Benachrichtigungen verwalten. Die ID wird angezeigt, wenn Sie Pub/Sub-Thema mit diesem Budget verbinden auswählen.
Benachrichtigungen beobachten
Der nächste Schritt besteht darin, Ihre Benachrichtigungen zu beobachten. Abonnieren Sie dazu das Pub/Sub-Thema. Wenn Sie kein Abo haben, werden veröffentlichte Nachrichten durch Pub/Sub gelöscht und Sie können diese später nicht mehr abrufen.
Es gibt verschiedene Möglichkeiten, ein Thema zu abonnieren. In diesen Beispielen werden Cloud Run-Funktionstrigger verwendet.
Cloud Run-Funktion erstellen
So erstellen Sie eine neue Cloud Run-Funktion:
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run-Funktionen.
Klicken Sie auf
FUNKTION ERSTELLEN und geben Sie der Funktion einen aussagekräftigen Namen, der Ihr Budget beschreibt.Wählen Sie unter Trigger die Option Pub/Sub-Thema aus.
Wählen Sie das Thema aus, das Sie für das Budget konfiguriert haben.
Stellen Sie den Quellcode und die Abhängigkeiten für die auszuführende Funktion bereit.
Achten Sie darauf, dass für die Auszuführende Funktion der richtige Funktionsname festgelegt ist.
Cloud Run-Funktion beschreiben
Damit die Cloud Run-Funktion weiß, was mit der Benachrichtigung geschehen soll, können Sie entweder Code mit dem Inline-Editor schreiben oder eine Datei hochladen. Weitere Informationen zu den Benachrichtigungen, die der Code erhalten wird, finden Sie unter Benachrichtigungsformat.
Eine Funktion kann etwa empfangene Pub/Sub-Benachrichtigungen, Attribute und Daten in ein Log schreiben, wenn sie durch eine Budgetbenachrichtigung ausgelöst wird. Weitere Informationen finden Sie unter Pub/Sub-Trigger.
Cloud Run-Funktionsereignisse ansehen
Nachdem Sie die Cloud Run-Funktion gespeichert haben, können Sie auf LOGS ANSEHEN klicken, um die protokollierten Budgetbenachrichtigungen aufzurufen. Es werden die Logs der Funktionsaufrufe angezeigt.
Cloud Run-Funktion testen
Benachrichtigungen werden an Pub/Sub gesendet und Abonnenten erhalten die Nachrichten. Wenn Sie eine Beispielbenachrichtigung testen möchten, um zu prüfen, ob sich Ihre Funktion wie erwartet verhält, veröffentlichen Sie eine Nachricht in Pub/Sub. Verwenden Sie dazu dieses Objekt als Nachrichtentext:
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
Sie können auch Nachrichtenattribute wie die billing-konto-ID hinzufügen. Weitere Informationen finden Sie in der vollständigen Benachrichtigungsformat dokumentation.
Benachrichtigungen an Slack senden
E-Mails sind nicht immer die beste Methode, um hinsichtlich der Cloud-Kosten auf dem Laufenden zu bleiben, insbesondere wenn ein bestimmtes Budget unbedingt eingehalten werden muss und zeitkritisch ist. Mit Benachrichtigungen können Sie Budgetnachrichten an andere Medien weiterleiten.
In diesem Beispiel wird beschrieben, wie Budgetbenachrichtigungen an Slack weitergeleitet werden. Hierbei nutzt eine Cloud Run-Funktion jedes Mal, wenn von Cloud Billing eine Budgetbenachrichtigung veröffentlicht wird, einen Bot, um eine Nachricht an einen Slack-Kanal des Bot-Arbeitsbereichs zu senden.
Slack-Kanal und Berechtigungen einrichten
Der erste Schritt besteht darin, den Slack-Arbeitsbereich und die Bot-Nutzertokens zu erstellen, die zum Aufrufen der Slack API verwendet werden. API-Tokens können unter https://api.slack.com/apps verwaltet werden. Weitere Informationen finden Sie unter Bot Users auf der Slack-Website.
Cloud Run-Funktion schreiben
Erstellen Sie eine neue Funktion. Folgen Sie dazu den Schritten unter Cloud Run-Funktion erstellen. Achten Sie darauf, dass der Trigger auf dasselbe Pub/Sub-Thema gesetzt ist, das vom Budget verwendet wird.
Fügen Sie Abhängigkeiten hinzu:
Node.js
Kopieren Sie Folgendes in Ihre
package.json
-Datei:Python
Kopieren Sie Folgendes in Ihre
requirements.txt
-Datei:Schreiben Sie Code oder verwenden Sie das folgende Beispiel, um Budgetbenachrichtigungen mithilfe der Slack API in einem Slack-Chat-Kanal zu posten.
Prüfen Sie, ob die folgenden postMessage-Parameter für Slack API korrekt festgelegt sind:
- OAuth-Zugriffstoken des Bot-Nutzers
- Name des Kanals
Beispielcode:
Node.js
Python
Jetzt können Sie Ihre Cloud Run-Funktion testen, um in Slack eine Nachricht angezeigt zu sehen.
Kosten deckeln (Abrechnung deaktivieren) und Nutzung stoppen
In diesem Beispiel erfahren Sie, wie Sie Kosten deckeln und die Nutzung eines Projekts stoppen können, indem Sie Cloud Billing deaktivieren. Wenn Sie die Abrechnung für ein Projekt deaktivieren, werden alle Google Cloud-Dienste im Projekt beendet, einschließlich der kostenlosen Dienste.
Warum die Abrechnung deaktivieren?
Möglicherweise sind Sie gezwungen, die Kosten zu deckeln, weil Sie bei Ihren Ausgaben für Google Cloud eine feste Obergrenze einhalten müssen. Dies trifft üblicherweise auf Studenten, Forscher oder Entwickler zu, die in einer Sandbox-Umgebung arbeiten. In diesen Fällen möchten Sie die Ausgaben begrenzen und sind möglicherweise bereit, alle Ihre Google Cloud-Dienste und deren Nutzung zu beenden, wenn das Budgetlimit erreicht ist.
In unserem Beispiel verwenden wir acme-backend-dev als Nicht-Produktionsprojekt, für das Cloud Billing ohne Bedenken deaktiviert werden kann.
Bevor Sie mit diesem Beispiel beginnen, sollten Sie Folgendes tun:
Aktivieren Sie die Cloud Billing API. Ihre Cloud Run-Funktion muss die Cloud Billing API aufrufen, um Cloud Billing für ein Projekt zu deaktivieren.
Richten Sie ein Budget ein, um die Projektkosten zu überwachen und Budgetbenachrichtigungen zu aktivieren.
Cloud Run-Funktion schreiben
Als Nächstes müssen Sie Ihre Cloud Run-Funktion so konfigurieren, dass sie die Cloud Billing API aufruft. Dadurch kann die Cloud Run-Funktion das Cloud Billing-Tool für unser Beispielprojekt acme-backend-dev deaktivieren.
Erstellen Sie eine neue Funktion. Folgen Sie dazu den Schritten unter Cloud Run-Funktion erstellen. Achten Sie darauf, dass der Trigger auf dasselbe Pub/Sub-Thema gesetzt ist, das vom Budget verwendet wird.
Fügen Sie die folgenden Abhängigkeiten hinzu:
Node.js
Kopieren Sie Folgendes in Ihre
package.json
-Datei:Python
Kopieren Sie Folgendes in Ihre
requirements.txt
-Datei:Kopieren Sie den folgenden Code in die Cloud Run-Funktion.
Legen Sie die auszuführende Funktion auf
stopBilling
(Node) oderstop_billing
(Python) fest.Abhängig von Ihrer Laufzeit wird die Umgebungsvariable
GOOGLE_CLOUD_PROJECT
möglicherweise automatisch festgelegt. Überprüfen Sie die Liste der automatisch festgelegten Umgebungsvariablen und bestimmen Sie, ob die VariableGOOGLE_CLOUD_PROJECT
manuell auf das Projekt festgelegt werden soll, für das Sie Cloud Billing deckeln (deaktivieren) möchten.
Node.js
Python
Dienstkontoberechtigungen konfigurieren
Die Cloud Run-Funktion wird als automatisch erstelltes Dienstkonto ausgeführt. Damit die Abrechnung durch das Dienstkonto deaktiviert werden kann, müssen Sie dem Konto die entsprechenden Berechtigungen erteilen, z. B. Abrechnungsadministrator.
Sehen Sie sich die Details der Cloud Run-Funktion an, um das richtige Dienstkonto zu ermitteln. Das Dienstkonto ist am Ende der Seite aufgeführt.
Sie können die Rechnungskontoadministrator-Berechtigungen in der Google Cloud Console auf der Seite Abrechnung verwalten.
Wählen Sie den Namen des Dienstkontos aus, um dem Konto Rechnungskonto-Administratorberechtigungen zu erteilen.
Deaktivierung von Cloud Billing prüfen
Wenn das Budget eine Benachrichtigung sendet, hat das angegebene Projekt kein Cloud-Rechnungskonto mehr. Wenn Sie die Funktion testen möchten, veröffentlichen Sie eine Beispielnachricht mit der obigen Testnachricht. Das Projekt wird nicht mehr unter dem Cloud-Rechnungskonto angezeigt und die Ressourcen im Projekt sind deaktiviert. Dies gilt auch für die Cloud Run-Funktion, wenn sie sich im selben Projekt befindet.
Sie können in der Google Cloud Console Cloud Billing für Ihr Projekt manuell wieder aktivieren.
Nutzung selektiv steuern
Die oben anhand des Beispiels beschriebene Kostendeckelung (Deaktivierung von Cloud Billing) ist binär und endgültig. Das Projekt ist entweder aktiviert oder deaktiviert. Wenn das Projekt deaktiviert wird, werden alle Dienste beendet und alle Ressourcen schließlich gelöscht.
Wenn Sie eine differenziertere Rückmeldung benötigen, können Sie Ressourcen selektiv steuern. Wenn Sie beispielsweise einige Compute Engine-Ressourcen beenden, Cloud Storage aber intakt lassen möchten, können Sie die Nutzung selektiv steuern. Dadurch werden Ihre Kosten pro Stunde gesenkt, ohne Ihre Umgebung vollständig zu deaktivieren.
Sie können je nach Anforderungen eine individuelle Differenzierung vornehmen. In diesem Beispiel dient unser Projekt einer Untersuchung mithilfe einer Reihe von virtuellen Compute Engine-Maschinen. Die Ergebnisse werden in Cloud Storage gespeichert. In diesem Beispiel einer Cloud Run-Funktion werden alle Compute Engine-Instanzen heruntergefahren. Dies hat aber keinen Einfluss auf unsere gespeicherten Ergebnisse, nachdem das Budget überschritten wurde.
Cloud Run-Funktion schreiben
Erstellen Sie eine neue Funktion. Folgen Sie dazu den Schritten unter Cloud Run-Funktion erstellen. Achten Sie darauf, dass der Trigger auf dasselbe Pub/Sub-Thema gesetzt ist, das vom Budget verwendet wird.
Prüfen Sie noch einmal, ob Sie die unter Kosten deckeln (Abrechnung deaktivieren) und Nutzung stoppen beschriebenen Abhängigkeiten hinzugefügt haben.
Kopieren Sie den folgenden Code in die Cloud Run-Funktion.
Legen Sie die auszuführende Funktion auf
limitUse
(Node) oderlimit_use
(Python) fest.Abhängig von Ihrer Laufzeit wird die Umgebungsvariable
GCP_PROJECT
möglicherweise automatisch festgelegt. Prüfen Sie die Liste der automatisch festgelegten Umgebungsvariablen und legen Sie fest, ob die VariableGCP_PROJECT
manuell für das Projekt festgelegt werden muss, in dem die virtuellen Maschinen ausgeführt werden.Legen Sie den Parameter ZONE fest. Dies ist die Zone, in der Instanzen für dieses Beispiel beendet werden.
Node.js
Python
Dienstkontoberechtigungen konfigurieren
- Die Cloud Run-Funktion wird als automatisch erstelltes Dienstkonto ausgeführt. Um die Nutzung zu steuern, müssen Sie dem Dienstkonto Berechtigungen für alle Dienste im Projekt erteilen, die benötigt werden, um Änderungen vorzunehmen.
- Sehen Sie sich die Details der Cloud Run-Funktion an, um das richtige Dienstkonto zu ermitteln. Das Dienstkonto ist am Ende der Seite aufgeführt.
- Rufen Sie in der Google Cloud Console die Seite IAM auf, um geeignete Berechtigungen festzulegen.
Zur Seite "IAM"
Prüfen, ob Instanzen beendet wurden
Wenn das Budget eine Benachrichtigung sendet, wurden die virtuellen Compute Engine-Maschinen beendet.
Wenn Sie die Funktion testen möchten, veröffentlichen Sie eine Beispielnachricht mit der obigen Testnachricht. Um zu bestätigen, dass die Funktion erfolgreich ausgeführt wurde, prüfen Sie Ihre virtuellen Compute Engine-Maschinen in der Google Cloud Console.