Gestisci i costi di App Engine

Con App Engine, paghi solo per le risorse che utilizzi oltre le quote senza costi. Dopo aver superato le quote senza costi, i costi aumentano 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
  • Disattiva l'app manualmente
  • Disattiva l'app a livello di programmazione

Specifica il numero massimo di istanze

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

Se imposti il numero massimo di istanze su 1, in genere l'utilizzo delle ore di istanza rimane nel livello senza costi. Tuttavia, se imposti un numero massimo troppo basso, l'app potrebbe non avere un numero sufficiente di istanze per gestire adeguatamente le richieste in entrata.

Per specificare il numero massimo di istanze, utilizza l'max_instances impostazione 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 specificata. Quando ricevi una notifica, puoi limitare i costi diminuendo 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 Google Cloud servizi in uno o più progetti oppure 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 di 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 in bundle di App Engine

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

Disattiva l'app manualmente

La disattivazione dell'app ne interrompe temporaneamente la pubblicazione e l'addebito di costi di fatturazione correlati alla pubblicazione dell'app. Tutti i dati e le impostazioni di configurazione dell'app rimangono invariati e, quando sei pronto a riavviare l'app, puoi riattivarla.

Quando l'app è disattivata, le richieste all'app non vanno a buon fine. Potresti continuare a sostenere costi per altri Google Cloud prodotti. Ad esempio, se il tuo progetto ha superato la quota senza costi per Cloud Storage, continuerai a sostenere costi per lo spazio di archiviazione.

Per saperne di più, consulta Disattivare un'app.

Disattiva l'app a livello di programmazione

Puoi utilizzare gli avvisi relativi al 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:

  • Tutti i dati e le impostazioni di configurazione dell'app rimangono invariati.
  • Quando sei pronto a riavviare l'app, puoi riattivarla.
  • Quando l'app è disattivata, le richieste all'app non vanno a buon fine.
  • Potresti continuare a sostenere costi per altri Google Cloud prodotti mentre l'app è disattivata.

Per disattivare l'app a livello di programmazione:

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

    Per creare un avviso relativo al budget solo per i costi di App Engine, nel campo Prodotti del budget, seleziona App Engine. 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, 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.131.0
    3. In Funzione da eseguire , inserisci limit_use_appengine.

    4. Fai clic su Variabili ambientali, networking, timeout e molto altro.

    5. Seleziona un account di servizio con il ruolo Amministratore App Engine. Per impostazione predefinita, il service account predefinito di App Engine ha questo ruolo.

  3. Testa la funzione.

Quando viene attivato l'avviso relativo al 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 potrebbe richiedere alcuni minuti.

Per verificare che la funzione sia stata eseguita correttamente, visualizza la dashboard di App Engine. Viene visualizzato un messaggio nella parte superiore per indicare 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