Logo

dev-resources.site

for different kinds of informations.

EC2 Spot instances : Comment simuler une fin d'instance et lancer une commande avant la terminaison

Published at
1/4/2022
Categories
aws
ec2
spot
ssm
Author
menahem
Categories
4 categories in total
aws
open
ec2
open
spot
open
ssm
open
Author
7 person written this
menahem
open
EC2 Spot instances : Comment simuler une fin d'instance et lancer une commande avant la terminaison

AWS EC2 Spot instances permet de réduire jusqu'a 90% le cout des EC2, le concept de Spot instances se base sur des instances a durée limitée et qu'AWS met à disposition par rapport au surplus de capacité présente.

EC2 Spot instances

Interruption d'instance

Avant qu'une instance se termine de manière inattendue un signal est envoyé à celle-ci 2mn avant, l'idée de ce post est de voir comment simuler un signal de terminaison et lancer une commande avant pour par exemple faire une sauvegarde des travaux effectués.

Architecture

Architecture

DĂ©tails

L'architecture est composé des éléments suivants :
1/AWS Fault Injection Simulator (FIS) qui va permettre de simuler une "terminaison" d'instance Spot

2/AWS EventBridge pour prendre en charge l'événement de terminaison et pouvoir lancer la commande via le service Run Command (3)

3/AWS Systems Manager Run Command va pouvoir lancer sur l'EC2 la commande qu'on lui aura spécifié (L'agent SSM doit être présent sur l'instance avec les bons droits IAM)

FIS - Configuration

Commençons par configurer le service FIS, en se rendant sur l'interface on sélectionne "Create Experiment Template"

FIS Home

Puis on complète la description, éventuellement on peut lui donner un nom, si un role IAM n'est pas déjà présent il faut en créer un spécifique a FIS

FIS - Description

A noter que dans IAM ne figure pas le service FIS par défaut

FIS - Role
On choisit donc un service temporaire dans la liste (EC2 par exemple) et puis une fois la policy créé avec les droits uniquement pour envoyer une interruptions aux instances Spot

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowFISExperimentRoleSpotInstanceActions",
            "Effect": "Allow",
            "Action": [
                "ec2:SendSpotInstanceInterruptions"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*"
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

On Ă©dite le "Trust relationships" pour indiquer le service fis.amazonaws.com

FIS - TR

On revient ensuite sur l'interface de configuration de FIS et on crée une nouvelle action (action type : aws:ec2:send-spot-instance-interruptions), en précisant qu'on souhaite laisser 2mn avant que l'instance soit terminée dans le champ "durationBeforeInterruption" et on lui précise la Target (celle-ci est automatiquement créée il suffit juste de la sélectionner)

FIS - Actions

Une fois enregistré on édite la target en lui précisant la/les resource(s) qu'on souhaite simuler

FIS - Targets
Ici dans ce cas on a sélectionné toutes les instances ayant le tag Name avec la valeur "Test-Spot"

On peut ensuite créer le template d'experimentation, un message va s'afficher comme quoi on a pas d'action de stop du template, dans ce cas c'est pas grave puisqu'il s'agit juste de lui envoyer un signal d'arrêt le stop se fera de lui meme :)

Par la suite on pourra le lancer via le menu déroulant des actions en sélectionnant "Start", mais pas pour l'instant car il faut auparavant configurer EventBridge

AWS EventBridge - Configuration

Pour la partie EventBridge on va lui indiquer comme pattern le service EC2 et l'événement d'interruption d'une spot instance

EB - Conf

Puis laisser tel quel la partie "event bus" et en "target" sélectionner ces paramètres

Image description

En Target : Systems Manager Run Command
Document : AWS-RunShellScript
Target key : le tag que l'instance a, qui permet de "viser" celle-ci, précédé par tag, ex. tag:Name
Target Value(s) : Valeur du tag, ex. Spot-Instance
Puis sélectionner "constant" dans les paramètres à choisir.
Indiquer la commande puis "Add" et au final "Create"

Conclusion

Une fois que les différents elements sont mis en place, on peut maintenant tester le mécanisme en lançant dans FIS l'expérimentation qui va par la suite déclencher la commande qu'on souhaite envoyer à l'instance via EventBridge, 2mn avant que celle-ci soit terminée

FIS Start

ssm Article's
30 articles in total
Favicon
The re-re-rebirth of AWS Systems Manager
Favicon
How can I enforce MFA before switching roles and using SSM login in AWS?
Favicon
EC2 instance deployment unification across AWS Organizations
Favicon
ECS Exec Usage Guide
Favicon
Gerenciamento de alta latĂŞncia com AWS CloudWatch e AWS Systems Manager
Favicon
How to — AWS Auto Stop/Start of EC2 Instances using Tags
Favicon
Use AWS StepFunctions for SSM Patching Alerts
Favicon
Port Forwarding to Amazon MQ
Favicon
NestJS Configuration Secrets Made Easy with configify
Favicon
No-ssh deployment to EC2 using ansible and AWS Systems Manager
Favicon
Automating patching with AWS Systems Manager
Favicon
[AWS] How To Install Cloud Watch Agent To EC2 Linux With SSM
Favicon
Create a Secure VPC with SSM-Managed Private EC2 Instances Using the AWS CLI
Favicon
Stop/Start RDS Instances Automatically Using System Manager for Cost Optimization
Favicon
How to debug running CodeBuild builds in AWS Session Manager
Favicon
AWS SSM Automation for Encrypting RDS Instances
Favicon
AWS Config Auto Remediation for Configuring S3 Lifecycle Rule
Favicon
A practical method for managing environment variables in microservices running on AWS ECS
Favicon
More Automation for Your AWS Resources, More Coffee Time for You!
Favicon
How to connect to an EC2 Private Instance via SSM Port Forwarding !
Favicon
Storing related secrets in Parameter Store for more efficient access
Favicon
Securely Connect to EC2 Instances Using Systems Manager (SSM)
Favicon
EC2 Spot instances : Comment simuler une fin d'instance et lancer une commande avant la terminaison
Favicon
AWS Systems Manager (SSM) Cross Region Replication
Favicon
3 Ways to Read SSM Parameters
Favicon
Connect to a Private Subnet AWS EC2 without Ingress
Favicon
Utilizando o Session Manager - AWS System Manager
Favicon
Amazon SSM Agent - Risk Of Security
Favicon
AWS SSM Agent - Connection Error
Favicon
Fetch Application Inventory using Systems Manager

Featured ones: