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.
Nesta página, você verá 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, incluso 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 descartará as mensagens publicadas e não será possível recuperá-las depois.
Há muitas maneiras de assinar o tópico, mas usaremos os gatilhos da função do Cloud Run nestes exemplos.
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 sensível ao tempo. Com as notificações, você pode encaminhar suas 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
Veja neste exemplo 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ê precisará 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 para "stopBilling" (Node) ou "stop_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 acima. 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 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 serão encerradas, mas isso não afetará nossos resultados armazenados depois que o orçamento for 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.
Certifique-se de ter adicionado 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 para ser executada como "limitUse" (Node.js) ou "limit_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 aos serviços do projeto em que ela fará 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 acima. Para confirmar que a função foi executada com êxito, verifique as máquinas virtuais do Compute Engine no Console do Google Cloud.