Dans la vidéo de gauche, Rendy explique comment
arrêter et démarrer une instance EC2 avec AWS Data Pipeline

 

Dans la vidéo de droite, Rendy explique le processus de
création d'un rôle AWS Data Pipeline

CreatingDataPipeline_Thumbnail
StopEC2DataPipeline_Thumbnail

L'exécution de mes instances Amazon EC2 n'est pas nécessaire à certains moments, tels qu'en fin de semaine et la nuit. Quelle est la marche à suivre pour arrêter et démarrer mes instances Amazon EC2 selon un calendrier spécifique sans les mettre hors service ?

Je recherche un moyen efficace d'arrêter et de démarrer mes instances Amazon EC2 selon un calendrier spécifique. Des scripts Powershell et de ligne de commande AWS permettent d'atteindre cet objectif, mais les scripts sont sujets à erreur, nécessitent la gestion de clés d'accès et génèrent des dépendances externes que je préférerais éviter.

AWS Data Pipeline est le service le plus adapté à cette tâche. Data Pipeline utilise les technologies AWS et peut être configuré pour exécuter des commandes de ligne de commande AWS selon un calendrier prédéfini, sans dépendances externes. Data Pipeline enregistre des journaux dans S3 et s'exécute dans le cadre d'un rôle IAM, ce qui évite d'avoir à gérer des clés. Il est également très rentable. Par exemple, l'offre gratuite de Data Pipeline permet d'arrêter et de démarrer les instances une fois par jour. Pour de plus amples informations, consultez la tarification d'AWS Data Pipeline.

Remarque
Une instance Amazon EC2 t1.micro est lancée en tant qu'environnement hôte pour l'exécution d'un pipeline de données. Les instances EC2 lancées dans ce contexte sont exécutées avec un délai d'expiration par défaut de 50 minutes. Toutes les ressources utilisées pour héberger l'exécution d'un pipeline de données sont facturées à votre compte. L'exécution de pipelines pour arrêter et redémarrer une instance EC2 pendant 100 minutes ou moins utilise la même quantité de ressources que l'exécution continue d'une instance EC2 t1.micro. Pour vous assurer que la méthode décrite dans cet article ne consomme pas plus de ressources qu'elle n'en conserve, arrêtez et redémarrez une ou plusieurs instances EC2 t1.micro ou plus volumineuses pendant plus de 100 minutes (50 minutes pour l'arrêt et 50 minutes pour le démarrage).

