Comment arrêter et démarrer mes instances à l'aide d’AWS Instance Scheduler ?

Dernière mise à jour : 12/11/2020

Je souhaite réduire mon utilisation d'Amazon Elastic Compute Cloud (Amazon EC2) en arrêtant et en démarrant mes instances à des heures prédéfinies.

Brève description

Vous pouvez utiliser l’ AWS Instance Scheduler et un modèle AWS CloudFormation automatisé pour arrêter et démarrer vos instances en fonction d'une planification. Pour plus d'informations, consultez la section Déploiement automatisé.

Important : si vous utilisez AWS Instance Scheduler pour les instances Amazon EC2 qui utilisent un Amazon Elastic Block Store (Amazon EBS) chiffré, vos instances ne démarreront pas. Pour démarrer vos instances, vous devez octroyer à AWS Instance Scheduler un rôle d'utilisateur clé avec une stratégie de clé nécessaire pour chiffrer ou déchiffrer vos volumes Amazon EBS. Vous devez également ajouter la stratégie de clé à la clé AWS Key Management Service (AWS KMS) pour permettre au rôle d'utilisateur clé d'utiliser cette clé. Pour plus d'informations, consultez la section Utilisation de stratégies de clé dans AWS KMS.

Résolution

Créer une pile AWS CloudFormation avec le modèle d’AWS Instance Scheduler

La pile déploie une fonction AWS Lambda, une table Amazon DynamoDB, un événement Amazon CloudWatch Events et des métriques personnalisées Amazon CloudWatch.

1.    Ouvrez AWS Management Console.

2.    Ouvrez AWS CloudFormation avec le modèle d’AWS Instance Scheduler. Ou passez à l'étape 1. Lancez la page Instance Scheduler Stack (Pile du planificateur d’instance), puis choisissez Launch Solution (Lancer la solution).

Remarque : le modèle est lancé en Virginie du Nord par défaut.

3.    Dans la barre de navigation, sélectionnez la région AWS dans laquelle vous souhaitez lancer votre pile avec le modèle, puis choisissez Next (Suivant).

4.    Dans Stack name (Nom de la pile), saisissez Ec2instanceScheduler.

5.    Dans Frequency (Fréquence), choisissez une fréquence en minutes pour exécuter votre planificateur (par exemple, 5 minutes).

Remarque : la fréquence correspond à la durée spécifiée pendant laquelle vous souhaitez qu’Amazon CloudWatch Events déclenche la fonction Lambda pour le planificateur d’instance AWS. Si vous avez un grand nombre d'instances, utilisez la fréquence la plus élevée possible pour éviter une limitation. Vous pouvez ajuster la propriété Frequency (Fréquence) ultérieurement si la fréquence n'est pas assez rapide pour vous.

6.    Pour Enable CloudWatch Logs (Activer CloudWatch Logs), choisissez Yes (Oui).

7.    Pour Started tags (Balises démarrées), saisissez state=started.

8.    Pour Stopped tags (Balises arrêtées), saisissez state=stopped.

9.    Sélectionnez Next (Suivant).

10.    Sur la page Options, choisissez Next (Suivant).

11.    Vérifiez vos paramètres, puis sélectionnez I acknowledge that AWS CloudFormation might create IAM resources (J'accepte qu'AWS CloudFormation crée des ressources IAM).

12.    Sélectionnez Create (Créer).

Créer une période pour démarrer des instances en fonction d'une planification

1.    Pour créer une période, connectez-vous à l'interface de ligne de commande (CLI) du planificateur d’instance, puis entrez la commande suivante :

$ scheduler-cli create-period --stack Ec2instanceScheduler --region us-west-2 --name firstdayofmonth --begintime 06:00 --endtime 07:00 --monthdays 1

Remarque : remplacez us-west-2 par votre propre région AWS. Pour créer des périodes, vous pouvez également utiliser la console DynamoDB ou des ressources personnalisées. Pour plus d'informations sur les périodes, consultez Heures de démarrage et d'arrêt.

