Gestisci i costi di App Engine

Con App Engine paghi solo per le risorse che utilizzi oltre le quote gratuite. Una volta superate le quote gratuite, i costi vengono adeguati in base alla quantità di traffico ricevuta dalla tua applicazione.

Per limitare i costi della tua app App Engine, puoi utilizzare uno dei seguenti meccanismi:

  • Specifica il numero massimo di istanze
  • Creare avvisi relativi al budget
  • Disattivare manualmente l'app
  • Disattivare l'app tramite programmazione

Specifica il numero massimo di istanze

Poiché i costi di App Engine di solito variano in base alla quantità di traffico ricevuta dalla tua app, puoi limitarli limitando il numero di istanze che App Engine può creare.

Se imposti il valore massimo su 1 istanza, in genere l'utilizzo delle ore dell'istanza rimane nel livello gratuito. Tuttavia, se imposti un valore massimo troppo basso, la tua app potrebbe non avere istanze sufficienti per gestire adeguatamente le richieste in arrivo.

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

Creare avvisi relativi al budget

Gli avvisi relativi al budget inviano una notifica quando i costi superano una soglia 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 di budget, consulta Impostare gli avvisi di budget.

Selezionare 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 budget solo per i costi di App Engine, seleziona App Engine nel campo Prodotti dell'avviso budget. L'avviso viene attivato quando il costo totale di tutte le risorse App Engine supera l'importo specificato, inclusi:

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

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

Disattivare manualmente l'app

La disattivazione dell'app ne interrompe temporaneamente la pubblicazione e gli addebiti relativi alla fatturazione. Tutte le impostazioni di dati e configurazione dell'app rimangono invariate e, quando è tutto pronto per ricominciare a pubblicare l'app, puoi riattivarla.

Mentre l'app è disattivata, le richieste all'app non andranno a buon fine. Potresti continuare a essere soggetto ad addebiti di altri prodotti Google Cloud. Ad esempio, se il tuo progetto ha superato la quota gratuita per Cloud Storage, continuerai a pagare gli addebiti per lo spazio di archiviazione.

Per ulteriori informazioni, consulta Disattivare un'app.

Disattivare l'app tramite programmazione

Puoi utilizzare gli avvisi budget, Pub/Sub e le funzioni Cloud Run per disattivare automaticamente l'app quando i costi superano una soglia specificata.

Come per la disattivazione manuale di un'app:

  • Tutte le impostazioni di dati e configurazione dell'app rimangono invariate.
  • Quando è tutto pronto, puoi riattivare l'app.
  • Le richieste alla tua app non andranno a buon fine mentre l'app è disattivata.
  • Potresti continuare a ricevere addebiti di altri prodotti Google Cloud mentre la tua app è disattivata.

Per disattivare l'app tramite programmazione:

  1. Crea un avviso relativo al budget che invia una notifica a un argomento Pub/Sub. Per maggiori dettagli, vedi Gestire le notifiche programmatiche.

    Per creare un avviso 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 Run Functions, crea una funzione attivata dall'argomento Pub/Sub. Per maggiori dettagli, vedi Creare una funzione Cloud.

    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.131.0
    3. In Funzione da eseguire, inserisci limit_use_appengine.

    4. Fai clic su Variabili ambientali, 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. Testa la funzione.

Quando viene attivato l'avviso sul budget, viene inviata un'email agli utenti del tuo account di fatturazione Cloud e la funzione inizia a disattivare l'app. Il completamento di questa procedura può richiedere alcuni minuti.

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 l'app continui a gestire le richieste, vai a Impostazioni applicazione e fai clic su Attiva applicazione.

Vai a Impostazioni applicazione