Planifier des automatisations avec des fenêtres de maintenance - AWS Systems Manager

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.

Planifier des automatisations avec des fenêtres de maintenance

Vous pouvez démarrer une automatisation en configurant un runbook en tant que tâche enregistrée pour une fenêtre de maintenance. Si le runbook est enregistré en tant que tâche enregistrée, la fenêtre de maintenance exécute l'automatisation au cours de la période de maintenance planifiée.

Par exemple, supposons que vous créiez un runbook nommé CreateAMI qui crée une Amazon Machine Image (AMI) d'instances enregistrées comme cibles dans la fenêtre de maintenance. Pour spécifier le runbook CreateAMI (ainsi que l'automatisation correspondante) en tant que tâche enregistrée d'une fenêtre de maintenance, vous devez d'abord créer une fenêtre de maintenance et enregistrer des cibles. Vous utilisez ensuite la procédure suivante afin de spécifier le document CreateAMI en tant que tâche enregistrée dans la fenêtre de maintenance. Lorsque la fenêtre de maintenance démarre au cours de la période planifiée, le système exécute l'automatisation et crée une AMI de cibles enregistrées.

Pour plus d'informations sur la création de runbooks Automation, consultez Créer vos propres runbooks. Automation est une fonctionnalité de AWS Systems Manager.

Utilisez les procédures suivantes pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance à l'aide de la console AWS Systems Manager, de l'AWS Command Line Interface (AWS CLI) ou des AWS Tools for Windows PowerShell.

Enregistrement d'une automatisation dans une fenêtre de maintenance (console)

La procédure suivante décrit comment utiliser la console Systems Manager pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance.

Avant de commencer

Avant d'exécuter la procédure suivante, vous devez créer une fenêtre de maintenance et enregistrer au moins une cible. Pour de plus amples informations, consultez les procédures suivantes.

Pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance
  1. Ouvrez la console AWS Systems Manager à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le panneau de navigation de gauche, sélectionnez Maintenance Windows, puis sélectionnez la fenêtre de maintenance avec laquelle vous souhaitez enregistrer une tâche Automation.

  3. Sélectionnez Actions. Ensuite, sélectionnez Register Automation task (Enregistrer la tâche d'automatisation) pour exécuter une automatisation sur les cibles à l'aide d'un runbook.

  4. Pour Name (Nom), entrez le nom de la tâche.

  5. Pour Description, entrez une description.

  6. Pour Document, sélectionnez le runbook qui définit les tâches à exécuter.

  7. Pour Document version (Version du document), sélectionnez la version du runbook à utiliser.

  8. Pour Task priority (Priorité de tâche), sélectionnez une priorité. 1 est la priorité la plus élevée. Les tâches d'une fenêtre de maintenance sont planifiées par ordre de priorité. Les tâches qui ont la même priorité sont planifiées en parallèle.

  9. Dans la section Targets (Cibles), si le runbook que vous avez choisi est celui qui exécute les tâches sur les ressources, identifiez les cibles sur lesquelles vous voulez exécuter cette automatisation en spécifiant des balises ou en sélectionnant des instances manuellement.

    Note

    Si vous voulez transmettre les ressources par l'intermédiaire de paramètres d'entrée au lieu de cibles, il est inutile de spécifier une cible de fenêtre de maintenance.

    Dans la plupart des cas, il est inutile de spécifier explicitement une cible pour une tâche d'automatisation. Par exemple, supposons que vous créiez une tâche de type Automation pour mettre à jour une Amazon Machine Image (AMI) pour Linux à l'aide du runbook AWS-UpdateLinuxAmi. Lorsque la tâche s'exécute, l'AMI est mise à jour avec les derniers packages de distribution Linux et les logiciels Amazon disponibles. Ces mises à jour sont déjà installées sur les nouvelles instances créées à partir de l'AMI. Comme l'ID de l'AMI à mettre à jour est spécifié dans les paramètres d'entrée du runbook, il est inutile de spécifier à nouveau une cible dans la tâche de la fenêtre de maintenance.

    Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez Enregistrement de tâches de fenêtre de maintenance sans cibles.

  10. (Facultatif) Pour Contrôle du débit :

    Note

    Si la tâche que vous exécutez ne spécifie pas de cibles, il est inutile de spécifier des contrôles de débit.

    • Pour Concurrency (Simultanéité), spécifiez un nombre ou un pourcentage de cibles sur lesquelles exécuter l'automatisation en même temps.

      Si vous avez sélectionné des cibles en choisissant des paires clé-valeur de balises, et que vous n'êtes pas sûr de la quantité de cibles utilisant les balises sélectionnées, limitez alors le nombre d'automatisations qui peuvent s'exécuter en même temps en spécifiant un pourcentage.

      Lorsque la fenêtre de maintenance s'exécute, une nouvelle automatisation est initiée par cible. Il existe une limite de 100 automatisations simultanées par Compte AWS. Si vous spécifiez un taux de simultanéité supérieur à 100, les automatisations simultanées supérieures à 100 sont automatiquement ajoutées à la file d'attente de l'automatisation. Pour plus d'informations, veuillez consulter la rubrique Quotas de service Systems Manager dans la Référence générale d'Amazon Web Services.

    • Pour Error threshold (Seuil d'erreurs), spécifiez quand arrêter l'exécution de l'automatisation sur d'autres cibles après son échec sur un nombre ou un pourcentage de cibles. Par exemple, si vous spécifiez trois erreurs, puis que Systems Manager arrête l'exécution de l'automatisation, alors la quatrième erreur est reçue. Les cibles traitant toujours l'automatisation pourraient également envoyer des erreurs.

  11. Dans la section Input Parameters (Paramètres d'entrée), spécifiez les paramètres du runbook. Pour les runbooks, le système fournit automatiquement certaines des valeurs. Vous pouvez conserver ou remplacer ces valeurs.

    Important

    Pour les runbooks, vous pouvez éventuellement spécifier un rôle responsable Automation. Si vous ne spécifiez pas de rôle pour ce paramètre, l'automatisation endosse le rôle de service de fenêtre de maintenance que vous avez choisi à l'étape 11. À ce titre, vous devez veiller à ce que le rôle de service de fenêtre de maintenance que vous avez choisi possède les autorisations appropriées AWS Identity and Access Management (IAM) pour effectuer les actions définies dans le runbook.

    Par exemple, le rôle lié à un service pour Systems Manager ne dispose pas de l'autorisation IAM ec2:CreateSnapshot, ce qui est nécessaire pour exécuter le runbook AWS-CopySnapshot. Dans ce scénario, vous devez utiliser un rôle de service de fenêtre de maintenance personnalisé ou spécifier un rôle de responsable Automation qui dispose des autorisations ec2:CreateSnapshot. Pour plus d'informations, consultez Configuration d'Automation.

  12. Dans la zone IAM service role (Fonction du service),choisissez un rôle pour fournir les autorisations permettant à Systems Manager de lancer l'automatisation.

    Pour créer une fonction du service personnalisée pour les tâches de fenêtre de maintenance, consultez la rubrique Utiliser la console pour configurer les autorisations pour les fenêtres de maintenance.

  13. Sélectionnez Enregistrer la tâche d'automatisation.

Enregistrement d'une automatisation dans une fenêtre de maintenance (ligne de commande)

La procédure suivante décrit comment utiliser l'AWS CLI (sous Linux ou Windows) ou les AWS Tools for PowerShell pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance.

Avant de commencer

Avant d'exécuter la procédure suivante, vous devez créer une fenêtre de maintenance et enregistrer au moins une cible. Pour de plus amples informations, consultez les procédures suivantes.

Pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance
  1. Installez et configurez l'AWS CLI ou AWS Tools for PowerShell si vous ne l'avez pas déjà fait.

    Pour plus d'informations, consultez la section Installation ou mise à jour de la version la plus récente de l'AWS CLI et Installation d'AWS Tools for PowerShell.

  2. Créez une commande pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations.

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id window ID \ --name task name \ --task-arn runbook name \ --targets Key=targets,Values=value \ --service-role-arn IAM role arn \ --task-type AUTOMATION \ --task-invocation-parameters task parameters \ --priority task priority \ --max-concurrency 10% \ --max-errors 5
    Note

    Si vous configurez une automatisation en tant que tâche enregistrée à l'aide de l'AWS CLI, utilisez le paramètre --Task-Invocation-Parameters pour spécifier les paramètres à transmettre à une tâche lorsqu'elle s'exécute. N'utilisez pas le paramètre --Task-Parameters. Le paramètre --Task-Parameters est un paramètre hérité.

    Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour --max-errors et --max-concurrency. Au lieu de cela, le système insère une valeur d'espace réservé de 1, qui peut être rapportée dans la réponse à des commandes telles que describe-maintenance-window-tasks et get-maintenance-window-task. Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.

    Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez Enregistrement de tâches de fenêtre de maintenance sans cibles.

    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id window ID ^ --name task name ^ --task-arn runbook name ^ --targets Key=targets,Values=value ^ --service-role-arn IAM role arn ^ --task-type AUTOMATION ^ --task-invocation-parameters task parameters ^ --priority task priority ^ --max-concurrency 10% ^ --max-errors 5
    Note

    Si vous configurez une automatisation en tant que tâche enregistrée à l'aide de l'AWS CLI, utilisez le paramètre --task-invocation-parameters pour spécifier les paramètres à transmettre à une tâche lorsqu'elle s'exécute. N'utilisez pas le paramètre --task-parameters. Le paramètre --task-parameters est un paramètre hérité.

    Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour --max-errors et --max-concurrency. Au lieu de cela, le système insère une valeur d'espace réservé de 1, qui peut être rapportée dans la réponse à des commandes telles que describe-maintenance-window-tasks et get-maintenance-window-task. Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.

    Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez Enregistrement de tâches de fenêtre de maintenance sans cibles.

    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId window ID ` -Name "task name" ` -TaskArn "runbook name" ` -Target @{ Key="targets";Values="value" } ` -ServiceRoleArn "IAM role arn" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "task parameter"="task parameter value"} ` -Priority task priority ` -MaxConcurrency 10% ` -MaxError 5
    Note

    Si vous configurez une automatisation en tant que tâche enregistrée à l'aide des AWS Tools for PowerShell, utilisez le paramètre -Automation_Parameter pour spécifier les paramètres à transmettre à une tâche lorsque la tâche s'exécute. N'utilisez pas le paramètre -TaskParameters. Le paramètre -TaskParameters est un paramètre hérité.

    Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour -MaxError et -MaxConcurrency. Au lieu de cela, le système insère une valeur d'espace réservé de 1, qui peut être rapportée dans la réponse à des commandes telles que Get-SSMMaintenanceWindowTaskList et Get-SSMMaintenanceWindowTask. Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.

    Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez Enregistrement de tâches de fenêtre de maintenance sans cibles.

    L'exemple suivant configure une automatisation en tant que tâche enregistrée dans une fenêtre de maintenance avec la priorité 1. Il montre également que les options --targets, --max-errors et --max-concurrency peuvent être omises pour une tâche de fenêtre de maintenance sans cible. L'automatisation utilise le runbook AWS-StartEC2Instance et l'automatisation spécifiée endosse le rôle de démarrage des instances EC2 enregistrées en tant que cibles dans la fenêtre de maintenance. La fenêtre de maintenance exécute l'automatisation simultanément sur 5 instances maximum à chaque instant. En outre, la tâche enregistrée cesse d'être exécutée sur des instances supplémentaires pour un intervalle particulier si le nombre d'erreurs dépasse 1.

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --name StartEC2Instances \ --task-arn AWS-StartEC2Instance \ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole \ --task-type AUTOMATION \ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" \ --priority 1
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --name StartEC2Instances ^ --task-arn AWS-StartEC2Instance ^ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" ^ --priority 1
    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId mw-0c50858d01EXAMPLE ` -Name "StartEC2" ` -TaskArn "AWS-StartEC2Instance" ` -ServiceRoleArn "arn:aws:iam::123456789012:role/MaintenanceWindowRole" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "InstanceId"="{{TARGET_ID}}";"AutomationAssumeRole"="arn:aws:iam::123456789012:role/AutomationAssumeRole" } ` -Priority 1

    La commande renvoie des détails similaires à ce qui suit pour la nouvelle tâche enregistrée.

    Linux & macOS
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. Pour afficher la tâche enregistrée, exécutez la commande suivante. Remplacez maintenance windows ID (ID des fenêtres de maintenance) par vos propres informations.

    Linux & macOS
    aws ssm describe-maintenance-window-tasks \ --window-id maintenance window ID
    Windows
    aws ssm describe-maintenance-window-tasks ^ --window-id maintenance window ID
    PowerShell
    Get-SSMMaintenanceWindowTaskList ` -WindowId maintenance window ID

    Le système retourne des informations telles que les suivantes.

    Linux & macOS
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    Windows
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    PowerShell
    Description    : 
    LoggingInfo    : 
    MaxConcurrency : 5
    MaxErrors      : 1
    Name           : StartEC2
    Priority       : 1
    ServiceRoleArn : arn:aws:iam::123456789012:role/MaintenanceWindowRole
    Targets        : {}
    TaskArn        : AWS-StartEC2Instance
    TaskParameters : {}
    Type           : AUTOMATION
    WindowId       : mw-0c50858d01EXAMPLE
    WindowTaskId   : 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE