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. L'automatisation est une capacité 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 AWS Systems Manager console, AWS Command Line Interface (AWS CLI) ou 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 AWS Systems Manager console à 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. Vous devez donc vous assurer que le rôle de service de fenêtre de maintenance que vous choisissez dispose des 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'IAMautorisation ec2:CreateSnapshot requise pour utiliser 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 responsable Automation qui dispose des autorisations ec2:CreateSnapshot. Pour plus d'informations, consultez Configuration d'Automation.

  12. Dans la zone des rôles de IAM service, choisissez un rôle pour autoriser Systems Manager à démarrer 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 AWS CLI (sous Linux ou Windows) ou comment AWS Tools for PowerShell 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 le AWS CLI ou le AWS Tools for PowerShell, si ce n'est 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 chacun example resource placeholder 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 du paramètre AWS CLI, utilisez le --Task-Invocation-Parameters paramètre pour spécifier les paramètres à transmettre à une tâche lors de son exécution. 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 du paramètre AWS CLI, utilisez le --task-invocation-parameters paramètre pour spécifier les paramètres à transmettre à une tâche lors de son exécution. 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 du paramètre AWS Tools for PowerShell, utilisez le -Automation_Parameter paramètre pour spécifier les paramètres à transmettre à une tâche lors de son exécution. 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 AWS-StartEC2Instance runbook et le rôle Automation spécifié assume le rôle pour démarrer les EC2 instances enregistrées en tant que cibles pour 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 avec 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