Tous les produits
Search
Centre de documentation

Auto Scaling:Custom ECS scale-in policy with Function Compute

Dernière mise à jour :Aug 18, 2026

Utilisez Function Compute pour créer une politique de réduction d'échelle personnalisée qui contrôle les instances à supprimer lors d'un événement de réduction, par exemple en priorisant les instances présentant la charge CPU la plus faible.

Contexte

Auto Scaling fournit des politiques intégrées pour supprimer des instances lors d'une activité de réduction d'échelle, selon des critères tels que l'heure de création de l'instance ou la version de la configuration de mise à l'échelle. Pour plus d'informations, consultez la rubrique Configurer une politique de terminaison d'instance pour un groupe de mise à l'échelle.

Pour répondre à des exigences plus spécifiques, utilisez Function Compute afin de créer une politique de réduction d'échelle personnalisée. Voici quelques cas d'utilisation courants :

  • Scénario 1 : Supprimez les instances ayant la charge CPU la plus faible afin de minimiser l'impact sur l'application.

  • Scénario 2 : Intégrez votre propre système de planification pour supprimer en priorité les instances inactives, réduisant ainsi les coûts tout en maintenant la disponibilité du service.

Prérequis

Procédure

Étape 1 : Créer une fonction

La console Alibaba Cloud Function Compute est disponible en deux versions : Function Compute 2.0 et Function Compute 3.0. Ce guide utilise Function Compute 2.0.

  1. Connectez-vous à la console Function Compute.

    Si vous utilisez la console Function Compute 3.0, cliquez sur Back to Function Compute 2.0.

  2. Dans le volet de navigation de gauche, cliquez sur Services & Functions.

  3. Dans la barre de navigation supérieure, sélectionnez une région.

  4. Créez un service.

    1. Sur la page Services, cliquez sur Create Service.

    2. Dans le panneau qui s'affiche, configurez les paramètres du service et cliquez sur OK.

      Cette rubrique utilise les paramètres suivants à titre d'exemple. Conservez les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez la section Créer un service.

      Parameter

      Example

      Description

      Service

      test-service

      Nom du service Function Compute. Respectez les conventions de nommage indiquées dans la console.

      Description

      test

      Description du service Function Compute.

      Logging

      Enable

      Activez la journalisation pour envoyer automatiquement les journaux d'exécution des fonctions vers Simple Log Service. Cela permet de déboguer le code, de diagnostiquer les échecs et d'analyser les données.

  5. Créez une fonction.

    1. Cliquez sur le nom du service, puis sur Function Management dans le volet de navigation de gauche.

    2. Cliquez sur Create Function.

    3. Sur la page Create Function, configurez les paramètres de la fonction et cliquez sur Create.

      Cette rubrique utilise la méthode Use Built-in Runtime pour créer la fonction. Les paramètres suivants sont utilisés à titre d'exemple. Conservez les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez la section Créer une fonction.

      Parameter

      Example

      Description

      Basic Settings

      Function Name

      test-fc

      Saisissez un nom pour la fonction. Respectez les conventions de nommage indiquées dans la console.

      Handler Type

      Event Handler

      Les types de gestionnaires suivants sont pris en charge :

      • Event Handler : La fonction traite les requêtes pilotées par les événements.

      • HTTP Handler : La fonction traite les requêtes HTTP ou WebSocket.

      Code

      Runtime Environment

      Python 3.9

      Environnement d'exécution de votre code.

      Code Upload Method

      Use Sample Code

      Hello, world! sample

      Méthode de téléchargement du code de la fonction vers Function Compute.

  6. Rédigez et déployez le code de la fonction.

    1. Cliquez sur le nom de la fonction pour accéder à la page des détails de la fonction.

    2. Sous l'onglet Code, modifiez le fichier index.py dans l'éditeur de code et cliquez sur Deploy.

      Implémentez la logique de filtrage en fonction de vos besoins métier, par exemple en récupérant la charge CPU de chaque instance ou en interrogeant votre système de planification.

      L'exemple de code suivant sélectionne les instances à supprimer en fonction du nombre d'instances à supprimer (Capacity) et de la liste des ID d'instance (InstanceId) transmis dans l'événement.

      # -*- coding: utf-8 -*-
      import logging
      import json
      def handler(event, context):
          evt = json.loads(event)
          logger = logging.getLogger()
          logger.info(evt)
          removeCount = 0
          if "CapacityToRemove" in evt:
              for cp in evt["CapacityToRemove"]:
                  logger.info(cp["Capacity"])
                  removeCount += int(cp["Capacity"])
          instances_to_terminate = []
          if "Instances" in evt:
              for i in evt["Instances"]:
                  instances_to_terminate.append(i["InstanceId"])
          response = {
              'InstanceIds': instances_to_terminate[:removeCount]
          }
          logger.info(response)
          return response
      
  7. (Facultatif) Testez la fonction.

    1. Sous l'onglet Code, cliquez sur l'icône 图标 située à côté de Test Function et sélectionnez Configure Test Parameters dans la liste déroulante.

    2. Saisissez l'objet d'événement de test et cliquez sur OK.

      Le code suivant sert d'exemple de test. ScalingGroupId spécifie le groupe de mise à l'échelle à gérer. CapacityToRemove indique qu'il faut supprimer une instance ECS de la zone cn-beijing-g. Instances spécifie la liste des instances disponibles pour la suppression.

      {
      	"ScalingGroupARN": "acs:ess:cn-beijing:160998252992****.scalinggroup/asg-2zei8mzn72rb115k****",
      	"ScalingGroupId": "asg-2zei8mzn72rb115k****",
      	"CapacityToRemove": [{
      		"ZoneId": "cn-beijing-g",
      		"Capacity": 1
      	}],
      	"Instances": [{
      			"InstanceId": "i-2zeinb37ovdsx6l0****",
      			"ZoneId": "cn-beijing-g",
      			"InstanceType": "ecs.g7.xlarge",
      			"ChargeType": "PostPaid"
      		},
      		{
      			"InstanceId": "i-2zeinb37ovdsx6l0****",
      			"ZoneId": "cn-beijing-g",
      			"InstanceType": "ecs.g7.xlarge",
      			"ChargeType": "PostPaid"
      		},
      		{
      			"InstanceId": "i-2zeinb37ovdsx6l0****",
      			"ZoneId": "cn-beijing-g",
      			"InstanceType": "ecs.g7.xlarge",
      			"ChargeType": "PostPaid"
      		}
      	],
      	"AdjustmentType": "SystemScaleIn"
      }
    3. Cliquez sur Test Function.

    4. Sous l'onglet Response, consultez le résultat du test.

      La réponse attendue de la fonction est présentée ci-dessous. Cette réponse indique à Auto Scaling de supprimer la première instance de la liste lors d'un événement de réduction d'échelle.

      {
          "InstanceIds": [
              "i-2zeinb37ovdsx6l0****"
          ]
      }
  8. En haut de la page, cliquez sur Publish Version puis sur OK.

