Tous les produits
Search
Centre de documentation

Elastic Compute Service:Détecter et gérer les interruptions d'instances préemptibles

Dernière mise à jour :Sep 22, 2026

Détectez les interruptions d'instances préemptibles via le SDK ECS, les métadonnées de l'instance ou Cloud Monitor, et réagissez par un arrêt gracieux ou la persistance des données.

Détecter les interruptions

Interroger à l'aide du SDK ECS

Appelez l'opération DescribeInstances pour interroger les détails de l'instance. Vérifiez le champ OperationLocks renvoyé afin de déterminer si l'instance est passée à l'état pending release.

  • Si la réponse est vide, l'instance est toujours disponible.

  • Si LockReason est défini sur Recycling, l'instance préemptible est interrompue et en attente de libération.

Exemple d'utilisation du SDK

Prérequis

  1. Créer une AccessKey

    Un compte Alibaba Cloud dispose de toutes les autorisations sur l'ensemble des ressources. Si sa AccessKey est compromise, vos ressources sont exposées à un risque élevé. Utilisez plutôt une AccessKey associée à un utilisateur RAM disposant des autorisations minimales requises. Consultez la rubrique Créer une AccessKey.

  2. Accorder des autorisations ECS à l'utilisateur RAM

    Accordez à l'utilisateur RAM les autorisations nécessaires pour gérer les ressources ECS. L'exemple de code requiert l'autorisation d'interroger les informations sur les instances. Accordez la stratégie système suivante :

    Cloud Products

    Permission granted

    Elastic Compute Service (ECS)

    Stratégie système : AliyunECSFullAccess

  3. Configurer les identifiants d'accès

    L'exemple de code lit la AccessKey depuis les variables d'environnement du système pour authentifier les requêtes. Consultez la rubrique Configurer les variables d'environnement sous Linux, macOS et Windows.

  4. Installer le SDK ECS

    Obtenez le SDK ECS. Cet exemple utilise Maven. Pour d'autres méthodes d'installation, consultez Installer le SDK Java ECS.

    Ajoutez la dépendance Maven suivante :

    <dependencies>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>ecs20140526</artifactId>
            <version>5.3.0</version>
        </dependency>
    </dependencies>

Initialiser le client

Les SDK Alibaba Cloud prennent en charge plusieurs types d'identifiants pour l'initialisation du client, tels qu'une AccessKey et un jeton STS. Pour d'autres options, consultez la rubrique Gérer les identifiants d'accès. Cet exemple initialise le client avec une AccessKey.

import com.aliyun.ecs20140526.Client;
import com.aliyun.teaopenapi.models.Config;

public class Sample {
    private static Client createClient() throws Exception {
        Config config = new Config()
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // Endpoint reference: https://api.alibabacloud.com/product/Ecs
                .setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }
}

Construire l'objet de requête

Avant de construire la requête, consultez la documentation de l'API pour obtenir des détails sur les paramètres.

// Build the request object
DescribeInstancesRequest request = new DescribeInstancesRequest().setRegionId("cn-hangzhou");

Effectuer l'appel

Lors de l'appel aux opérations OpenAPI, vous pouvez configurer des paramètres d'exécution tels que le délai d'expiration et les paramètres de proxy. Consultez la rubrique Configuration avancée.

// Set runtime options
RuntimeOptions runtime = new RuntimeOptions();
// Call the DescribeInstances operation
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());

Gérer les exceptions

Le SDK Java classe les exceptions en deux catégories : TeaUnretryableException et TeaException :

  • TeaUnretryableException : généralement causée par des problèmes réseau après avoir atteint le nombre maximal de tentatives.

  • TeaException : principalement causée par des erreurs liées à la logique métier.

Mettez en œuvre une gestion appropriée des exceptions, telle que la propagation des exceptions, la journalisation des erreurs ou la tentative de récupération, afin de garantir la robustesse du système.

Exemple complet

import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.alibaba.fastjson.JSONArray;

import java.util.Arrays;

public class Sample {
    private static Client createClient() throws Exception {
        Config config = new Config()
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // Endpoint reference: https://api.alibabacloud.com/product/Ecs
                .setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }

