Exécution des automatisations avec les associations State Manager - 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.

Exécution des automatisations avec les associations State Manager

Vous pouvez démarrer une automatisation en créant une State Manager association avec un runbook. State Managerest une capacité de AWS Systems Manager. En créant une State Manager association avec un runbook, vous pouvez cibler différents types de AWS ressources. Par exemple, vous pouvez créer des associations qui imposent l'état souhaité à une AWS ressource, notamment les suivantes :

  • Attribuez un rôle de Systems Manager aux instances Amazon Elastic Compute Cloud (AmazonEC2) pour en faire des instances gérées.

  • Appliquer les règles d'entrée et de sortie souhaitées pour un groupe de sécurité.

  • Créez ou supprimez des sauvegardes Amazon DynamoDB.

  • Créez ou supprimez des instantanés Amazon Elastic Block Store (AmazonEBS).

  • Désactivez les autorisations de lecture et d'écriture sur des compartiments Amazon Simple Storage Service (Amazon S3).

  • Démarrez, redémarrez ou arrêtez les instances gérées et les instances Amazon Relational Database Service (RDSAmazon).

  • Appliquez des correctifs à des AMIs Linux, macOS et Windows.

Utilisez les procédures suivantes pour créer une State Manager association qui exécute une automatisation à l'aide de la AWS Systems Manager console et AWS Command Line Interface (AWS CLI). Pour obtenir des informations générales sur les associations et des informations sur la création d'une association utilisant un SSM Command document ou un Policy document, consultezCréation d'associations.

Avant de commencer