Étape 2 : Configurer la politique de réduction d'échelle

Cette section explique comment appliquer la politique de réduction d'échelle personnalisée lors de la création d'un nouveau groupe de mise à l'échelle. Pour l'appliquer à un groupe existant, modifiez plutôt la politique de réduction d'échelle du groupe.

  1. Connectez-vous à la console Auto Scaling.

  2. Créez un groupe de mise à l'échelle.

    1. Sur la page Scaling Groups, cliquez sur Create Scaling Group.

    2. Configurez les paramètres du groupe de mise à l'échelle et cliquez sur Create.

      Cette rubrique utilise les paramètres suivants à titre d'exemple. Conservez les valeurs par défaut pour les paramètres non mentionnés. Pour plus d'informations, consultez la rubrique Configurer un groupe de mise à l'échelle.

      Parameter

      Example

      Description

      Scaling Group Name

      test

      Saisissez un nom pour le groupe de mise à l'échelle. Respectez les conventions de nommage indiquées dans la console.

      Type

      ECS

      Type d'instances dans le groupe de mise à l'échelle.

      Cet exemple utilise ECS, ce qui signifie que le groupe de mise à l'échelle gère des instances ECS.

      Instance Configuration Source

      Create from Scratch

      Modèle de création des instances.

      Cet exemple utilise l'option Create from Scratch, ce qui signifie qu'aucun modèle n'est spécifié à cette étape. Vous devrez ensuite créer une configuration de mise à l'échelle après la création du groupe.

      Instance Removing Policy

      Custom Policy

      • Service : test-service

      • Version : LATEST

      • Function : test-fc

      Politique de suppression des instances du groupe de mise à l'échelle lors d'une activité de réduction.

      Sélectionnez Custom Policy, puis choisissez la fonction créée à l'étape 1.

      Minimum Number of Instances

      0

      Nombre minimal d'instances dans le groupe de mise à l'échelle. Si le nombre actuel d'instances tombe en dessous de cette valeur, Auto Scaling ajoute des instances pour respecter le minimum requis.

      Maximum Number of Instances

      5

      Nombre maximal d'instances dans le groupe de mise à l'échelle. Si le nombre actuel d'instances dépasse cette valeur, Auto Scaling supprime des instances pour respecter le maximum autorisé.

      Enable Expected Number of Instances et Expected Number of Instances

      Activé, 3

      Activez cette fonctionnalité et définissez le nombre attendu d'instances. Auto Scaling maintient automatiquement ce nombre d'instances dans le groupe.

  3. Créez une configuration de mise à l'échelle. Pour plus d'informations, consultez la rubrique Créer une configuration de mise à l'échelle pour les instances ECS.

  4. Activez le groupe de mise à l'échelle. Pour plus d'informations, consultez la section Activer ou désactiver un groupe de mise à l'échelle.

    Étant donné que le nombre attendu d'instances pour ce groupe de mise à l'échelle est défini sur 3, Auto Scaling crée automatiquement trois instances ECS après l'activation du groupe.