2.    Ouvrez la console DynamoDB.

3.    Choisissez Tables, puis choisissez la table de configuration.

Remarque : le modèle d’AWS Instance Scheduler crée automatiquement deux tables DynamoDB : la table d'état et la table de configuration. La table d'états enregistre l'état des instances arrêtées et démarrées par le modèle. La table de configuration est l'endroit où vous spécifiez les périodes et faites vos planifications en fonction de vos besoins.

4.    Choisissez l'affichage Items (Éléments), puis vérifiez que la période firstdayofmonth (premier jour du mois) apparaît bien dans la table.

Créer une planification pour la période

1.    Pour créer une planification, connectez-vous à l'interface de ligne de commande du planificateur d’instance, puis exécutez la commande suivante :

$ scheduler-cli create-schedule --stack Ec2instanceScheduler --name dayone --region us-west-2 --periods firstdayofmonth --timezone UTC

2.    Ouvrez la console DynamoDB.

3.    Choisissez Tables, puis choisissez la table de configuration.

4.    Choisissez l'affichage Items (Éléments), puis vérifiez que la planification dayone (Jour 1) apparaît bien dans la table de configuration.

Baliser et tester la planification

Lorsque vous utilisez une pile AWS CloudFormation avec le planificateur d’instance, vous devez définir le paramètre Instance Scheduler Tagname (Nom de balise). La valeur par défaut de ce paramètre est Schedule (Planification). Vous pouvez utiliser le paramètre TagName (Nom de balise) dans votre pile pour rechercher la valeur de Schedule (Planification).

Remarque : le planificateur d'instance surveille les balises sur les instances. Si la clé de la balise d'instance correspond à la balise du planificateur définie, le planificateur d'instance applique la planification définie pour la valeur de la balise d'instance. Par exemple, si une balise a la clé Schedule (Planification) et que la valeur est définie sur firstdayofmonth (premier jour du mois), la planification firstdayofmonth (premier jour du mois) est appliquée à l'instance.

Dans les étapes suivantes, vous testez une planification prédéfinie qui s'exécute sur une instance arrêtée. Vous trouverez une planification en cours d’exécution prédéfinie dans la table de configuration. Le planificateur d'instance démarre l'instance lorsque vous appliquez une planification en cours d'exécution sur l'instance arrêtée.

Remarque : arrêtez l'instance que vous testez pour pouvoir tester une planification prédéfinie en cours d’exécution.

1.    Ouvrez la console Amazon EC2.

2.    Choisissez les instances arrêtées que vous souhaitez baliser.

3.    Choisissez l'affichage Tags (Balises), puis Add/Edit Tags (Ajouter/Modifier des balises).

4.    Sélectionnez Create Tag (Créer une balise).

5.    Pour Key (Clé), saisissez Schedule (Planification).

6.    Pour Value (Valeur), saisissez running (en cours d'exécution).

7.    Choisissez Save (Enregistrer).

8.    Actualisez la console Amazon EC2, puis attendez que la fonction Lambda se déclenche.

Remarque : lorsque la fonction Lambda se déclenche et s'exécute sans erreur, la valeur Instance State (État de l'instance) affiche le statut running (en cours d'exécution) en fonction de la planification que vous testez. Dans la console CloudWatch, vous pouvez vérifier Lambda metrics for invocations and errors (Métriques Lambda pour les invocations et les erreurs).

9.    Ouvrez la console DynamoDB.

10.    Choisissez Tables, puis la table d'état.

11.    Choisissez l'affichage Items (Éléments), puis assurez-vous que l'instance étiquetée démarre.

Remarque : les données d'état sont stockées dans la table d'états.

Des coûts supplémentaires peuvent vous être facturés en fonction de la fréquence et de la durée de la fonction Lambda que vous utilisez, des tables DynamoDB, ou des règles CloudWatch Events que vous créez.</p


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?