Tenez compte des informations importantes suivantes avant d'exécuter des automatisations à l'aide de State Manager :

  • Avant de créer une association utilisant un runbook, vérifiez que vous avez configuré les autorisations pour Automation, une fonctionnalité de AWS Systems Manager. Pour de plus amples informations, veuillez consulter Configuration d'Automation.

  • Les associations State Manager qui exécutent des runbooks contribuent au nombre maximal d'automatisations exécutées simultanément dans votre Compte AWS. Vous pouvez avoir un maximum de 100 automatisations simultanées en cours d'exécution à la fois. 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.

  • Lors de l'exécution d'une automatisation, State Manager n'enregistre pas les API opérations initiées par l'automatisation AWS CloudTrail.

  • Systems Manager crée automatiquement un rôle lié à un service afin qu'State Manageril soit autorisé à appeler les opérations d'automatisation API de Systems Manager. Si vous le souhaitez, vous pouvez créer vous-même le rôle lié au service en exécutant la commande suivante depuis le AWS CLI ou. AWS Tools for PowerShell

    Linux & macOS
    aws iam create-service-linked-role \ --aws-service-name ssm.amazonaws.com
    Windows
    aws iam create-service-linked-role ^ --aws-service-name ssm.amazonaws.com
    PowerShell
    New-IAMServiceLinkedRole ` -AWSServiceName ssm.amazonaws.com

    Pour plus d'informations sur les rôles liés à un service, consultez Utilisation des rôles liés aux services pour Systems Manager.

Création d'une association qui exécute une automatisation (console)

La procédure suivante décrit comment utiliser la console Systems Manager pour créer une association State Manager qui exécute une automatisation.

Pour créer une association State Manager qui exécute une automatisation
  1. Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le panneau de navigation, sélectionnez State Manager, puis Créer une association.

  3. Dans le champ Nom, spécifiez un nom. Cette action est facultative, mais recommandée.

  4. Dans la liste Document, sélectionnez un runbook. Utilisez la barre de recherche pour filtrer les runbooks Document type : Equal : Automation (Type de document : égal : Automation). Pour afficher plus de runbooks, utilisez les nombres à droite de la barre de recherche.

    Note

    Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

  5. Sélectionnez Simple execution (Exécution simple) pour exécuter l'instance d'Automation sur une ou plusieurs cibles en spécifiant les ID de ressource pour ces cibles. Choisissez Rate control pour exécuter l'automatisation sur un parc de AWS ressources en spécifiant une option de ciblage telle que des balises ou AWS Resource Groups. Vous pouvez également contrôler l'opération de l'automatisation à travers vos ressources en spécifiant la simultanéité et les seuils d'erreur.

    Si vous avez choisi Rate Control (Contrôle du débit), la section Targets (Cibles) apparaît.

  6. Dans la section Targets (Cibles), sélectionnez une méthode pour cibler des ressources.

    1. (Facultatif) Dans la liste Parameter (Paramètre), sélectionnez un paramètre. Les éléments de la liste Parameter (Paramètre) sont déterminés par les paramètres du runbook que vous avez sélectionnés au début de cette procédure. En choisissant un paramètre, vous définissez le type de ressource sur lequel l'automatisation s'exécute.

    2. (Facultatif) Dans la liste Targets (Cibles), sélectionnez une méthode pour cibler les ressources.

      • Resource Group (Groupe de ressources) : sélectionnez le nom du groupe dans la liste Resource Group (Groupe de ressources). Pour plus d'informations sur le ciblage AWS Resource Groups dans les runbooks, consultezCiblage AWS Resource Groups.

      • Balises : entrez la clé de balise et la valeur de balise (le cas échéant) dans les champs fournis. Choisissez Ajouter. Pour de plus amples informations sur le ciblage des balises dans les runbooks, consultez Ciblage d'une balise.

      • Parameter Values (Valeurs des paramètres) : entrez les valeurs dans la section Paramètres d'entrée. Si vous spécifiez plusieurs valeurs, Systems Manager exécute une automatisation sur chaque valeur spécifiée.

        Par exemple, supposons que le runbook comporte un paramètre InstanceID. Si vous ciblez les valeurs du paramètre InstanceID lorsque vous exécutez l'automatisation, Systems Manager exécute une automatisation enfant pour chaque valeur d'ID d'instance spécifiée. L'automatisation parent se termine lorsque l'automatisation a exécuté chaque instance spécifiée ou si l'exécution échoue. Vous pouvez cibler un maximum de 50 valeurs de paramètre. Pour de plus amples informations sur le ciblage des valeurs de paramètres dans les runbooks, consultez Ciblage des paramètres de valeur.

  7. Dans la section Paramètres d'entrée, spécifiez les paramètres d'entrée obligatoires.

    Si vous choisissez de cibler les ressources en utilisant des balises ou un groupe de ressources, certaines options de la section Paramètres d'entrée n'ont pas besoin d'être définies. Par exemple, si vous avez choisi le AWS-RestartEC2Instance runbook et que vous avez choisi de cibler les instances à l'aide de balises, vous n'avez pas besoin de spécifier ou de choisir une instance IDs dans la section Paramètres d'entrée. L'automatisation localise les instances à redémarrer en utilisant les balises que vous avez spécifiées.

    Important

    Vous devez spécifier un rôle ARN dans le AutomationAssumeRolechamp. State Managerutilise le rôle assume pour appeler AWS services spécifié dans le runbook et exécuter des associations d'automatisation en votre nom.

  8. Dans la section Spécifier le programme, sélectionnez On Schedule (Activé) si vous voulez exécuter l'association à intervalles réguliers. Si vous sélectionnez cette option, utilisez les options fournies pour créer le calendrier à l'aide des expressions Cron ou Rate. Pour de plus amples informations sur les expressions de type Cron et Rate pour State Manager, consultez Expressions cron et rate pour les associations.

    Note

    Les expressions Rate sont le mécanisme de planification préféré pour les associations State Manager qui exécutent des runbooks. Les expressions Rate permettent plus de flexibilité pour exécuter des associations dans le cas où vous avez atteint le nombre maximal d'automatisations s'exécutant simultanément. Avec un programme Rate, Systems Manager peut réessayer l'automatisation peu de temps après avoir reçu une notification indiquant que les automatisations simultanées ont atteint leur maximum et ont été limitées.

    Sélectionnez No schedule (Aucun programme) si vous souhaitez exécuter l'association à un moment donné.

  9. (Facultatif) Dans la section Contrôle du débit, choisissez les options de simultanéité et de seuil d'erreur pour contrôler le déploiement de l'automatisation sur l'ensemble de vos AWS ressources.

    1. Dans la section Simultanéité, sélectionnez une option :

      • Sélectionnez targets (cibles) pour entrer un nombre absolu de cibles pouvant exécuter l'automatisation simultanément.

      • Sélectionnez percentage (pourcentage) pour indiquer un pourcentage de l'ensemble de cibles pouvant exécuter l'automatisation simultanément.

    2. Dans la section Error threshold (Seuil d'erreurs), sélectionnez une option :

      • Sélectionnez errors (erreurs) pour indiquer un nombre absolu d'erreurs autorisées avant qu'Automation ne cesse d'envoyer l'automatisation à d'autres ressources.

      • Sélectionnez percentage (pourcentage) pour indiquer un pourcentage d'erreurs autorisées avant qu'Automation ne cesse d'envoyer l'automatisation à d'autres ressources.

    Pour de plus amples informations sur l'utilisation des cibles et du contrôle du débit avec Automation, consultez Exécutez des opérations automatisées à grande échelle.

  10. Sélectionnez Create Association (Créer une association).

    Important

    Lorsque vous créez une association, l'association s'exécute immédiatement les cibles spécifiées. L'association s'exécute ensuite en fonction de l'expression cron ou rate que vous avez choisie. Si vous sélectionnez No schedule (Aucune planification), l'association n'est pas exécutée à nouveau.

Création d'une association qui exécute une automatisation (ligne de commande)

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou comment AWS Tools for PowerShell créer une State Manager association qui exécute une automatisation.

Avant de commencer

Avant de terminer la procédure suivante, assurez-vous d'avoir créé un rôle de IAM service contenant les autorisations nécessaires pour exécuter le runbook et d'avoir configuré une relation de confiance pour Automation, une fonctionnalité de AWS Systems Manager. Pour de plus amples informations, veuillez consulter Tâche 1 : Création d'un rôle de service pour Automation.

Pour créer une association qui exécute une automatisation
  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. Exécutez la commande suivante pour afficher une liste de documents.

    Linux & macOS
    aws ssm list-documents
    Windows
    aws ssm list-documents
    PowerShell
    Get-SSMDocumentList

    Notez le nom du runbook que vous souhaitez utiliser pour l'association.

  3. Exécutez la commande suivante pour afficher les détails relatifs au runbook. Dans la commande suivante, remplacez runbook name avec vos propres informations.

    Linux & macOS
    aws ssm describe-document \ --name runbook name

    Notez un nom de paramètre (par exemple, InstanceId) que vous souhaitez utiliser pour l'option --automation-target-parameter-name. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

    Windows
    aws ssm describe-document ^ --name runbook name

    Notez un nom de paramètre (par exemple, InstanceId) que vous souhaitez utiliser pour l'option --automation-target-parameter-name. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

    PowerShell
    Get-SSMDocumentDescription ` -Name runbook name

    Notez un nom de paramètre (par exemple, InstanceId) que vous souhaitez utiliser pour l'option AutomationTargetParameterName. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

  4. Créez une commande qui exécute une automatisation à l'aide d'une association State Manager. Remplacez chacun example resource placeholder avec vos propres informations.

    Ciblage à l'aide de balises

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=tag:key name,Values=value \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression"
    Note

    Si vous créez une association à l'aide du AWS CLI, utilisez le --targets paramètre pour cibler les instances de l'association. N'utilisez pas le paramètre --instance-id. Le paramètre --instance-id est un paramètre hérité.

    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=tag:key name,Values=value ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression"
    Note

    Si vous créez une association à l'aide du AWS CLI, utilisez le --targets paramètre pour cibler les instances de l'association. N'utilisez pas le paramètre --instance-id. Le paramètre --instance-id est un paramètre hérité.

    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "tag:key name" $Targets.Values = "value" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole" } ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression"
    Note

    Si vous créez une association à l'aide du AWS Tools for PowerShell, utilisez le Target paramètre pour cibler les instances de l'association. N'utilisez pas le paramètre InstanceId. Le paramètre InstanceId est un paramètre hérité.

    Ciblage à l'aide des valeurs de paramètre

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=ParameterValues,Values=value,value 2,value 3 \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression"
    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=ParameterValues,Values=value,value 2,value 3 ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression"
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ParameterValues" $Targets.Values = "value","value 2","value 3" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression"

    Ciblage à l'aide AWS Resource Groups

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=ResourceGroup,Values=resource group name \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression"
    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=ResourceGroup,Values=resource group name ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression"
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "resource group name" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression"

    Ciblage de comptes et de régions multiples

    Linux & macOS
    aws ssm create-association \ --association-name association name \ --targets Key=ResourceGroup,Values=resource group name \ --name runbook name \ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \ --automation-target-parameter-name target parameter \ --schedule "cron or rate expression" \ --target-locations Accounts=111122223333,444455556666,444455556666,Regions=region,region
    Windows
    aws ssm create-association ^ --association-name association name ^ --targets Key=ResourceGroup,Values=resource group name ^ --name runbook name ^ --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^ --automation-target-parameter-name target parameter ^ --schedule "cron or rate expression" ^ --target-locations Accounts=111122223333,444455556666,444455556666,Regions=region,region
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "resource group name" New-SSMAssociation ` -AssociationName "association name" ` -Target $Targets ` -Name "runbook name" ` -Parameters @{ "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} ` -AutomationTargetParameterName "target parameter" ` -ScheduleExpression "cron or rate expression" ` -TargetLocations @{ "Accounts"=["111122223333,444455556666,444455556666"], "Regions"=["region,region"]

    La commande renvoie des détails pour la nouvelle association similaires à ce qui suit.

    Linux & macOS
    {
    "AssociationDescription": {
        "ScheduleExpression": "cron(0 7 ? * MON *)",
        "Name": "AWS-StartEC2Instance",
        "Parameters": {
            "AutomationAssumeRole": [
                "arn:aws:iam::123456789012:role/RunbookAssumeRole"
            ]
        },
        "Overview": {
            "Status": "Pending",
            "DetailedStatus": "Creating"
        },
        "AssociationId": "1450b4b7-bea2-4e4b-b340-01234EXAMPLE",
        "DocumentVersion": "$DEFAULT",
        "AutomationTargetParameterName": "InstanceId",
        "LastUpdateAssociationDate": 1564686638.498,
        "Date": 1564686638.498,
        "AssociationVersion": "1",
        "AssociationName": "CLI",
        "Targets": [
            {
                "Values": [
                    "DEV"
                ],
                "Key": "tag:ENV"
            }
        ]
    }
    }
    
    Windows
    {
    "AssociationDescription": {
        "ScheduleExpression": "cron(0 7 ? * MON *)",
        "Name": "AWS-StartEC2Instance",
        "Parameters": {
            "AutomationAssumeRole": [
                "arn:aws:iam::123456789012:role/RunbookAssumeRole"
            ]
        },
        "Overview": {
            "Status": "Pending",
            "DetailedStatus": "Creating"
        },
        "AssociationId": "1450b4b7-bea2-4e4b-b340-01234EXAMPLE",
        "DocumentVersion": "$DEFAULT",
        "AutomationTargetParameterName": "InstanceId",
        "LastUpdateAssociationDate": 1564686638.498,
        "Date": 1564686638.498,
        "AssociationVersion": "1",
        "AssociationName": "CLI",
        "Targets": [
            {
                "Values": [
                    "DEV"
                ],
                "Key": "tag:ENV"
            }
        ]
    }
    }
    
    PowerShell
    Name                  : AWS-StartEC2Instance
    InstanceId            : 
    Date                  : 8/1/2019 7:31:38 PM
    Status.Name           : 
    Status.Date           : 
    Status.Message        : 
    Status.AdditionalInfo : 
Note

Si vous utilisez des balises pour créer une association sur une ou plusieurs instances cibles, puis que vous supprimez les balises d'une instance, cette instance n'exécute plus l'association. L'instance est dissociée du document State Manager.

Résolution des problèmes liés à l'exécution des automatisations par des associations State Manager

Systems Manager Automation impose une limite de 100 automatisations simultanées et 1 000 automatisations en file d'attente par compte et par région. Si une State Manager association utilisant un runbook affiche le statut Echec et un état détaillé de AutomationExecutionLimitExceeded, votre automatisation a peut-être atteint la limite. Par conséquent, Systems Manager limite les automatisations. Pour résoudre ce problème, procédez comme suit :

  • Utilisez un taux différent ou une expression cron différente pour votre association. Par exemple, si l'exécution de l'association est prévue toutes les 30 minutes, alors modifiez l'expression de telle sorte qu'elle s'exécute toutes les heures ou toutes les deux heures.

  • Supprimez les automatisations existantes dotées d'un statut Pending (En suspens). En supprimant ces automatisations, vous désactivez la file d'attente actuelle.