Data Pipeline nécessite la création d'une stratégie gérée personnalisée pour le rôle DataPipelineDefaultResourceRole si la stratégie par défaut associée à ce rôle est la stratégie gérée AWS AmazonEC2RoleforDataPipelineRole, car celle-ci est en lecture seule. Si la stratégie associée au rôle DataPipelineDefaultResourceRole n'est pas une stratégie gérée AWS, vous n'avez pas besoin de créer une stratégie gérée personnalisée. Au lieu de cela, vous pouvez modifier la stratégie assignée au rôle DataPipelineDefaultResourceRole. Pour créer une stratégie personnalisée pour le rôle DataPipelineDefaultResourceRole, procédez comme suit :

  1. Dans la section Security and Identity de la console AWS Management Console, sélectionnez Identity & Access Management (IAM) pour ouvrir le tableau de bord Identity and Access Management.
  2. Sélectionnez Policies.
  3. Sélectionnez Create Policy pour ouvrir la page Create Policy.
  4. Sélectionnez l'option Create Your Own Policy.
  5. Saisissez le nom de stratégie à associer au rôle DataPipelineDefaultResourceRole (Strategie_EC2_DataPipelineDefaultResourceRole, par exemple).
  6. Saisissez une description pour cette stratégie (« Stratégie associée au rôle DataPipelineDefaultResourceRole lors de l'arrêt et du redémarrage des instances EC2 avec Data Pipeline », par exemple).
  7. Saisissez les informations suivantes dans la section Policy Document de la nouvelle stratégie :
    {
         "Version":"2012-10-17",
         "Statement": [
              {
                   "Effect":"Allow",
                   "Action": [
                        "s3:*",
                        "ec2:Describe*",
                        "ec2:Start*",
                        "ec2:RunInstances",
                        "ec2:Stop*",
                        "datapipeline:*",
                        "cloudwatch:*"
                   ],
                   "Resource": [
                        "*"
                   ]
              }
         ]
    }

    Remarque
    Il est recommandé d'appliquer les mêmes autorisations que celles décrites ici à toutes les stratégies gérées personnalisées associées au rôle DataPipelineDefaultResourceRole.
  8. Cliquez sur Validate Policy. Une fois la stratégie validée, sélectionnez Create Policy pour créer la stratégie.
  9. Une fois la stratégie créée, associez-la au rôle DataPipelineDefaultResourceRole :
    1. Saisissez DataPipeline ou tout autre préfixe approprié pour l'expression de filtre Policy Type. Cochez la case à côté de la nouvelle stratégie, puis sélectionnez l'option Attach dans la liste déroulante Policy Actions.
    2. Sur la page Attach Policy, saisissez l'expression de filtre « datapipeline », puis cochez la case située à côté de l'entrée DataPipelineDefaultResourceRole renvoyée par ce filtre.
    3. Sélectionnez Attach Policy en bas de la page pour associer la nouvelle stratégie au rôle DataPipelineDefaultResourceRole.

Pour créer et configurer Data Pipeline de manière à exécuter des commandes de ligne de commande AWS qui arrêtent et redémarrent des instances Amazon EC2 instances selon un calendrier spécifique, procédez comme suit :

1. Création de pipelines

Ouvrez la console Data Pipeline. Sélectionnez Create New Pipeline et saisissez les informations suivantes pour créer deux pipelines :

Name : « Démarrage des instances EC2 » et « Arrêt des instances EC2 », par exemple.
Description : indiquez toute information utile concernant le pipeline.
Source : cliquez sur Build using template, puis sélectionnez le modèle Run AWS CLI command.
AWS CLI command : spécifiez la fonction du pipeline. Créez deux pipelines : un pour la commande aws ec2 start-instances et un autre pour la commande aws ec2 stop-instances.

Remarque : les commandes ec2 start-instances et ec2 stop-instances nécessitent des valeurs valides pour le paramètre --region.

Par exemple, vous pouvez utiliser la commande suivante pour démarrer les instances EC2 spécifiées :

aws ec2 start-instances --instance-ids i-abcd1234 i-987a654b i-ba154f3c --region us-east-x

La commande ci-dessous indique la syntaxe utilisée pour arrêter les instances EC2 que vous avez démarrées :

aws ec2 stop-instances --instance-ids i-abcd1234 i-987a654b i-ba154f3c --region us-east-x

Important
Si des ID d'instance inexistants sont transmis au paramètre --instance, la commande échoue complètement. Autrement dit, aucune instance n'est démarrée ou arrêtée. Ce problème peut survenir lorsque l'ID d'une ou de plusieurs des instances spécifiées a été mis hors service. Par exemple, dans le cas présent, si l'ID d'instance i-abcd1234 a été mis hors service, la commande aws ec2 start-instances ne démarrera aucune des instances spécifiées. Pour éviter ce scénario, envisagez d'émettre des commandes séparées par un point-virgule :

aws ec2 start-instances --instance-ids i-abcd1234 --region us-east-x;
aws ec2 start-instances --instance-ids i-987a654b --region us-east-x;
aws ec2 start-instances --instance-ids i-ba154f3c --region us-east-x

Pour plus d'informations sur l'utilisation de l'interface de ligne de commande AWS pour arrêter et démarrer des instances EC2, voir see start-instances et stop-instances dans la documentation relative à l'interface de ligne de commande AWS.

2. Planification des pipelines de données

Une fois que vous avez créé des pipelines distincts pour démarrer et arrêter les instances, ajoutez-leur les informations de planification appropriées. Pour de plus amples informations, consultez la section Planification des pipelines.

3. Configuration de la journalisation des pipelines de données

Activez la journalisation pour chaque pipeline, puis spécifiez un compartiment S3 dans la même région afin de stocker les journaux correspondants. La journalisation des pipelines de données n'est pas obligatoire. Toutefois, si elle n'est pas activée, la console affiche un avertissement lors de la validation de ces derniers.

4. Définition des droits d'accès

Définissez les options ci-dessous pour configurer les droits d'accès appropriés :

IAM Roles : sélectionnez Custom
Pipeline Role :
DataPipelineDefaultRole
EC2 Instance Role : DataPipelineDefaultResourceRole

Remarque
Data Pipeline crée les rôles IAM nécessaires pour vous.

5. Mise à jour des autorisations de rôle

Dans la console AWS Management Console, sélectionnez IAM, puis Roles. Si vous utilisez une stratégie non gérée, sélectionnez le rôle DataPipelineDefaultResourceRole et modifiez la stratégie associée, comme décrit à l'étape 7 de la procédure de création d'une stratégie personnalisée pour le rôle DataPipelineDefaultResourceRole. Dans le cas contraire, associez le rôle DataPipelineDefaultResourceRole à une stratégie personnalisée en suivant les instructions de la section Création d'une stratégie personnalisée pour le rôle DataPipelineDefaultResourceRole. Pour plus d'informations, reportez-vous à l'article Modification d'un pipeline.

6. Activation des pipelines

Dans la console, sélectionnez Activate pour activer les pipelines. Vous pouvez contrôler les activités des pipelines de données dans la console afin de vous assurer que les actions aboutissent en temps et en heure.

EC2, Data Pipeline, planification, arrêter, démarrer, instances


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support.