Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tutoriel : tester les interruptions des instances Spot à l'aide de AWS FIS
Les instances Spot utilisent la EC2 capacité inutilisée disponible, pour bénéficier d'une réduction allant jusqu'à 90 % par rapport à la tarification à la demande. Amazon EC2 peut toutefois interrompre vos instances Spot lorsqu'il a besoin de récupérer leur capacité. Lorsque vous utilisez des instances Spot, vous devez être prêt à faire face à d'éventuelles interruptions. Pour plus d'informations, consultez la section Interruptions des instances Spot dans le guide de EC2 l'utilisateur Amazon.
Vous pouvez utiliser … AWS Service d'injection de défauts (AWS FIS) pour tester la façon dont vos applications gèrent une interruption d'instance Spot. Utilisez ce didacticiel pour créer un modèle d'expérience qui utilise AWS FISaws:ec2:send-spot-instance-interruptions
action visant à interrompre l'une de vos instances Spot.
Sinon, pour lancer l'expérience à l'aide de la EC2 console Amazon, consultez la section Initiate a Spot Instance interruption dans le guide de EC2 l'utilisateur Amazon.
Prérequis
Avant de pouvoir utiliser AWS FISpour interrompre une instance Spot, remplissez les conditions préalables suivantes.
1. créer un rôle IAM ;
Créez un rôle et associez une politique qui permet AWS FISpour effectuer l'aws:ec2:send-spot-instance-interruptions
action en votre nom. Pour de plus amples informations, veuillez consulter Rôles IAM pour les expériences AWS FIS.
2. Vérifiez l'accès à AWS FIS
Assurez-vous d'avoir accès à AWS FIS. Pour plus d’informations, consultez .AWS FISexemples de politiques.
3. (Facultatif) Créez une demande d'instance Spot
Si vous souhaitez utiliser une nouvelle instance Spot pour cette expérience, utilisez la commande run-instances pour demander une instance Spot. Par défaut, les instances Spot interrompues sont résiliées. Si vous définissez le comportement d'interruption surstop
, vous devez également définir le type surpersistent
. Pour ce didacticiel, ne définissez pas le comportement d'interruption surhibernate
, car le processus d'hibernation commence immédiatement.
aws ec2 run-instances \ --image-id
ami-0ab193018fEXAMPLE
\ --instance-type "t2.micro
" \ --count 1 \ --subnet-idsubnet-1234567890abcdef0
\ --security-group-idssg-111222333444aaab
\ --instance-market-options file://spot-options.json
\ --query Instances[*].InstanceId
Voici un exemple du fichier spot-options.json
.
{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent", "InstanceInterruptionBehavior": "stop" } }
L'--query
option de l'exemple de commande fait en sorte que la commande renvoie uniquement l'ID d'instance de l'instance Spot. Voici un exemple de sortie.
[ "i-0abcdef1234567890" ]
4. Ajoutez un tag pour que AWS FISpeut identifier l'instance Spot cible
Utilisez la commande create-tags pour ajouter le tag Name=interruptMe vers votre instance Spot cible.
aws ec2 create-tags \ --resources
i-0abcdef1234567890
\ --tags Key=Name,Value=interruptMe
Étape 1 : Création d'un modèle d'expérience
Créez le modèle d'expérience à l'aide du AWS FISconsole. Dans le modèle, vous spécifiez l'action qui sera exécutée. L'action interrompt l'instance Spot avec la balise spécifiée. Si le tag est associé à plusieurs instances Spot, AWS FISchoisit l'un d'entre eux au hasard.
Pour créer un modèle d'expérience
Ouvrez le fichier AWS FISconsole à https://console.aws.amazon.com/fis/
. -
Dans le volet de navigation, sélectionnez Modèles d'expériences.
-
Choisissez Créer un modèle d'expérience.
-
Dans Description et nom, entrez une description et un nom pour le modèle.
-
Pour Actions, procédez comme suit :
-
Choisissez Add action.
-
Entrez le nom de l'action. Par exemple, saisissez
interruptSpotInstance
. -
Pour Type d'action, choisissez aws:ec2 :. send-spot-instance-interruptions
-
Pour Target, conservez la cible qui AWS FIScrée pour vous.
-
Pour Paramètres d'action, Durée avant interruption, spécifiez 2 minutes (PT2M).
-
Choisissez Save (Enregistrer).
-
-
Pour Targets (Cibles), procédez comme suit :
-
Choisissez Modifier pour la cible qui AWS FIScréé automatiquement pour vous à l'étape précédente.
-
Remplacez le nom par défaut par un nom plus descriptif. Par exemple, saisissez
oneSpotInstance
. -
Vérifiez que le type de ressource est aws:ec2:spot-instance.
-
Pour Méthode cible, sélectionnez Balises de ressources, filtres et paramètres.
-
Pour les balises de ressource, choisissez Ajouter une nouvelle balise, puis entrez la clé et la valeur de la balise. Utilisez la balise que vous avez ajoutée à l'instance Spot pour l'interrompre, comme décrit dans les conditions préalables de ce didacticiel.
-
Pour les filtres de ressources, choisissez Ajouter un nouveau filtre et entrez
State.Name
le chemin etrunning
la valeur. -
Pour le mode de sélection, choisissez Count. Dans le champ Nombre de ressources, entrez
1
. -
Choisissez Save (Enregistrer).
-
-
Pour l'accès aux services, choisissez Utiliser un IAM rôle existant, puis choisissez le IAM rôle que vous avez créé, comme décrit dans les conditions préalables de ce didacticiel. Si votre rôle n'est pas affiché, vérifiez qu'il possède la relation de confiance requise. Pour de plus amples informations, veuillez consulter Rôles IAM pour les expériences AWS FIS.
-
(Facultatif) Pour les balises, choisissez Ajouter une nouvelle balise et spécifiez une clé de balise et une valeur de balise. Les balises que vous ajoutez sont appliquées à votre modèle d'expérience, et non aux expériences exécutées à l'aide du modèle.
-
Choisissez Créer un modèle d'expérience. Lorsque vous êtes invité à confirmer, entrez
create
puis choisissez Créer un modèle d'expérience.
(Facultatif) Pour afficher le modèle d'expérience JSON
Cliquez sur l'onglet Export (Exporter). Voici un exemple de la procédure JSON créée par la console précédente.
{ "description": "Test Spot Instance interruptions", "targets": { "oneSpotInstance": { "resourceType": "aws:ec2:spot-instance", "resourceTags": { "Name": "interruptMe" }, "filters": [ { "path": "State.Name", "values": [ "running" ] } ], "selectionMode": "COUNT(1)" } }, "actions": { "interruptSpotInstance": { "actionId": "aws:ec2:send-spot-instance-interruptions", "parameters": { "durationBeforeInterruption": "PT2M" }, "targets": { "SpotInstances": "oneSpotInstance" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::
123456789012
:role/AllowFISSpotInterruptionActions
", "tags": { "Name": "my-template" } }
Étape 2 : démarrer l'expérience
Lorsque vous avez fini de créer votre modèle de test, vous pouvez l'utiliser pour démarrer un test.
Pour démarrer une expérience
-
Vous devriez être sur la page de détails du modèle d'expérience que vous venez de créer. Sinon, choisissez Modèles d'expérience, puis sélectionnez l'ID du modèle d'expérience pour ouvrir la page de détails.
-
Sélectionnez Start experiment (Démarrer une expérience).
-
(Facultatif) Pour ajouter une balise à votre expérience, choisissez Ajouter une nouvelle balise et entrez une clé de balise et une valeur de balise.
-
Sélectionnez Start experiment (Démarrer une expérience). Lorsque vous êtes invité à confirmer, entrez
start
et choisissez Démarrer l'expérience.
Étape 3 : suivre la progression de l'expérience
Vous pouvez suivre la progression d'une expérience en cours jusqu'à ce qu'elle soit terminée, arrêtée ou échouée.
Pour suivre la progression d'une expérience
-
Vous devriez être sur la page de détails de l'expérience que vous venez de commencer. Sinon, choisissez Expériences, puis sélectionnez l'ID de l'expérience pour ouvrir la page de détails.
-
Pour voir l'état de l'expérience, cochez la case État dans le volet Détails. Pour plus d'informations, consultez la section États de l'expérience.
-
Lorsque l'état de l'expérience est en cours d'exécution, passez à l'étape suivante.
Étape 4 : vérifier le résultat de l'expérience
Lorsque l'action de cette expérience est terminée, les événements suivants se produisent :
-
L'instance Spot cible reçoit une recommandation de rééquilibrage d'instance.
-
Un avis d'interruption de l'instance Spot est émis deux minutes avant qu'Amazon ne EC2 mette fin ou arrête votre instance.
-
Au bout de deux minutes, l'instance Spot est résiliée ou arrêtée.
-
Une instance Spot qui a été arrêtée par AWS FISreste arrêté jusqu'à ce que vous le redémarriez.
Pour vérifier que l'instance a été interrompue par l'expérience
-
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Depuis le panneau de navigation, ouvrez Spot Requests (Demandes Spot) et Instances dans différents onglets ou fenêtres de navigateur.
-
Pour Spot Requests (Demandes Spot), sélectionnez la demande d'instance Spot. L’état initial est
fulfilled
. Une fois l'expérience terminée, le statut change comme suit :terminate
- Le statut passe àinstance-terminated-by-experiment
.stop
- Le statut passe àmarked-for-stop-by-experiment
et ensuiteinstance-stopped-by-experiment
.
-
Pour Instances, sélectionnez l’instance Spot. L’état initial est
Running
. Deux minutes après avoir reçu l'avis d'interruption de l'instance Spot, le statut change comme suit :stop
- Le statut passe àStopping
et ensuiteStopped
.terminate
- Le statut passe àShutting-down
et ensuiteTerminated
.
Étape 5 : nettoyer
Si vous avez créé l'instance Spot de test pour cette expérience avec un comportement d'interruption de stop
et que vous n'en avez plus besoin, vous pouvez annuler la demande d'instance Spot et mettre fin à l'instance Spot.
Pour annuler la demande et mettre fin à l'instance à l'aide du AWS CLI
-
Utilisez la cancel-spot-instance-requestscommande pour annuler la demande d'instance Spot.
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids
sir-ksie869j
-
Utilisez la commande terminate-instances pour mettre fin à l'instance.
aws ec2 terminate-instances --instance-ids
i-0abcdef1234567890
Si vous n'avez plus besoin du modèle d'expérience, vous pouvez le supprimer.
Pour supprimer un modèle d'expérience à l'aide du AWS FISconsole
Ouvrez le fichier AWS FISconsole à https://console.aws.amazon.com/fis/
. -
Dans le volet de navigation, sélectionnez Modèles d'expériences.
-
Sélectionnez le modèle d'expérience, puis choisissez Actions, Supprimer le modèle d'expérience.
-
Lorsque vous êtes invité à confirmer, entrez
delete
puis choisissez Supprimer le modèle d'expérience.