Administra los costos de App Engine

Con App Engine, solo pagas por los recursos que usas más allá de las cuotas gratuitas. Una vez que superas las cuotas gratuitas, los costos se escalarán con la cantidad de tráfico que reciba tu aplicación.

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

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

Especifica la cantidad máxima de instancias

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

Si se establece el máximo de 1 instancia, por lo general, se mantiene el uso de la hora de instancia dentro del nivel gratuito. Sin embargo, si se establece el máximo demasiado bajo puede evitar que tu app tenga suficientes instancias para entregar adecuadamente las solicitudes entrantes.

Para especificar la cantidad máxima de instancias, usa la 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 configuración de max_instances o inhabilitas tu app.

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

Selecciona el permiso 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 especifiques, incluidos los siguientes:

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

Inhabilita tu app de forma manual

Si inhabilitas tu app, dejarás de entregarla de forma temporal y se aplicarán cargos de facturación relacionados con la publicación de tu app. Todos los datos y la configuración de tu app no se modificarán. Cuando estés listo para volver a ejecutar la app, puedes habilitarla.

Mientras la aplicación esté inhabilitada, las solicitudes a tu aplicación fallarán. Puedes seguir generando cargos de otros productos de Google Cloud. Por ejemplo, si tu proyecto superó la cuota gratuita de Cloud Storage, seguirás generando cargos por el almacenamiento.

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

Inhabilita tu app de manera programática

Puedes usar Alertas de presupuesto, Pub/Sub y Cloud Functions para inhabilitar tu app automáticamente cuando tus costos excedan el límite que especifiques.

Al igual que con la inhabilitación manual de una aplicación:

  • Todos los datos y la configuración de tu app no se modificarán.
  • Cuando estés listo para volver a ejecutar la app, puedes habilitarla.
  • Mientras la aplicación esté inhabilitada, las solicitudes a tu aplicación fallarán.
  • Puedes seguir generando cargos de otros productos de Google Cloud mientras tu app está inhabilitada.

Para inhabilitar tu 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 Cloud Function.

    Cuando crees la función, has 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 tu función:

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

    4. Haz clic en Variables de entorno, herramientas de redes, tiempos de espera y más.

    5. Selecciona una cuenta de servicio que tenga la función 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 tu cuenta de facturación de Cloud y tu función comienza a inhabilitar tu app. Este proceso puede tardar unos minutos.

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

Ir al panel de App Engine

Cuando quieras que tu app siga entregando solicitudes, ve a la página de configuración de la aplicación y haz clic en Habilitar aplicación.

Ir a la página Configuración de la aplicación

Cambia o quita un límite de gasto

Las aplicaciones antiguas de App Engine podrían crear límites de gasto para especificar una cantidad máxima aproximada que se te pueda cobrar por el uso de los recursos de la plataforma.

Desde el 12 de diciembre de 2019, no puedes crear límites de gasto nuevos, pero puedes cambiar o quitar los existentes.