Se você quer economizar e precisa controlar seu ambiente de acordo com o orçamento, use as notificações programáticas de orçamento para automatizar a resposta de controle de custos com base na notificação de orçamento.
As notificações de orçamento usam tópicos do Pub/Sub para fornecer um status em tempo real do orçamento do Cloud Billing, usando a escalonabilidade, a flexibilidade e a confiabilidade do middleware empresarial orientado a mensagens para a nuvem.
Este documento tem exemplos e instruções detalhadas sobre como usar as notificações de orçamento com as funções do Cloud Run para automatizar o gerenciamento de custos.
Configurar notificações de orçamento
A primeira etapa é ativar um tópico do Pub/Sub para seu orçamento. Isso é descrito em detalhes em Gerenciar notificações com alertas de orçamento programático.
Depois de ativar as notificações de orçamento, observe o seguinte:
- Tópico do Pub/Sub: é o endpoint de notificações configurado para o orçamento.
- ID do orçamento: é um ID exclusivo do orçamento, incluído em todas as notificações. Para localizar esse ID, acesse Gerenciar notificações no orçamento e selecione Conectar um tópico do Pub/Sub a este orçamento.
Detectar suas notificações
O próximo passo é assinar seu tópico do Pub/Sub para detectar as notificações. Se você não tiver um tópico assinado, o Pub/Sub vai descartar as mensagens publicadas, e não será possível recuperá-las mais tarde.
Há muitas maneiras de assinar o tópico, mas estes exemplos usam gatilhos da função do Cloud Run.
Criar uma função do Cloud Run
Para criar uma nova função do Cloud Run:
No console do Google Cloud, acesse a página das funções do Cloud Run.
Clique em
CRIAR FUNÇÃO e atribua a ela um nome que seja significativo para seu orçamento.Em Gatilho, selecione Tópico do Pub/Sub.
Selecione o tópico que você configurou no seu orçamento.
Forneça o código-fonte e as dependências que a função executará.
Defina a Função a ser executada com o nome correto da função.
Descrever sua função do Cloud Run
Para informar à função do Cloud Run o que você quer fazer com a notificação, escreva o código usando a edição in-line ou faça upload de um arquivo. Para detalhes sobre as notificações que seu código receberá, consulte Formato de notificação.
Por exemplo, uma função pode registrar notificações, atributos e dados do Pub/Sub recebidos quando for acionada por uma notificação de orçamento. Para saber mais, consulte Gatilhos do Pub/Sub.
Conferir os eventos da função do Cloud Run
Depois de salvar a função do Cloud Run, clique em VER REGISTROS para visualizar as notificações de orçamento registradas. Isso mostra os registros das suas invocações de função.
Testar a função do Cloud Run
As notificações são enviadas ao Pub/Sub e os assinantes recebem as mensagens. Para testar uma notificação de amostra e verificar se sua função está operando como esperado, publique uma mensagem no Pub/Sub usando este objeto como o corpo da mensagem:
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
Você também pode adicionar atributos de mensagem, como o ID da conta de faturamento. Consulte a documentação completa do formato de notificação para ver mais informações.
Enviar notificações para o Slack
O e-mail nem sempre é a melhor maneira de se manter atualizado sobre seus custos na nuvem, principalmente se o orçamento for crítico e urgente. Com as notificações, é possível encaminhar mensagens de orçamento para outras mídias.
Neste exemplo, descrevemos como encaminhar notificações de orçamento para o Slack. Dessa maneira, toda vez que o Faturamento do Cloud publicar uma notificação de orçamento, uma função do Cloud Run usará um bot para postar uma mensagem em um canal do Slack no espaço de trabalho desse bot.
Configurar um canal e permissões do Slack
A primeira etapa é criar seu espaço de trabalho no Slack e os tokens de usuário do bot que são usados para chamar a API Slack. É possível gerenciar os tokens da API em https://api.slack.com/apps. Para instruções detalhadas, consulte Usuários de bot no site do Slack.
Gravar uma função do Cloud Run
Para criar uma nova função, siga as etapas em Criar uma função do Cloud Run. Verifique se o gatilho está definido como o mesmo tópico do Pub/Sub que o orçamento está configurado para usar.
Adicionar dependências:
Node.js
Copie o seguinte para o
package.json
:Python
Copie o seguinte para o
requirements.txt
:Escreva o código ou use o exemplo abaixo para postar notificações de orçamento em um canal de chat do Slack usando a API Slack.
Verifique se os seguintes parâmetros postMessage da API Slack estão configurados corretamente:
- Token de acesso do OAuth do usuário de bot
- Nome do canal
Exemplo de código:
Node.js
Python
Agora você pode testar a função do Cloud Run para ver uma mensagem exibida no Slack.
Limitar (desativar) o faturamento para interromper o uso
Neste exemplo, mostramos como limitar custos e interromper o uso de um projeto desativando o Cloud Billing. Desativar o faturamento em um projeto fará com que todos os serviços do Google Cloud no projeto sejam encerrados, incluindo os serviços de nível gratuito.
Por que desativar o faturamento?
Talvez seja útil limitar os custos caso haja um limite absoluto do dinheiro que se pode gastar no Google Cloud. Isso é comum para estudantes, pesquisadores ou desenvolvedores que trabalham em ambientes de sandbox. Nesses casos, convém interromper os gastos e encerrar todos os seus serviços e o uso do Google Cloud quando seu limite de orçamento é atingido.
No nosso exemplo, usamos acme-backend-dev como projeto de não produção em que é seguro desativar o Faturamento do Cloud.
Antes de começar a trabalhar com este exemplo, verifique se você fez o seguinte:
Ative a API Cloud Billing. A função do Cloud Run precisa chamar a API Cloud Billing para desativar o Cloud Billing em um projeto.
Configurar um orçamento para monitorar os custos do projeto e ativar as notificações de orçamento.
Gravar uma função do Cloud Run
Em seguida, você precisa configurar a função do Cloud Run para chamar a API Cloud Billing. Isso permite que a função do Cloud Run desative o Cloud Billing para nosso projeto de exemplo acme-backend-dev.
Para criar uma nova função, siga as etapas em Criar uma função do Cloud Run. Verifique se o gatilho está definido como o mesmo tópico do Pub/Sub que o orçamento está configurado para usar.
Adicione as seguintes dependências:
Node.js
Copie o seguinte para o
package.json
:Python
Copie o seguinte para o
requirements.txt
:Copie o código abaixo na função do Cloud Run.
Defina a função a ser executada como
stopBilling
(Node) oustop_billing
(Python).Dependendo do ambiente de execução, a variável de ambiente
GOOGLE_CLOUD_PROJECT
pode ser definida automaticamente. Revise a lista de variáveis de ambiente definidas automaticamente e determine se você precisa definir manualmente a variávelGOOGLE_CLOUD_PROJECT
para o projeto para o qual quer limitar (desativar) o Cloud Billing.
Node.js
Python
Configurar permissões da conta de serviço
Sua função do Cloud Run é executada como uma conta de serviço criada automaticamente. Para que essa conta de serviço possas desativar o faturamento, será preciso conceder a ela as permissões corretas, como Administrador de faturamento.
Para identificar a conta de serviço correta, visualize os detalhes da sua função do Cloud Run listada na parte inferior da página.
Gerencie permissões de administrador de faturamento na página "Faturamento" no Console do Google Cloud.
Para conceder privilégios de administrador da conta de faturamento à de serviço, selecione o nome dessa conta.
Validar se o Faturamento do Cloud está desativado
Quando o orçamento enviar uma notificação, o projeto especificado terá mais uma Conta de faturamento do Cloud. Se você quiser testar a função, publique uma mensagem de exemplo com a mensagem de teste anterior. O projeto não estará mais visível na conta do Cloud Billing e os recursos no projeto serão desativados, incluindo a função do Cloud Run, se ela estiver no mesmo projeto.
É possível reativar manualmente o Cloud Billing para seu projeto no Console do Google Cloud.
Controlar o uso de forma seletiva
Limitar (desativar) o Faturamento do Cloud conforme descrito no exemplo anterior é um processo binário e definitivo. Isso significa que seu projeto ou está ativado, ou está desativado. Quando o projeto é desativado, todos os serviços são interrompidos e todos os recursos são excluídos.
Se você precisar de uma resposta com mais detalhes, controle seletivamente os recursos. Por exemplo, caso queira interromper alguns recursos do Compute Engine, mas deixar o Cloud Storage intacto, você tem como controlar seletivamente o uso. Isso reduz seu custo por hora sem desativar completamente seu ambiente.
É possível escrever uma política com o detalhamento que você quiser. No entanto, para nosso exemplo, nosso projeto está realizando pesquisas com várias máquinas virtuais do Compute Engine e está armazenando resultados no Cloud Storage. Neste exemplo de função do Cloud Run, todas as instâncias do Compute Engine são encerradas, mas isso não afeta nossos resultados armazenados depois que o orçamento é excedido.
Gravar uma função do Cloud Run
Para criar uma nova função, siga as etapas em Criar uma função do Cloud Run. Verifique se o gatilho está definido como o mesmo tópico do Pub/Sub que o orçamento está configurado para usar.
Verifique se você adicionou as dependências descritas em Limitar (desativar) o faturamento para interromper o uso.
Copie o código abaixo na função do Cloud Run.
Defina a função a ser executada como
limitUse
(Node) oulimit_use
(Python).Dependendo do ambiente de execução, a variável de ambiente
GCP_PROJECT
pode ser definida automaticamente. Revise a lista de variáveis de ambiente definidas automaticamente e determine se você precisa definir manualmente a variávelGCP_PROJECT
para o projeto que executa as máquinas virtuais.Defina o parâmetro ZONE. Trata-se da zona em que as instâncias serão interrompidas para este exemplo.
Node.js
Python
Configurar permissões da conta de serviço
- Sua função do Cloud Run é executada como uma conta de serviço criada automaticamente. Para controlar o uso, você precisa conceder à conta de serviço permissões para todos os serviços do projeto em que ela precisa fazer alterações.
- Para identificar a conta de serviço correta, visualize os detalhes da sua função do Cloud Run, listada na parte inferior da página.
- No console do Google Cloud, acesse a página IAM para definir as permissões apropriadas.
Acessar a página "IAM"
Confirmar que as instâncias foram interrompidas
Quando o orçamento envia uma notificação, as máquinas virtuais do Compute Engine são interrompidas.
Para testar a função, publique uma mensagem de exemplo com a mensagem de teste anterior. Para confirmar que a função foi executada com êxito, verifique as máquinas virtuais do Compute Engine no Console do Google Cloud.