Étape 3 : Vérifier la réduction d'échelle

  1. Déclenchez une activité de réduction d'échelle et vérifiez la suppression de l'instance.

    1. Déclenchez une activité de réduction d'échelle en modifiant le nombre attendu d'instances pour le groupe de mise à l'échelle. Pour plus d'informations, consultez la section Afficher ou modifier un groupe de mise à l'échelle.

      Important

      Vous pouvez également déclencher des activités de réduction d'échelle à l'aide d'une tâche planifiée ou d'une tâche déclenchée par un événement, ou en exécutant manuellement une règle de mise à l'échelle. Toutefois, une politique de réduction d'échelle personnalisée créée avec Function Compute ne peut pas être appliquée aux activités de réduction déclenchées par la modification du nombre minimal ou maximal d'instances d'un groupe de mise à l'échelle.

      Dans cet exemple, le nombre attendu d'instances est modifié pour passer à 2. Comme le groupe de mise à l'échelle contenait précédemment trois instances ECS, cela déclenche une activité de réduction d'échelle pour supprimer une instance.

    2. Consultez les détails de l'activité de mise à l'échelle pour confirmer quelle instance a été supprimée. Pour plus d'informations, consultez la rubrique Afficher les détails d'une activité de mise à l'échelle.

      Dans cet exemple, l'ID de l'instance supprimée est i-2ze2qdthrkpf****tldq.

      Dans les détails de l'activité de mise à l'échelle, le champ Cause indique que l'utilisateur a modifié la capacité attendue de 3 à 2. Le champ Details montre que l'instance correspondante a été supprimée. Le champ Status Information indique qu'une instance ECS a été supprimée et que le statut de l'activité est Successful.

  2. Consultez les journaux d'appel de la fonction pour confirmer que l'activité de réduction d'échelle a bien déclenché la fonction.

    1. Dans la console Function Compute, accédez à la page Services et cliquez sur le nom de votre service.

    2. Sur la page Function Management, cliquez sur le nom de votre fonction.

    3. Sur la page des détails de la fonction, cliquez sur l'onglet Logs.

    4. Sous l'onglet Requests, dans la section Requests List, recherchez la requête correspondant à l'heure de l'activité de réduction d'échelle et cliquez sur l'ID de la requête.

    5. Dans le panneau des détails de la requête qui s'affiche, cliquez sur Log Details pour afficher les journaux de l'appel de la fonction.

      Le journal indique qu'Auto Scaling a transmis à Function Compute le nombre d'instances à supprimer ainsi que la liste actuelle des ID d'instance. La fonction a renvoyé l'ID d'instance i-2ze2qdthrkpf****tldq pour suppression, ce qui correspond à l'instance supprimée.

      FC Invoke Start RequestId: 000BFA95-CAA4-5D83-B643-BC51C42402CD
      2024-06-13 11:28:22 000BFA95-CAA4-5D83-B643-BC51C42402CD [INFO] {'ScalingGroupARN': 'acs:ess:cn-beijing:16099825xxx:scalinggroup/asg-2e6ny5x9dtxxx', 'ScalingGroupId': 'asg-2e6ny5x9dtiaxxxg', 'CapacityToRemove': [{'ZoneId': 'cn-beijing-g', 'Capacity': 1}], 'Instances': [{'InstanceId': 'i-2ze2qdthrxxxxtldq', 'ZoneId': 'cn-beijing-g', 'InstanceType': 'ecs.c6e.large', 'ChargeType': 'SpotAsPriceGo'}, {'InstanceId': 'i-2ze2qdtxxxxtldr', 'ZoneId': 'cn-beijing-g', 'InstanceType': 'ecs.c6e.large', 'ChargeType': 'SpotAsPriceGo'}, {'InstanceId': 'i-2ze2qdthxxxxtlds', 'ZoneId': 'cn-beijing-g', 'InstanceType': 'ecs.c6e.large', 'ChargeType': 'SpotAsPriceGo'}], 'AdjustmentType': 'SystemScaleIn'}
      2024-06-13 11:28:22 000BFA95-CAA4-5D83-B643-BC51C42402CD [INFO] 1
      2024-06-13 11:28:22 000BFA95-CAA4-5D83-B643-BC51C42402CD [INFO] {'InstanceIds': ['i-2ze2qdtxxxxtldq']}
      FC Invoke End RequestId: 000BFA95-CAA4-5D83-B643-BC51C42402CD