    public static void main(String[] args) {
        try {
            Client client = Sample.createClient();
            // Build the request object
            // Specify one or more ECS instance IDs to query.
            JSONArray instanceIds = new JSONArray();
            instanceIds.addAll(Arrays.asList("i-bp145cvd0exyqj****","i-bp1gehfgfrrk4lah****"));
            DescribeInstancesRequest request = new DescribeInstancesRequest()
                    .setRegionId("cn-hangzhou")
                    .setInstanceIds(instanceIds.toJSONString());
            // Set runtime options
            RuntimeOptions runtime = new RuntimeOptions();
            while (!instanceIds.isEmpty()) {
              // Call the DescribeInstances operation
              DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
              // Get instance details from the response.
              DescribeInstancesResponseBody responseBody = response.getBody();
              DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstances instanceList = responseBody.getInstances();
              // Check instance details and evaluate lockReason values.
              if (instanceList != null && instanceList.getInstance()!= null && !instanceList.getInstance().isEmpty()) {
                  for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : instanceList.getInstance()) {
                      // Print the queried instance ID and zone ID.
                      System.out.println("result:instance:" + instance.getInstanceId() + ",az:" + instance.getZoneId());
                      if (instance.getOperationLocks() != null ) {
                          DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstanceOperationLocks operationLocks  = instance.getOperationLocks();
                          if(operationLocks.getLockReason()!=null && !operationLocks.getLockReason().isEmpty()){
                              for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstanceOperationLocksLockReason lockReason : operationLocks.getLockReason()) {
                                  // If the instance is locked, print its ID and lock reason.
                                  System.out.println("instance:" + instance.getInstanceId() + "-->lockReason:" + lockReason.getLockReason() + ",vmStatus:" + instance.getStatus());
                                  if ("Recycling".equals(lockReason.getLockReason())) {
                                      // Print the ID of the instance scheduled for immediate release.
                                      System.out.println("spot instance will be recycled immediately, instance id:" + instance.getInstanceId());
                                      instanceIds.remove(instance.getInstanceId());
                                  }
                              }
                          }

                      }
                  }
                  // If no spot instance is locked yet, query again every two minutes.
                  System.out.print("try describeInstances again later ...");
                  Thread.sleep(2 * 60 * 1000);
              } else {
                  break;
              }
            }
        } catch (TeaUnretryableException ue) {
            // Print only for demonstration. Never ignore exceptions in production code.
            ue.printStackTrace();
            // Print error message
            System.out.println(ue.getMessage());
            // Print request details for debugging
            System.out.println(ue.getLastRequest());
        } catch (TeaException e) {
            // Print only for demonstration. Never ignore exceptions in production code.
            e.printStackTrace();
            // Print error code
            System.out.println(e.getCode());
            // Print error message (includes RequestId)
            System.out.println(e.getMessage());
            // Print detailed server-side error content
            System.out.println(e.getData());
        } catch (Exception e) {
            // Print only for demonstration. Never ignore exceptions in production code.
            e.printStackTrace();
        }
    }
}

Résultats renvoyés

Lorsqu'une libération est déclenchée, la sortie est la suivante :

result:instance:i-bp1i9c3qiv1qs6nc****,az:cn-hangzhou-i
instance:i-bp1i9c3qiv1qs6nc****-->lockReason:Recycling,vmStatus:Stopped
spot instance will be recycled immediately, instance id:i-bp1i9c3qiv1qs6nc****

Interroger depuis l'instance avec les métadonnées

Accédez au service de métadonnées de l'instance depuis une instance ECS pour vérifier quand une instance préemptible sera arrêtée. Consultez la rubrique Métadonnées de l'instance.

Chemin d'accès aux métadonnées pour l'heure d'arrêt d'une instance préemptible : instance/spot/termination-time

Résultats :

  • Si la réponse est 404, l'instance est toujours disponible.

  • Si la réponse renvoie un horodatage UTC tel que 2015-01-05T18:02:00Z, l'instance sera récupérée à ce moment-là.

Exemples :

Instance Linux

# Get a metadata service token for authentication
TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<metadata service token TTL>"`
# Check whether the spot instance is scheduled for interruption
curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/instance/spot/termination-time

Instance Windows

# Get a metadata service token for authentication
$token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<metadata service token TTL>"} -Method PUT -Uri http://100.100.100.200/latest/api/token
# Check whether the spot instance is scheduled for interruption
Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/instance/spot/termination-time

Interroger avec le SDK Cloud Monitor

Les événements ECS sont synchronisés avec Cloud Monitor. Appelez l'opération DescribeSystemEventAttribute pour interroger les événements d'interruption d'instances préemptibles (Instance:PreemptibleInstanceInterruption). Si le champ content contient delete, l'instance préemptible est programmée pour être récupérée.

Exemple d'utilisation du SDK

