Se sei consapevole dei costi e hai bisogno di controllare l'ambiente rispetto al budget, puoi utilizzare le notifiche relative al budget programmatiche per automatizzare la risposta al controllo dei costi in base alla notifica relativa al budget.
Le notifiche relative al budget utilizzano gli argomenti Pub/Sub per fornire uno stato in tempo reale del budget di fatturazione Cloud, sfruttando la scalabilità, la flessibilità e l'affidabilità del middleware aziendale orientato ai messaggi per il cloud.
Questa pagina contiene esempi e istruzioni dettagliate su come utilizzare le notifiche relative al budget con Cloud Functions 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. Questa operazione è descritta in dettaglio in Gestire le notifiche di avviso relativo al budget programmatico.
Dopo aver attivato le notifiche relative al budget, tieni presente quanto segue:
- Argomento Pub/Sub: si tratta dell'endpoint di notifica configurato per il budget.
- ID budget: si tratta di un ID univoco per il budget, incluso in tutte le notifiche. Puoi individuare l'ID budget nel tuo budget in Gestisci notifiche. L'ID viene visualizzato dopo che hai selezionato Connetti un argomento Pub/Sub a questo budget.
Ascoltare le notifiche
Il passaggio successivo consiste nell'ascoltare le notifiche iscrivendoti all'argomento Pub/Sub. Se non hai un sottoscrittore, Pub/Sub eliminerà i messaggi pubblicati e non potrai recuperarli in un secondo momento.
Sebbene esistano molti modi per iscriversi all'argomento, per questi esempi utilizzeremo i trigger di funzione Cloud Functions.
Crea una funzione Cloud
Per creare una nuova Cloud Function:
Nella console Google Cloud, vai alla pagina Cloud Functions.
Fai clic su
CREA FUNZIONE e assegna alla funzione un nome significativo per il tuo budget.In Trigger, seleziona l'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 Cloud Function
Per comunicare alla funzione Cloud Function cosa vuoi che faccia con la notifica, puoi scrivere il codice utilizzando l'editor in linea o caricare un file. Per maggiori dettagli sulle notifiche che riceverà il codice, consulta Formato delle notifiche.
Ad esempio, una funzione potrebbe registrare le notifiche Pub/Sub ricevute, gli attributi e i dati quando viene attivata da una notifica relativa al budget. Per saperne di più, consulta la pagina Trigger di Pub/Sub.
Visualizzare gli eventi della Cloud Function
Dopo aver salvato la Cloud Function, puoi fare clic su VISUALIZZA LOG per visualizzare le notifiche relative al budget registrate. Mostra i log delle chiamate alla funzione.
Testa la Cloud Function
Le notifiche vengono inviate a Pub/Sub e i sottoscrittori ricevono i messaggi. Per testare una notifica di esempio e assicurarti che la funzione funzioni 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 del messaggio come l'ID account di fatturazione. Per ulteriori informazioni, consulta la documentazione completa sul formato delle notifiche.
Invia notifiche a Slack
L'email non è sempre il modo migliore per rimanere al passo con i costi del cloud, in particolare se il tuo budget è essenziale e richiede tempi di elaborazione. Con le 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 fatturazione Cloud pubblica una notifica relativa al budget, una Cloud Function utilizza un bot per pubblicare un messaggio in un canale Slack dell'area di lavoro del bot.
Configurazione di un canale Slack e delle autorizzazioni
Il primo passaggio consiste nel creare la tua area di lavoro Slack e i token utente bot utilizzati per chiamare l'API Slack. I token API possono essere gestiti all'indirizzo https://api.slack.com/apps. Per istruzioni dettagliate, consulta la pagina relativa agli utenti bot sul sito di Slack.
Scrivi una Cloud Function
Crea una nuova funzione seguendo i passaggi descritti in Creare una funzione Cloud Functions. Assicurati che il trigger sia impostato sullo stesso argomento Pub/Sub per cui è impostato il budget.
Aggiungi dipendenze:
Node.js
Copia quanto segue in
package.json
:Python
Copia quanto segue in
requirements.txt
:Scrivi il codice o utilizza l'esempio riportato di seguito per pubblicare notifiche relative al budget in un canale di chat 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 testare la funzione Cloud Functions 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 progetto disabilitando la fatturazione Cloud. La disabilitazione della fatturazione in un progetto comporterà la terminazione di tutti i servizi Google Cloud nel progetto, 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 sviluppatori che lavorano in ambienti sandbox. In questi casi, vuoi interrompere la spesa e potresti voler arrestare tutti i servizi e l'utilizzo di Google Cloud quando viene raggiunto il limite del budget.
Nel nostro esempio, utilizziamo acme-backend-dev come progetto non di produzione per il quale 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 Functions deve chiamare l'API Cloud Billing per disabilitare la fatturazione Cloud per un progetto.
Imposta un budget per monitorare i costi del progetto e abilitare le notifiche relative al budget.
Scrivi una Cloud Function
Poi devi configurare la Cloud Function per chiamare l'API Cloud Billing. In questo modo la Cloud Function può disabilitare la fatturazione Cloud per il nostro progetto di esempio acme-backend-dev.
Crea una nuova funzione seguendo i passaggi descritti in Creare una funzione Cloud Functions. Assicurati che il trigger sia impostato sullo stesso argomento Pub/Sub per cui è impostato il budget.
Aggiungi le seguenti dipendenze:
Node.js
Copia quanto segue in
package.json
:Python
Copia quanto segue in
requirements.txt
:Copia il codice seguente nella Cloud Function.
Imposta la funzione da eseguire su "stopBilling" (Node) o "stop_billing" (Python).
A seconda del runtime, la variabile di ambiente
GOOGLE_CLOUD_PROJECT
potrebbe essere impostata automaticamente. Esamina l'elenco di variabili di ambiente impostate automaticamente e determina se è necessario impostare manualmente la variabileGOOGLE_CLOUD_PROJECT
sul progetto per cui vuoi limitare (disabilitare) la fatturazione Cloud.
Node.js
Python
Configura le autorizzazioni degli account di servizio
La funzione Cloud Functions viene eseguita come account di servizio creato automaticamente. Per consentire all'account di servizio di disabilitare la fatturazione, devi concedergli le autorizzazioni corrette, ad esempio Amministratore fatturazione.
Per identificare l'account di servizio corretto, visualizza i dettagli della funzione Cloud Function. L'account di servizio è elencato in fondo alla pagina.
Puoi gestire le autorizzazioni di amministratore della fatturazione nella pagina Fatturazione della console Google Cloud.
Per concedere i privilegi di 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 del progetto sono disabilitate, inclusa la Cloud Function se si trova nello stesso progetto.
Puoi riattivare manualmente la fatturazione Cloud per il tuo progetto nella console Google Cloud.
Controllo selettivo dell'utilizzo
La limitazione (disattivazione) della fatturazione Cloud come descritto nell'esempio precedente è binario e terminale. Il tuo progetto è abilitato o disabilitato. Quando è disabilitato, tutti i servizi vengono arrestati e tutte le risorse vengono alla fine eliminate.
Se hai bisogno di una risposta più articolata, puoi controllare selettivamente le risorse. Ad esempio, se vuoi arrestare alcune risorse Compute Engine senza modificare Cloud Storage, puoi controllare selettivamente l'utilizzo. Questo riduce il costo orario senza disabilitare completamente l'ambiente.
Puoi scrivere norme personalizzate nel modo che preferisci. Tuttavia, per il nostro esempio, il nostro progetto sta eseguendo ricerche con una serie di macchine virtuali Compute Engine e sta archiviando i risultati in Cloud Storage. Questo esempio di funzione Cloud Functions causerà l'arresto di tutte le istanze di Compute Engine, ma non influirà sui nostri risultati archiviati dopo il superamento del budget.
Scrivi una Cloud Function
Crea una nuova funzione seguendo i passaggi descritti in Creare una funzione Cloud Functions. Assicurati che il trigger sia impostato sullo stesso argomento Pub/Sub per cui è impostato il budget.
Assicurati di aver aggiunto le dipendenze descritte in Limitare (disabilitazione) la fatturazione per interrompere l'utilizzo.
Copia il codice seguente nella Cloud Function.
Imposta la funzione da eseguire su "limitUse" (Node) o "limit_use" (Python).
A seconda del runtime, la variabile di ambiente
GCP_PROJECT
potrebbe essere impostata automaticamente. Esamina l'elenco di variabili di ambiente impostate automaticamente e determina se devi impostare manualmente la variabileGCP_PROJECT
sul progetto che esegue le macchine virtuali.Imposta il parametro ZONE. Questa è la zona in cui le istanze verranno arrestate per questo esempio.
Node.js
Python
Configura le autorizzazioni degli account di servizio
- La funzione Cloud Functions viene eseguita come account di servizio creato automaticamente. Per controllare l'utilizzo, devi concedere all'account di servizio le autorizzazioni per tutti i servizi nel progetto che devono apportare modifiche.
- Per identificare l'account di servizio corretto, visualizza i dettagli della Cloud Function. L'account di servizio è elencato in fondo alla pagina.
- 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, le macchine virtuali di Compute Engine vengono arrestate.
Per testare la funzione, pubblica un messaggio di esempio con il messaggio di test riportato sopra. Per verificare che la funzione sia stata eseguita correttamente, controlla le macchine virtuali di Compute Engine nella console Google Cloud.