Se sei attento ai costi e devi controllare il tuo ambiente in base al budget, puoi utilizzare le notifiche del budget programmatiche per automatizzare la risposta di controllo dei costi in base alla notifica del budget.
Le notifiche di budget utilizzano gli argomenti Pub/Sub per fornire lo stato in tempo reale del budget di fatturazione Cloud, utilizzando la scalabilità, la flessibilità e l'affidabilità del middleware enterprise orientato ai messaggi per il cloud.
Questa pagina contiene esempi e istruzioni dettagliate su come utilizzare le notifiche relative al budget con Funzioni di Cloud Run per automatizzare la gestione dei costi.
Configurare le notifiche relative al budget
Il primo passaggio consiste nell'abilitare un argomento Pub/Sub per il tuo budget. Questo aspetto è descritto in dettaglio in Gestire le notifiche di avviso di budget programmatico.
Dopo aver attivato le notifiche relative al budget, tieni presente quanto segue:
- Argomento Pub/Sub: queste sono le notifiche configurate endpoint per il budget.
- ID budget: si tratta di un ID univoco del budget incluso in tutte le notifiche. Puoi individuare l'ID budget nel tuo budget in Gestisci notifiche. L'ID verrà visualizzato dopo che avrai selezionato Collega un Pub/Sub a questo budget.
Ascoltare le notifiche
Il passo successivo è ascoltare le notifiche iscrivendoti al tuo Pub/Sub. Se non hai un abbonato, Pub/Sub eliminerà i messaggi pubblicati e non puoi recuperarli in seguito.
Sebbene esistano molti modi per abbonarsi all'argomento, per questi esempi utilizzeremo gli attivatori delle funzioni Cloud Run.
Crea una funzione Cloud Run
Per creare una nuova funzione Cloud Run:
Nella console Google Cloud, vai alla pagina Funzioni Cloud Run.
Fai clic su
CREA FUNZIONE e assegna alla funzione un nome significativo per il tuo bilancio.In Trigger, seleziona Argomento Pub/Sub.
Seleziona l'argomento che hai configurato nel tuo budget.
Fornisci il codice sorgente e le dipendenze per l'esecuzione della funzione.
Assicurati di impostare la Funzione da eseguire sul nome corretto della funzione.
Descrizione della funzione Cloud Run
Per indicare alla funzione Cloud Run cosa vuoi che faccia con notifica, puoi scrivere il codice utilizzando l'editor in linea o caricare un file. Per informazioni dettagliate sulle notifiche che riceverà il codice, vedi Formato delle notifiche.
Ad esempio, una funzione potrebbe registrare le notifiche Pub/Sub ricevute, e dati quando vengono attivati da una notifica relativa al budget. Per saperne di più, vedi Trigger Pub/Sub.
Visualizzare gli eventi delle funzioni Cloud Run
Dopo aver salvato la funzione Cloud Run, puoi fare clic su VISUALIZZA LOG per visualizzare le notifiche relative al budget registrate. Vengono visualizzati i log delle chiamate della funzione.
Testa la funzione Cloud Run
Le notifiche vengono inviate a Pub/Sub e gli abbonati ricevono messaggi. Per testare una notifica di esempio e assicurarti che la funzione funziona come previsto, pubblica un messaggio in Pub/Sub utilizzando questo oggetto come corpo del messaggio:
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
Puoi anche aggiungere attributi dei messaggi come l'ID account di fatturazione. Visualizza la formato di notifica documentazione per ulteriori informazioni.
Inviare notifiche a Slack
L'email non è sempre il modo migliore per rimanere aggiornati sui costi del cloud in particolare se il budget è critico e non richiede tempi di elaborazione. Con notifiche puoi inoltrare i messaggi relativi al budget ad altri mezzi.
In questo esempio viene descritto come inoltrare le notifiche relative al budget a Slack. In questo modo, ogni volta che la fatturazione Cloud pubblica una notifica relativa al budget, una funzione Cloud Run utilizza un bot per pubblicare un messaggio in un canale Slack dello spazio di lavoro del bot.
Configurare un canale Slack e le autorizzazioni
Il primo passaggio consiste nel creare la tua area di lavoro Slack e i token utente del bot utilizzate per chiamare l'API Slack. I token API possono essere gestiti all'indirizzo https://api.slack.com/apps. Per istruzioni dettagliate, consulta Utenti bot sul sito di Slack.
Scrivere una funzione Cloud Run
Crea una nuova funzione seguendo i passaggi descritti in Creare una funzione Cloud Run. Assicurati che l'attivatore sia impostato sullo stesso argomento Pub/Sub impostato per l'utilizzo del budget.
Aggiungi dipendenze:
Node.js
Copia quanto segue in
package.json
:Python
Copia quanto segue in
requirements.txt
:Scrivi codice o utilizza l'esempio riportato di seguito per pubblicare notifiche sul budget in un canale di chat di Slack utilizzando l'API Slack.
Assicurati che i seguenti parametri postMessage dell'API Slack siano impostati correttamente:
- Token di accesso OAuth dell'utente del bot
- Nome canale
Esempio di codice:
Node.js
Python
Ora puoi Testa la funzione Cloud Run per visualizzare un messaggio in Slack.
Limita (disattiva) la fatturazione per interrompere l'utilizzo
Questo esempio mostra come limitare i costi e interrompere l'utilizzo per un project, disabilitando la fatturazione Cloud. La disattivazione della fatturazione in un progetto comporta l'interruzione di tutti i servizi Google Cloud al suo interno, inclusi i servizi di livello gratuito.
Perché disattivare la fatturazione?
Potresti limitare i costi perché hai un limite fisso alla quantità di denaro che puoi spendere su Google Cloud. È un comportamento tipico di studenti, ricercatori o che lavorano in ambienti sandbox. In questi casi, vuoi interrompere la spesa e potresti essere disposto a chiudere tutti i servizi e l'utilizzo di Google Cloud quando viene raggiunto il limite di budget.
Nel nostro esempio, utilizziamo acme-backend-dev come progetto non di produzione per cui La fatturazione Cloud può essere disabilitata in modo sicuro.
Prima di iniziare a utilizzare questo esempio, assicurati di aver eseguito le seguenti operazioni:
Abilita l'API Cloud Billing. La funzione Cloud Run deve chiamare l'API Cloud Billing per disattivare la fatturazione Cloud per un progetto.
Configura un budget per monitorare i costi del progetto e attivare le notifiche relative al budget.
Scrivi una funzione Cloud Run
A questo punto devi configurare la funzione Cloud Run per chiamare la funzione l'API Cloud Billing. In questo modo, la funzione Cloud Run può disattivare la fatturazione Cloud per il nostro progetto di esempio acme-backend-dev.
Crea una nuova funzione seguendo la procedura descritta in Crea una funzione Cloud Run. Assicurati che il trigger sia impostato sullo stesso argomento Pub/Sub che il tuo budget è impostato per utilizzare.
Aggiungi le seguenti dipendenze:
Node.js
Copia quanto segue in
package.json
:Python
Copia quanto segue in
requirements.txt
:Copia il codice seguente nella funzione Cloud Run.
Imposta la funzione da eseguire su "stopBilling" (Node) o "stop_billing" (Python).
A seconda del runtime,
GOOGLE_CLOUD_PROJECT
potrebbe essere impostata automaticamente. Esamina l'elenco di variabili di ambiente impostate automaticamente e determinare se è necessario impostare manualmenteGOOGLE_CLOUD_PROJECT
al progetto per a cui vuoi limitare (disabilitare) la fatturazione Cloud.
Node.js
Python
Configura le autorizzazioni degli account di servizio
La funzione Cloud Run viene eseguita come Un account di servizio creato automaticamente. Per fare in modo che l'account di servizio possa disabilitare la fatturazione, devi concedere le autorizzazioni corrette, ad esempio Amministratore fatturazione.
Per identificare l'account di servizio corretto, visualizza la funzione Cloud Run i dettagli. L'account di servizio è elencato nella parte inferiore della pagina.
Puoi gestire le autorizzazioni di amministratore della fatturazione nella pagina Fatturazione della console Google Cloud.
Per concedere i privilegi Amministratore account di fatturazione all'account di servizio, seleziona il nome dell'account di servizio.
Verifica che la fatturazione Cloud sia disabilitata
Quando il budget invia una notifica, il progetto specificato non avrà più un account di fatturazione Cloud. Se vuoi testare la funzione, pubblica un messaggio di esempio con il messaggio di test riportato sopra. Il progetto non sarà più visibile nell'account di fatturazione Cloud e le risorse al suo interno verranno disattivate, inclusa la funzione Cloud Run se si trova nello stesso progetto.
Puoi riattivare manualmente la fatturazione Cloud per il tuo progetto nella console Google Cloud.
Controllare selettivamente l'utilizzo
Il capping (la disattivazione) della fatturazione Cloud come descritto nell'esempio precedente è binario e terminale. Il progetto è abilitato o disattivata. Quando è disabilitato, tutti i servizi vengono arrestati e tutte le risorse vengono e verrà poi eliminato.
Se hai bisogno di una risposta più articolata, puoi controllare selettivamente le risorse. Ad esempio, se vuoi arrestare alcune risorse Compute Engine, ma lasciare Cloud Storage invariato, puoi controllare l'utilizzo in modo selettivo. Questo riduce il costo orario senza disabilitare completamente l'ambiente.
Puoi scrivere norme con tutte le sfumature che vuoi. Tuttavia, per il nostro esempio, il progetto esegue ricerche con una serie di macchine virtuali Compute Engine e memorizza i risultati in Cloud Storage. Questo esempio di funzione Cloud Run interromperà tutte le istanze Compute Engine, ma non influirà sui risultati archiviati dopo il superamento del budget.
Scrivere una funzione Cloud Run
Crea una nuova funzione seguendo i passaggi descritti in Creare una funzione Cloud Run. Assicurati che l'attivatore sia impostato sullo stesso argomento Pub/Sub impostato per l'utilizzo del budget.
Assicurati di aver aggiunto le dipendenze descritte in Limitare (disattivare) la fatturazione per interrompere l'utilizzo.
Copia il codice seguente nella funzione Cloud Run.
Imposta la funzione da eseguire su "limitUse" (Nodo) o "limit_use" (Python).
A seconda del runtime,
GCP_PROJECT
potrebbe essere impostata automaticamente. Esamina l'elenco delle variabili di ambiente impostate automaticamente e determina se devi impostare manualmente la variabileGCP_PROJECT
per il progetto che esegue le VM.Imposta il parametro ZONE. Questa è la zona in cui le istanze interrotto per questo campione.
Node.js
Python
Configura le autorizzazioni degli account di servizio
- La funzione Cloud Run viene eseguita come un account di servizio creato automaticamente. Per controllare l'utilizzo, devi concedere l'account di servizio autorizzazioni a qualsiasi servizio nel progetto che deve apportare modifiche.
- Per identificare l'account di servizio corretto, visualizza i dettagli del tuo nella funzione Cloud Run. L'account di servizio è riportato in fondo alla .
- Nella console Google Cloud, vai alla pagina IAM per impostare le autorizzazioni appropriate.
Vai alla pagina IAM
Verifica che le istanze siano arrestate
Quando il budget invia una notifica, la Compute Engine virtuale vengono arrestate.
Per testare la funzione, pubblica un messaggio di esempio con messaggio di test riportato sopra. Per verificare che la funzione sia stata eseguita correttamente, e puoi controllare le macchine virtuali nella console Google Cloud.