Prérequis

  1. Créer une AccessKey

    Un compte Alibaba Cloud dispose de toutes les autorisations sur l'ensemble des ressources. Si sa AccessKey est compromise, vos ressources sont exposées à un risque élevé. Utilisez plutôt une AccessKey associée à un utilisateur RAM disposant des autorisations minimales requises. Consultez la rubrique Créer une AccessKey.

  2. Accorder des autorisations Cloud Monitor à l'utilisateur RAM

    Accordez à l'utilisateur RAM les autorisations nécessaires pour gérer Cloud Monitor (CMS). L'exemple de code requiert l'autorisation d'interroger les événements système. Accordez la stratégie suivante :

    Cloud products

    Permission granted

    Cloud Monitor (CMS)

    AliyunCloudMonitorFullAccess

  3. Configurer les identifiants d'accès

    L'exemple de code lit la AccessKey depuis les variables d'environnement du système pour authentifier les requêtes. Consultez la rubrique Configurer les variables d'environnement sous Linux, macOS et Windows.

  4. Installer le SDK CMS

    Obtenez le SDK CMS. Cet exemple utilise Maven. Pour d'autres méthodes d'installation, consultez Installer le SDK Java CMS.

    Ajoutez la dépendance Maven suivante :

    <dependencies>
        <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>cms20190101</artifactId>
          <version>8.1.3</version>
        </dependency>
    </dependencies>

Initialiser le client

Les SDK Alibaba Cloud prennent en charge plusieurs types d'identifiants pour l'initialisation du client, tels qu'une AccessKey et un jeton STS. Pour d'autres options, consultez la rubrique Gérer les identifiants d'accès. Cet exemple initialise le client avec une AccessKey.

import com.aliyun.cms20190101.Client;
import com.aliyun.teaopenapi.models.Config;

