Passer au contenu

Comment gérer les notifications de résiliation Spot dans les tâches Fargate Spot ?

Lecture de 3 minute(s)
0

Je souhaite savoir comment gérer les notifications de résiliation Spot dans les tâches AWS Fargate Spot.

Résolution

Augmenter la valeur de stoTimeout

La valeur par défaut du paramètre stopTimeout est de 30 secondes. Augmentez la valeur de stopTimeout à un maximum de 120 secondes dans la définition de tâche afin que les conteneurs aient suffisamment de temps pour se fermer avant d'être arrêtés de force. Si vous dépassez ce quota, vous recevez le message « The stopTimeout value must not exceed 120 seconds. » s’affiche.

Mettre à jour les paramètres de définition du service

Mettez à jour les paramètres de définition du service Amazon ECS. Pour minimumHealthyPercent, saisissez le pourcentage minimum de tâches qui doivent continuer à être exécutées. Pour maximumPercent, saisissez le pourcentage maximum de tâches pouvant être exécutées au cours d'un déploiement.

Surveillez vos événements Amazon ECS pour vérifier si le planificateur trouve de nouvelles capacités lorsque des tâches sont interrompues. Si le planificateur ne trouve pas de capacités pour les nouvelles tâches, les anciennes tâches se terminent après stopTimeout.

Mettre à jour la valeur du délai de désenregistrement

Les tâches exécutées en tant que FARGATE_SPOT utilisent des groupes cibles de l'équilibreur de charge. Ces tâches restent enregistrées dans le groupe cible jusqu'à ce qu'elles atteignent l'état ARRÊTÉ. Définissez le délai de désinscription du groupe cible à moins de 2 minutes pour tenir compte de la fenêtre de résiliation Spot.

Surveiller les interruptions Spot et les échecs de placement des capacités

Pour surveiller les interruptions de Fargate Spot provoquées par des interruptions de tâches ou des échecs de placement de capacité, utilisez les règles Amazon EventBridge.

Procédez comme suit :

  1. Créez une rubrique Amazon Simple Notification Service (Amazon SNS).

  2. Définissez la règle EventBridge.

  3. Créez un modèle d'événement et choisissez les options suivantes :
    Dans la section Modèles d'événement, choisissez Événements AWS.
    Dans la section Méthode de création, pour Méthode, sélectionnez Modèles personnalisés (éditeur JSON).

  4. Ajoutez l'un des modèles suivants pour le problème que vous souhaitez surveiller.
    Interruptions Spot :

    {
      "source": ["aws.ecs"],
      "detail-type": ["ECS Task State Change"],
      "detail": {
        "stopCode": ["SpotInterruption"],
        "clusterArn": ["arn:aws:ecs:REGION:ACCOUNT:cluster/CLUSTER"]
      }
    }

    Échecs de placement des capacités :

    {
      "source": ["aws.ecs"],
      "detail-type": ["ECS Service Action"],
      "detail": {
        "eventName": ["SERVICE_TASK_PLACEMENT_FAILURE"],
        "clusterArn": ["arn:aws:ecs:REGION:ACCOUNT:cluster/CLUSTER"],
        "reason": ["RESOURCE:FARGATE"]
      }
    }

    Remarque : dans les modèles précédents, remplacez REGION par votre région AWS, ACCOUNT par votre ID de compte AWS et CLUSTER par le nom de votre cluster.

  5. Sélectionnez Suivant.

  6. Choisissez les options suivantes pour sélectionner votre cible :
    Pour Types de cibles, sélectionnez Service AWS.
    Pour Sélectionner une cible, sélectionnez SNS.
    Dans Rubrique, sélectionnez votre rubrique SNS.

  7. Sélectionnez Suivant.

  8. (Facultatif) Ajoutez une identification.

  9. Vérifiez la configuration de la règle, puis choisissez Créer une règle.

Informations connexes

Notifications de résiliation Fargate Spot

AWS OFFICIELA mis à jour il y a 5 mois