Gérer les coûts App Engine

Avec App Engine, vous ne payez que pour les ressources que vous utilisez au-delà des quotas gratuits. Une fois que vous avez dépassé les quotas gratuits, vos coûts évoluent en fonction du trafic reçu par votre application.

Pour limiter les coûts de votre application App Engine, vous pouvez utiliser l'un des mécanismes suivants :

  • Spécifier le nombre maximal d'instances
  • Créer des alertes budgétaires
  • Désactiver votre application manuellement
  • Désactiver votre application par programmation

Spécifier le nombre maximal d'instances

Étant donné que les coûts liés à App Engine évoluent généralement en fonction du trafic reçu par votre application, vous pouvez réduire vos coûts en limitant le nombre d'instances qu'App Engine peut créer.

La définition du nombre maximal d'instances sur 1 permet en règle générale de maintenir le niveau d'utilisation des heures d'instance dans les quotas gratuits. Cependant, si vous définissez une valeur maximale trop faible, votre application risque de ne pas avoir suffisamment d'instances pour satisfaire les requêtes entrantes de manière appropriée.

Pour spécifier le nombre maximal d'instances, utilisez le paramètre max_instances dans le fichier app.yaml de votre application.

Créer des alertes budgétaires

Les alertes budgétaires envoient une notification lorsque vos coûts dépassent le seuil que vous spécifiez. Lorsque vous recevez une notification, vous pouvez limiter les coûts en réduisant la valeur du paramètre max_instances ou en désactivant votre application.

Pour commencer à utiliser les alertes budgétaires, consultez la section Définir des alertes budgétaires.

Sélectionner le champ d'application d'une alerte budgétaire

Vous pouvez créer des alertes budgétaires pour le coût total de tous les services Google Cloud dans un ou plusieurs projets, ou uniquement pour les coûts d'App Engine.

Pour créer une alerte budgétaire uniquement pour les coûts d'App Engine, sélectionnez App Engine dans le champ "Produits" de l'alerte budgétaire. L'alerte se déclenche lorsque le coût total de toutes les ressources App Engine dépasse le montant que vous spécifiez, y compris :

  • Heures d'utilisation de l'instance dans l'environnement standard
  • Heures d'utilisation de l'instance et mémoire RAM dans l'environnement flexible
  • Services groupés App Engine

Pour obtenir la liste complète des ressources facturables App Engine, consultez la page SKU App Engine.

Désactiver votre application manuellement

La désactivation temporaire de votre application arrête la diffusion et la facturation de frais liés à la diffusion. Toutes les données et tous les paramètres de configuration de votre application restent inchangés. Lorsque vous êtes prêt à redémarrer votre application, vous pouvez l'activer à nouveau.

Lorsque votre application est désactivée, les requêtes qui lui sont adressées échouent. Des frais pourront toujours vous être facturés pour d'autres produits Google Cloud. Par exemple, si votre projet a dépassé le quota gratuit pour Cloud Storage, des frais de stockage continueront de vous être facturés.

Pour en savoir plus, consultez la section Désactiver une application.

Désactiver votre application par programmation

Vous pouvez utiliser des alertes budgétaires, Pub/Sub et Cloud Functions pour désactiver automatiquement votre application lorsque vos coûts dépassent le seuil que vous spécifiez.

Comme pour la désactivation manuelle d'une application :

  • Toutes les données et tous les paramètres de configuration de votre application restent inchangés.
  • Lorsque vous êtes prêt à redémarrer votre application, vous pouvez l'activer à nouveau.
  • Les requêtes adressées à votre application échouent lorsque celle-ci est désactivée.
  • Des frais peuvent toujours vous être facturés pour d'autres produits Google Cloud lorsque votre application est désactivée.

Pour désactiver votre application de manière automatisée, procédez comme suit :

  1. Créez une alerte budgétaire qui envoie une notification à un sujet Pub/Sub. Pour en savoir plus, consultez la section Gérer les notifications automatisées.

    Pour créer une alerte budgétaire uniquement pour les coûts à partir d'App Engine, sélectionnez App Engine dans le champ "Produits" du budget. Pour en savoir plus sur les ressources qui peuvent déclencher cette alerte, consultez la section Créer des alertes budgétaires.

  2. Dans Cloud Functions, créez une fonction qui est déclenchée par le sujet Pub/Sub. Pour en savoir plus, consultez la section Créer une fonction Cloud.

    Lors de la création de la fonction :

    1. Utilisez le code source suivant :

      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. Ajoutez les dépendances suivantes au fichier requirements.txt de votre fonction :

      google-api-python-client==2.7.0
    3. Sous Fonction à exécuter, saisissez limit_use_appengine.

    4. Cliquez sur Variables d'environnement, mise en réseau, délais avant expiration, etc.

    5. Sélectionnez un compte de service doté du rôle Administrateur App Engine. Le compte de service App Engine par défaut dispose par défaut de ce rôle.

  3. Testez la fonction.

Lorsque l'alerte budgétaire est déclenchée, un e-mail est envoyé aux utilisateurs de votre compte Cloud Billing, et la désactivation de votre application commence. Cette opération peut prendre quelques minutes.

Pour vérifier que la fonction a bien été exécutée, affichez le tableau de bord App Engine. Un message s'affiche en haut de la page pour indiquer que votre application est désactivée.

Accéder au tableau de bord App Engine

Si vous souhaitez que votre application continue à diffuser des requêtes, accédez à la page Paramètres des applications, puis cliquez sur Activer l'application.

Accéder à la page "Paramètres des applications"

Modifier ou supprimer un plafond budgétaire

Les anciennes applications App Engine permettaient de créer des plafonds budgétaires définissant approximativement le montant maximal qui peut vous être facturé pour l'utilisation des ressources App Engine.