public class Sample {
    private static Client createClient() throws Exception {
        Config config = new Config()
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // Endpoint reference: https://api.alibabacloud.com/product/Ecs
                .setEndpoint("metrics.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }
}

Construire l'objet de requête

Configurez les paramètres de requête pour les événements d'interruption d'instances préemptibles. Pour les autres paramètres, consultez la rubrique DescribeSystemEventAttribute.

API

Parameter

Example value

DescribeSystemEventAttribute

Product

Service abbreviation: ECS

EventType

Event type: StatusNotification

Name

Event name: Instance:PreemptibleInstanceInterruption

// Build the request object
DescribeSystemEventAttributeRequest request = new DescribeSystemEventAttributeRequest()
    .setProduct("ECS")
    .setEventType("StatusNotification")
    .setName("Instance:PreemptibleInstanceInterruption");

Effectuer l'appel

Lors de l'appel aux opérations OpenAPI, vous pouvez configurer des paramètres d'exécution tels que le délai d'expiration et les paramètres de proxy. Consultez la rubrique Configuration avancée.

// Set runtime options
RuntimeOptions runtime = new RuntimeOptions();
// Call the DescribeSystemEventAttribute operation
DescribeSystemEventAttributeResponse response = client.describeSystemEventAttributeWithOptions(request, runtime);
System.out.println(response.body.toMap());

Gérer les exceptions

Le SDK Java classe les exceptions en deux catégories : TeaUnretryableException et TeaException :

  • TeaUnretryableException : généralement causée par des problèmes réseau après avoir atteint le nombre maximal de tentatives.

  • TeaException : principalement causée par des erreurs liées à la logique métier.

Mettez en œuvre une gestion appropriée des exceptions, telle que la propagation des exceptions, la journalisation des erreurs ou la tentative de récupération, afin de garantir la robustesse du système.

Exemple complet

import com.aliyun.cms20190101.Client;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.cms20190101.models.DescribeSystemEventAttributeRequest;
import com.aliyun.cms20190101.models.DescribeSystemEventAttributeResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

public class Sample {
    private static Client createClient() throws Exception {
        Config config = new Config()
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // Required. Ensure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                // Endpoint reference: https://api.alibabacloud.com/product/Ecs
                .setEndpoint("metrics.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }

    public static void main(String[] args) {
        try {
            Client client = Sample.createClient();
            // Build the request object
            DescribeSystemEventAttributeRequest request = new DescribeSystemEventAttributeRequest()
                .setProduct("ECS")
                .setEventType("StatusNotification")
                .setName("Instance:PreemptibleInstanceInterruption");
            // Set runtime options
            RuntimeOptions runtime = new RuntimeOptions();
            // Call the DescribeSystemEventAttribute operation
            DescribeSystemEventAttributeResponse response = client.describeSystemEventAttributeWithOptions(request, runtime);
            System.out.println(response.body.toMap());
        } catch (TeaUnretryableException ue) {
            // Print only for demonstration. Never ignore exceptions in production code.
            ue.printStackTrace();
            // Print error message
            System.out.println(ue.getMessage());
            // Print request details for debugging
            System.out.println(ue.getLastRequest());
        } catch (TeaException e) {
            // Print only for demonstration. Never ignore exceptions in production code.
            e.printStackTrace();
            // Print error code
            System.out.println(e.getCode());
            // Print error message (includes RequestId)
            System.out.println(e.getMessage());
            // Print detailed server-side error content
            System.out.println(e.getData());
        } catch (Exception e) {
            // Print only for demonstration. Never ignore exceptions in production code.
            e.printStackTrace();
        }
    }
}

Résultat

Interprétez la réponse pour identifier les événements d'interruption d'instances préemptibles.

Notification d'événement au format JSON :

{
  "ver": "1.0",
  "id": "2256A988-0B26-4E2B-820A-8A********E5",
  "product": "ECS",
  "resourceId": "acs:ecs:cn-hangzhou:169070********30:instance/i-bp1ecr********5go2go",
  "level": "INFO",
  "name": "Instance:PreemptibleInstanceInterruption",
  "userId": "169070********30",
  "eventTime": "20190409T121826.922+0800",
  "regionId": "cn-hangzhou",
  "content": {
    "instanceId": "i-bp1ecr********5go2go",  
    "action": "delete"                       
  }
}

Le champ content est décrit ci-dessous. Pour plus de détails sur les paramètres, consultez la rubrique DescribeSystemEventAttribute.

Field

Description

Example value

instanceId

L'ID de l'instance préemptible.

i-bp1ecr****5go2go

action

L'événement d'opération. Une valeur delete indique que l'instance est interrompue et sera récupérée de force.

delete

S'abonner aux événements Cloud Monitor

Abonnez-vous aux événements Cloud Monitor pour surveiller les interruptions d'instances préemptibles en temps réel. Les notifications peuvent être envoyées via des canaux tels que les SMS, les e-mails, Function Compute, Simple Message Queue ou un webhook.

Flux de travail

image

Procédure

  1. Préparer le canal de réception

    Lightweight Message Queue

    1. Connectez-vous à la console Simple Message Queue (anciennement MNS).

    2. Dans le volet de navigation de gauche, sélectionnez Queue Model > Queues.

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

    4. Sur la page Queues, cliquez sur Create Queue.

    5. Dans le panneau Create Queue, configurez les paramètres suivants et cliquez sur OK :

      • Name : le nom de la file d'attente.

      • Maximum Message Length : la longueur maximale du message envoyé à la file d'attente.

      • Long Polling Period : la durée maximale pendant laquelle les requêtes de long polling sont maintenues après l'appel de l'opération ReceiveMessage.

      • Visibility Timeout Period : la durée pendant laquelle un message reste dans l'état Inactive après avoir été reçu de la file d'attente.

      • Message Retention Period : la durée maximale pendant laquelle un message existe dans la file d'attente. Après la période de rétention spécifiée, le message est supprimé, qu'il ait été reçu ou non.

      • Message Delay Period : la période après laquelle tous les messages envoyés à la file d'attente sont consommés.

      • Enable Logging Feature : spécifie s'il faut activer la fonctionnalité de journalisation.

      Une fois la file d'attente créée, elle s'affiche sur la page Queues.

    Webhook

    Important

    Déployez le service webhook sur un serveur accessible depuis Internet. Assurez-vous que le trafic entrant est autorisé sur le port de réponse.

    Exemple de code Java :

    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class WebhookController {
        @PostMapping("/callback")
        public ResponseEntity<String> receiveWebhook(@RequestBody String payload) {
            // Process the payload, such as logging or executing business logic
            System.out.println("Received webhook payload: " + payload);
            // Return a success response
            return ResponseEntity.ok("Webhook received");
        }
    }
  2. Créer une politique d'abonnement

    1. Connectez-vous à la console Cloud Monitor.

    2. Dans le volet de navigation de gauche, sélectionnez Event Hub > Event Subscriptions.

    3. Sur l'onglet Subscription Policies, cliquez sur Create Subscription Policy.

    4. Sur la page Create Subscription Policy, configurez les paramètres de la politique.

      Cet exemple couvre uniquement les paramètres pertinents pour les événements d'interruption d'instances préemptibles. Pour tous les paramètres, consultez la rubrique Gérer les abonnements aux événements (recommandé).

      • Basic Information : saisissez un Name et une Description pour la politique d'abonnement.

      • Alert Subscription :

        • Subscription Type : sélectionnez System Events.

        • Subscription Scope :

        • Service : sélectionnez ECS.

        • Event Type : sélectionnez Status Notification.

        • Event Name : sélectionnez Spot Instance Interruption Notification.

        • Event Severity : sélectionnez Warning.

        • Application Groups, Event Content et Event Resource : laissez ces paramètres vides pour vous abonner à tous les événements système ECS nommés Spot Instance Interruption Notification dans tous les groupes d'applications de votre compte.

      • Noise Reduction : utilisez la valeur par défaut.

      • Notification : The Custom Notification Method utilise la méthode par défaut.

      • Push and Integration : cliquez sur Add Channel. Dans la fenêtre contextuelle, cliquez sur Add Channel, sélectionnez le canal préparé à l'étape 1 comme Target Type et remplissez les champs restants. Pour plus de détails sur les canaux de push, consultez la rubrique Gérer les canaux de push.

  3. Simuler un événement d'interruption

    Les interruptions d'instances préemptibles étant passives, il est difficile de déboguer le code de gestion des interruptions. Utilisez la fonctionnalité Debug Event Subscription pour simuler un événement d'interruption d'instance préemptible.

    1. Sur l'onglet Subscription Policies, cliquez sur Debug Event Subscription.

    2. Dans le panneau Create Event Debug, définissez Service sur ECS et Name sur Spot Instance Interruption Notification.

      Le système génère une charge utile de débogage au format JSON. Remplacez les espaces réservés liés aux ressources par les valeurs réelles de l'instance préemptible à simuler.

      • Remplacez Alibaba Cloud account UID par l'UID de votre compte Alibaba Cloud.

      • Remplacez <resource-id> et <instanceId> par l'ID de l'instance préemptible.

      • Remplacez <region ID> par l'ID de la région de l'instance préemptible.

        {
            "product": "ECS",
            "resourceId": "acs:ecs:cn-shanghai:Alibaba Cloud account UID:instance/<resource-id>",
            "level": "WARN",
            "instanceName": "instanceName",
            "regionId": "<region ID>",
            "groupId": "0",
            "name": "Instance:PreemptibleInstanceInterruption",
            "content": {
                "instanceId": "i-2zeg014dfo4y892z***",
                "instanceName": "wor***b73",
                "action": "delete"
            },
            "status": "Normal"
        }
    3. Cliquez sur OK.

      Le système affiche le message The operation is successful. et envoie une notification d'alerte de test basée sur votre politique d'abonnement.

  4. Recevoir et afficher les notifications

    Lightweight Message Queue

    1. Connectez-vous à la console Simple Message Queue (anciennement MNS). Dans le volet de navigation de gauche, cliquez sur Queues.

    2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Queues, recherchez votre file d'attente cible et cliquez sur Action > Send Messages.

    3. Facultatif : Sur la page Send/Receive Messages Quick Experience, cliquez sur Edit Parameters of Receiving Messages. Dans le panneau Edit Parameters of Receiving Messages, définissez Receive Times et Polling Period, puis cliquez sur OK.

    4. Sur la page Queue Send/Receive Messages Quick Experience, cliquez sur Receive Message. La liste des messages apparaît dans la section Received Messages.

    5. Facultatif : Dans la liste des messages, recherchez votre message cible, cliquez sur Details dans la colonne Actions et affichez le contenu du message dans la boîte de dialogue Message Details.

    Webhook

    Vous pouvez consulter les journaux d'invocation et le contenu des notifications dans votre application webhook déployée.

Répondre aux interruptions

Votre stratégie de réponse dépend de votre scénario métier. Testez votre application pour vous assurer qu'elle peut gérer gracieusement les interruptions d'instances préemptibles. Envisagez les approches suivantes :

  • Gestion gracieuse des interruptions

    Réagissez rapidement aux signaux d'interruption en enregistrant la progression des tâches, en nettoyant les ressources et en terminant l'exécution des tâches.

  • Persistance des données et points de contrôle

    Enregistrez périodiquement la progression des tâches et les résultats intermédiaires dans un stockage persistant, tel que des fichiers locaux ou des bases de données, afin de préserver les données métier critiques. Consultez la rubrique Conservation et récupération des données pour les instances préemptibles.

  • Tester la réussite de l'intégration

    Déclenchez un événement de test dans Cloud Monitor pour vérifier que votre programme répond comme prévu. Consultez la rubrique Gérer les événements d'interruption avec SMQ.