Gerenciar custos do App Engine

Com o App Engine, você paga apenas pelos recursos que usa além das cotas gratuitas. Depois que você exceder as cotas gratuitas, 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
  • Desativar o aplicativo 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 aplicativo 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 aplicativo 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 aplicativo.

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 aplicativo.

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 ver 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 aplicativo impede que ele seja exibido e incorra em cobranças de faturamento relacionadas à respectiva exibição. Todos os dados e configurações do aplicativo permanecem inalterados. Quando você estiver pronto para começar a executar o aplicativo novamente, poderá ativá-lo.

Enquanto o aplicativo estiver desativado, as solicitações para ele falharão. Você pode continuar sendo cobrado por outros produtos do Google Cloud. Por exemplo, se o projeto tiver excedido a cota gratuita do Cloud Storage, você continuará sendo cobrado pelo armazenamento.

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

Desativar o aplicativo de forma programática

É possível usar os Alertas de orçamento, Pub/Sub e Cloud Functions para desativar automaticamente seu aplicativo quando os custos excederem o limite especificado.

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

  • 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 aplicativo não funcionarão enquanto ele estiver desativado.
  • Você pode continuar sendo cobrado por outros produtos do Google Cloud enquanto seu aplicativo está desativado.

Para desativar o aplicativo de forma 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 Functions, crie uma função que seja acionada pelo tópico 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.87.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 Administrador 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 de faturamento do Cloud e a função começa a desativar o aplicativo. 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 superior para indicar que o aplicativo está desativado.

Acessar o painel do App Engine

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

Acesse as configurações do aplicativo