Gerenciar custos do App Engine

Com o App Engine, você paga apenas pelos recursos que usa além das cotas sem custo financeiro. Depois que você exceder as cotas sem custos financeiros, seus custos serão escalonados de acordo com a quantidade de tráfego que o aplicativo recebe.

Para limitar os custos do aplicativo do App Engine, use qualquer um dos seguintes mecanismos:

  • Especificar o número máximo de instâncias
  • Criar alertas de orçamento
  • Desativar o aplicativo manualmente
  • Como desativar o app de forma programática

Especificar o número máximo de instâncias

Como os custos do App Engine geralmente são escalonados com base na quantidade de tráfego que seu app recebe, é possível limitar os custos pelo número de instâncias que o App Engine pode criar.

Definir o máximo para uma instância normalmente mantém o uso da instância/hora no nível gratuito. No entanto, definir o valor máximo muito baixo pode impedir que o app tenha instâncias suficientes para atender às solicitações recebidas adequadamente.

Para especificar o número máximo de instâncias, use a configuração max_instances no arquivo app.yaml do app.

Criar alertas de orçamento

Os alertas de orçamento enviam uma notificação quando seus custos ultrapassam um limite especificado. Ao receber uma notificação, é possível limitar os custos diminuindo o valor da configuração max_instances ou desativando o app.

Para começar a usar os alertas de orçamento, consulte Definir alertas de orçamento.

Como selecionar o escopo de um alerta de orçamento

É possível criar alertas de orçamento para o custo total de todos os serviços do Google Cloud em um ou mais projetos ou apenas para o custo do App Engine.

Para criar um alerta de orçamento apenas para custos do App Engine, selecione App Engine no campo "Produtos". O alerta será acionado quando o custo total de todos os recursos do App Engine exceder o valor especificado, incluindo:

  • Instâncias/horas no ambiente padrão do App Engine
  • Instâncias/horas e RAM no ambiente flexível do App Engine
  • Pacote de serviços do App Engine

Para acessar a lista completa de recursos faturáveis do App Engine, consulte SKUs do App Engine.

Desativar o aplicativo manualmente

A desativação temporária do app impede que ele seja veiculado e incorra em cobranças de faturamento relacionadas à respectiva veiculação. Todos os dados e configurações do app permanecem inalterados. Quando estiver tudo pronto para começar a executar o app novamente, será possível ativá-lo.

Enquanto o app estiver desativado, as solicitações para ele falharão. É possível que outros produtos do Google Cloud continuem a ser cobrados. Por exemplo, se o projeto tiver excedido a cota sem custo financeiro do Cloud Storage, o armazenamento continuará sendo cobrado.

Para mais informações, consulte Como desativar um app.

Como desativar o app de forma programática

É possível usar os Alertas de Orçamento, Pub/Sub e Cloud Run functions para desativar automaticamente seu app quando os custos excederem o limite especificado.

Assim como acontece com a desativação manual de um app:

  • Todos os dados e definições de configuração do app permanecem inalterados.
  • Quando você estiver pronto para começar a executar seu aplicativo novamente, poderá ativá-lo.
  • As solicitações para seu app não funcionarão enquanto ele estiver desativado.
  • É possível que outros produtos do Google Cloud continuem a ser cobrados enquanto o app estiver desativado.

Para desativar o app de maneira programática:

  1. Crie um alerta de orçamento que envie uma notificação para um tópico do Pub/Sub. Para detalhes, consulte Gerenciar notificações programáticas.

    Para criar um alerta de orçamento apenas para custos do App Engine, no campo "Produtos do orçamento", selecione App Engine. Para informações sobre os recursos que podem acionar esse alerta, consulte Criar alertas de orçamento.

  2. No Cloud Run functions, crie uma função que seja acionada pelo tópico do Pub/Sub. Para detalhes, consulte Criar uma função do Cloud.

    Ao criar a função:

    1. Use o seguinte código-fonte:

      import base64
      import json
      import os
      from googleapiclient import discovery
      APP_NAME = os.getenv("GCP_PROJECT")
      
      
      def limit_use_appengine(data, context):
          pubsub_data = base64.b64decode(data["data"]).decode("utf-8")
          pubsub_json = json.loads(pubsub_data)
          cost_amount = pubsub_json["costAmount"]
          budget_amount = pubsub_json["budgetAmount"]
          if cost_amount <= budget_amount:
              print(f"No action necessary. (Current cost: {cost_amount})")
              return
      
          appengine = discovery.build("appengine", "v1", cache_discovery=False)
          apps = appengine.apps()
      
          # Get the target app's serving status
          target_app = apps.get(appsId=APP_NAME).execute()
          current_status = target_app["servingStatus"]
      
          # Disable target app, if necessary
          if current_status == "SERVING":
              print(f"Attempting to disable app {APP_NAME}...")
              body = {"servingStatus": "USER_DISABLED"}
              apps.patch(appsId=APP_NAME, updateMask="serving_status", body=body).execute()
      
      
    2. Adicione as seguintes dependências ao arquivo requirements.txt da função:

      google-api-python-client==2.131.0
    3. Em Função a ser executada, digite limit_use_appengine.

    4. Clique em Variáveis de ambiente, rede, tempos limites e mais.

    5. Selecione uma conta de serviço que tenha o papel Admin do App Engine. A conta de serviço padrão do App Engine tem esse papel por padrão.

  3. Teste a função.

Quando o alerta de orçamento é acionado, um e-mail é enviado aos usuários na sua conta do Cloud Billing e a função começa a desativar o app. Pode levar alguns minutos para concluir esse processo.

Para verificar se a função foi executada com sucesso, veja o painel do App Engine. Uma mensagem aparece na parte de cima para indicar que o app está desativado.

Acessar o painel do App Engine

Para que o app continue atendendo às solicitações, acesse Configurações do aplicativo e clique em Ativar aplicativo.

Acessar as configurações do aplicativo