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

Date de la dernière mise à jour : 13/01/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 le planificateur d'instance AWS 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émarrent pas. Pour les démarrer, vous devez octroyer à l'AWS Instance Scheduler un rôle d'utilisateur clé avec la politique de clé nécessaire pour chiffrer ou déchiffrer vos volumes Amazon EBS. Pour plus d'informations, consultez la rubrique Utilisation des politiques IAM avec AWS KMS. Vous devez également ajouter la politique de clé à la clé AWS Key Management Service (Amazon KMS) pour permettre au rôle d'utilisateur clé d'utiliser cette clé. Pour plus d'informations, consultez la section Utilisation des politiques de clé dans AWS KMS.

Résolution

Avant de commencer, configurez l'interface de ligne de commande (CLI) du planificateur d’instance.

Créer une pile AWS CloudFormation avec le modèle du planificateur d’instance AWS

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

1.    Ouvrez AWS Management Console.

2.    Pour ouvrir AWS CloudFormation avec le modèle du planificateur d’instance AWS, 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 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 elle 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.    Enfin, 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 : pour créer des périodes, vous pouvez également utiliser la console DynamoDB ou les ressources personnalisées AWS CloudFormation. Remplacez us-west-2 par votre propre région AWS. 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 AWS Instance Scheduler crée automatiquement deux tables DynamoDB : la table d'états 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

Pour suivre une instance afin de la tester, appliquez-lui une balise personnalisée.

Remarque : arrêtez l'instance que vous testez pour pouvoir tester une planification prédéfinie (appelée running (en cours d'exécution), par exemple).

1.    Ouvrez la console Amazon EC2.

2.    Choisissez Running Instances (Instances en cours d'exécution), puis l'instance 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.    Sélectionnez 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 le vue Items (Éléments), puis vérifiez 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, ainsi que des tables DynamoDB ou des règles AWS CloudWatch Events que vous créez.


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

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?