Administra los costos de App Engine

Con App Engine, solo pagas por los recursos que usas por fuera de las cuotas gratuitas. Una vez que superas las cuotas gratuitas, los costos se escalan con la cantidad de tráfico que recibe la aplicación.

Para limitar los costos de la app de App Engine, puedes usar cualquiera de los siguientes mecanismos:

  • Especifica la cantidad máxima de instancias.
  • Crea alertas de presupuesto.
  • Inhabilita la app de forma manual.
  • Inhabilita la app de manera programática.

Especifica la cantidad máxima de instancias

Dado que los costos de App Engine suelen escalarse en función de la cantidad de tráfico que recibe la app, puedes limitar los costos si limitas la cantidad de instancias que App Engine puede crear.

Si se establece 1 instancia como máximo, por lo general, se mantiene el uso de hora de instancia dentro del nivel gratuito. Sin embargo, si se establece un valor máximo demasiado bajo, es posible que la app no pueda tener suficientes instancias para entregar de forma adecuada las solicitudes entrantes.

Para especificar la cantidad máxima de instancias, usa la opción de configuración max_instances en el archivo app.yaml de la app.

Crea alertas de presupuesto

Las alertas de presupuesto envían una notificación cuando los costos superan el límite que especificaste. Cuando recibes una notificación, puedes limitar los costos si disminuyes el valor de la opción de configuración max_instances o inhabilitas la app.

Para comenzar con las alertas de presupuesto, consulta Configura alertas de presupuesto.

Selecciona el alcance de una alerta de presupuesto

Puedes crear alertas de presupuesto para el costo total de todos los servicios de Google Cloud en uno o más proyectos, o solo para el costo de App Engine.

A fin de crear una alerta de presupuesto solo para costos de App Engine, en el campo Productos de la alerta de presupuesto, selecciona App Engine. La alerta se activará cuando el costo total de todos los recursos de App Engine supere el importe que especificaste, incluidos los siguientes aspectos:

  • Las horas de instancia en el entorno estándar de App Engine
  • Las horas de instancia y la RAM en el entorno flexible de App Engine
  • Servicios de App Engine agrupados

Para obtener una lista completa de los recursos facturables de App Engine, consulta SKU de App Engine.

Inhabilita la app de forma manual

Si inhabilitas la app de forma temporal, esta dejará de entregar contenido y de generar cargos de facturación relacionados con la entrega. No se modificará ninguno de sus datos ni de las opciones de configuración y, cuando estés listo para volver a ejecutar la app, podrás habilitarla.

Mientras la app esté inhabilitada, las solicitudes enviadas a ella fallarán. Es posible que se sigan generando cargos de otros productos de Google Cloud. Por ejemplo, si tu proyecto superó la cuota gratuita de Cloud Storage, se seguirán generando cargos por el almacenamiento.

Para obtener más información, consulta Inhabilita una app.

Inhabilita la app de manera programática

Puedes usar alertas de presupuesto, Pub/Sub y Cloud Functions para inhabilitar la app de forma automática cuando los costos excedan el límite que especificaste.

Al igual que sucede con la inhabilitación manual de una app, en la inhabilitación programática ocurre lo siguiente:

  • No se modificará ninguno de los datos ni de las opciones de configuración de la app.
  • Cuando estés listo para volver a ejecutar la app, puedes habilitarla.
  • Mientras la app esté inhabilitada, las solicitudes enviadas a ella fallarán.
  • Es posible que se sigan generando cargos de otros productos de Google Cloud mientras la app está inhabilitada.

Para inhabilitar la app de manera programática, haz lo siguiente:

  1. Crea una alerta de presupuesto que envíe una notificación a un tema de Pub/Sub. Para obtener más información, consulta Administra notificaciones programáticas.

    A fin de crear una alerta de presupuesto solo para costos de App Engine, en el campo Productos de la alerta de presupuesto, selecciona App Engine. Para obtener información sobre los recursos que pueden activar esta alerta, consulta Crea alertas de presupuesto.

  2. En Cloud Functions, crea una función que se active mediante el tema de Pub/Sub. Para obtener más información, consulta Crea una función de Cloud Functions.

    Cuando crees la función, haz lo siguiente:

    1. Usa el siguiente código fuente:

      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. Agrega las siguientes dependencias al archivo requirements.txt de la función:

      google-api-python-client==2.131.0
    3. En Función que se ejecutará, ingresa limit_use_appengine.

    4. Haz clic en Environment variables, networking, timeouts and more.

    5. Selecciona una cuenta de servicio que tenga la función de administrador de App Engine. La cuenta de servicio predeterminada de App Engine tiene esta función de forma predeterminada.

  3. Prueba la función.

Cuando se activa la alerta de presupuesto, se envía un correo electrónico a los usuarios de la cuenta de Facturación de Cloud, y la función comienza a inhabilitar la app. Este proceso puede llevar unos minutos.

Para verificar que la función se haya ejecutado de forma correcta, consulta el panel de App Engine. Aparecerá un mensaje cerca de la parte superior para indicar que la app está inhabilitada.

Ir al panel de App Engine

Cuando quieras que la app siga entregando solicitudes, ve a Configuración de la aplicación y haz clic en Habilitar aplicación.

Ir a la configuración de la aplicación