Gestisci i costi di App Engine

Con App Engine, paghi solo per le risorse che utilizzi oltre le quote gratuite. Se superi le quote gratuite, i tuoi costi vengono scalati in base alla quantità di traffico ricevuta dall'applicazione.

Per limitare i costi dell'app App Engine, puoi utilizzare uno dei seguenti meccanismi:

  • Specifica il numero massimo di istanze
  • Crea avvisi relativi al budget
  • Disattivare l'app manualmente
  • Disattivare la tua app in modo programmatico

Specifica il numero massimo di istanze

Poiché i costi di App Engine generalmente scalano in base alla quantità di traffico ricevuta dall'app, puoi limitare i tuoi costi limitando il numero di istanze che App Engine può creare.

L'impostazione del numero massimo su 1 istanza mantiene in genere l'utilizzo delle ore di istanza all'interno del livello gratuito. Tuttavia, l'impostazione di un valore massimo troppo basso potrebbe impedire alla tua app di avere un numero sufficiente di istanze per gestire in modo adeguato le richieste in entrata.

Per specificare il numero massimo di istanze, utilizza l'impostazione max_instances nel file app.yaml dell'app.

Crea avvisi relativi al budget

Gli avvisi relativi al budget inviano una notifica quando i costi superano una soglia da te specificata. Quando ricevi una notifica, puoi limitare i costi abbassando il valore dell'impostazione max_instances o disattivando l'app.

Per iniziare a utilizzare gli avvisi relativi al budget, consulta Impostare gli avvisi relativi al budget.

Seleziona l'ambito di un avviso relativo al budget

Puoi creare avvisi relativi al budget per il costo totale di tutti i servizi Google Cloud in uno o più progetti o solo per il costo di App Engine.

Per creare un avviso relativo al budget solo per i costi di App Engine, nel campo Prodotti dell'avviso relativo al budget, seleziona App Engine. L'avviso viene attivato quando il costo totale di tutte le risorse App Engine supera l'importo specificato, tra cui:

  • Ore di istanza nell'ambiente standard di App Engine
  • Ore di istanza e RAM nell'ambiente flessibile di App Engine
  • Servizi App Engine in bundle

Per l'elenco completo delle risorse App Engine fatturabili, consulta gli SKU di App Engine.

Disattivare l'app manualmente

La disattivazione dell'app ne interrompe temporaneamente la pubblicazione e comporta addebiti di fatturazione relativi alla sua pubblicazione. Tutti i dati e le impostazioni di configurazione dell'app rimangono invariati e puoi abilitarla quando vuoi ricominciare a eseguire l'app.

Quando l'app è disattivata, le richieste alla tua app non andranno a buon fine. Potresti continuare a incorrere in addebiti da altri prodotti Google Cloud. Ad esempio, se il tuo progetto ha superato la quota gratuita per Cloud Storage, continuerai a esserti addebitato per l'archiviazione.

Per ulteriori informazioni, consulta Disattivare un'app.

Disattivare la tua app in modo programmatico

Puoi utilizzare avvisi relativi al budget, Pub/Sub e Cloud Functions per disabilitare automaticamente la tua app quando i tuoi costi superano una soglia da te specificata.

Come per la disattivazione manuale di un'app:

  • Tutti i dati e le impostazioni di configurazione dell'app rimangono invariati.
  • Puoi abilitare l'app quando è tutto pronto per ricominciare a eseguire l'app.
  • Le richieste alla tua app non andranno a buon fine quando l'app è disattivata.
  • Quando la tua app è disabilitata, potresti continuare a incorrere in addebiti da parte di altri prodotti Google Cloud.

Per disattivare in modo programmatico la tua app:

  1. Crea un avviso relativo al budget che invii una notifica a un argomento Pub/Sub. Per maggiori dettagli, consulta Gestire le notifiche programmatice.

    Per creare un avviso relativo al budget solo per i costi di App Engine, seleziona App Engine nel campo Prodotti del budget. Per informazioni sulle risorse che possono attivare questo avviso, consulta Creare avvisi relativi al budget.

  2. In Cloud Functions, crea una funzione che viene attivata dall'argomento Pub/Sub. Per maggiori dettagli, consulta Creare una funzione Cloud Functions.

    Quando crei la funzione:

    1. Utilizza il seguente codice sorgente:

      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. Aggiungi le seguenti dipendenze al file requirements.txt della funzione:

      google-api-python-client==2.87.0
    3. In Funzione da eseguire, inserisci limit_use_appengine.

    4. Fai clic su Variabili di ambiente, networking, timeout e altro ancora.

    5. Seleziona un account di servizio con il ruolo Amministratore App Engine. L'account di servizio predefinito di App Engine ha questo ruolo per impostazione predefinita.

  3. Esegui il test della funzione.

Quando viene attivato l'avviso relativo al budget, viene inviata un'email agli utenti nel tuo account di fatturazione Cloud e la funzione inizia a disabilitare l'app. Potrebbero essere necessari alcuni minuti per completare questo processo.

Per verificare che la funzione sia stata eseguita correttamente, visualizza la dashboard di App Engine. Nella parte superiore viene visualizzato un messaggio che indica che l'app è disattivata.

Vai alla dashboard di App Engine

Quando vuoi che la tua app continui a gestire le richieste, vai a Impostazioni applicazione e fai clic su Abilita applicazione.

Vai a Impostazioni applicazione