Exécuter des opérations automatisées à grande échelle - 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écuter des opérations automatisées à grande échelle

Avec AWS Systems Manager Automatisation, il est possible d'exécuter des automatisations sur une flotte AWS ressources en utilisant des cibles. De plus, vous pouvez contrôler le déploiement de l'automatisation dans l'ensemble de la flotte en spécifiant une valeur de simultanéité et un seuil d'erreurs. Les fonctions de simultanéité et de seuil d'erreurs sont appelées collectivement contrôles du débit. La valeur de simultanéité détermine le nombre de ressources autorisées à exécuter l'automatisation simultanément. Automation fournit également un mode de simultanéité adaptative auquel vous pouvez vous inscrire. La simultanéité adaptative met automatiquement à l'échelle votre quota d'automatisation en passant de 100 automatisations exécutées simultanément à 500. Le seuil d'erreurs détermine le nombre d'automatisations qui peuvent échouer jusqu'à ce que Systems Manager cesse d'envoyer l'automatisation à d'autres ressources.

Pour de plus amples informations sur la simultanéité et les seuils d'erreurs, consultez Automatisations de contrôle à grande échelle. Pour de plus amples informations sur les cibles, consultez Mappage des cibles pour une automatisation.

Les procédures suivantes décrivent comment activer la simultanéité adaptative et exécuter une automatisation avec des cibles et des contrôles de taux à l'aide de la console Systems Manager et l'AWS Command Line Interface (AWS CLI).

Exécution d'une automatisation avec des cibles et des contrôles du débit (console)

La procédure suivante décrit comment utiliser la console Systems Manager pour exécuter une automatisation avec des cibles et des contrôles du débit.

Pour exécuter une automatisation avec des cibles et des contrôles du débit
  1. Ouvrez la console AWS Systems Manager à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le panneau de navigation, sélectionnez Automation (Automatisation), puis Execute automation (Exécuter l'automatisation).

  3. Dans la liste Automation document (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau Document categories (Catégories de documents) pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet Owned by me (M'appartenant). Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet Shared with me (Partagé avec moi). Pour afficher tous les runbooks, sélectionnez l'onglet All documents (Tous les documents).

    Note

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

  4. Dans la section Document details (Détails du document), vérifiez que l'option Document version (Version de document) correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes :

    • Version par défaut lors de l’exécution : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.

    • Dernière version lors de l’exécution : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.

    • 1 (Par défaut) : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

  5. Sélectionnez Suivant.

  6. Dans la section Execution Mode (Mode d'exécution), sélectionnez Rate Control (Contrôle du débit). Vous devez utiliser ce mode ou Multi-account and Region (Compte et région multiples) si vous souhaitez utiliser des cibles et des contrôles du débit.

  7. Dans la section Targets (Cibles), sélectionnez la façon dont vous souhaitez cibler les ressources AWS où vous souhaitez exécuter l'automatisation. Ces options sont obligatoires.

    1. Utilisez la liste Parameter (Paramètre) pour choisir un paramètre. Les éléments de la liste Parameter (Paramètre) sont déterminés par les paramètres du runbook Automation 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 le flux de travail d'automatisation s'exécutera.

    2. Utilisez la liste Targets (Cibles) pour choisir la façon dont vous souhaitez cibler les ressources.

      1. Si vous choisissez de cibler des ressources à l'aide de valeurs de paramètre, saisissez la valeur de paramètre du paramètre que vous avez choisi, dans la section Input parameters (Paramètres d'entrée).

      2. Si vous choisissez de cibler les ressources avec AWS Resource Groups, sélectionnez le nom du groupe dans la liste Resource Group (Groupe de ressources).

      3. Si vous choisissez de cibler des ressources à l'aide de balises, entrez la clé de balise et (éventuellement) la valeur de balise dans les champs fournis. Choisissez Ajouter.

      4. Si vous voulez exécuter un runbook Automation sur toutes les instances du Compte AWS et de la Région AWS actuels, sélectionnez All instances (Toutes les instances).

  8. Dans la section Input parameters (Paramètres d'entrée), spécifiez les entrées obligatoires. Le cas échéant, vous pouvez choisir un rôle de service IAM dans la liste AutomationAssumeRole.

    Note

    Vous pourriez ne pas avoir besoin de choisir certaines options dans la section Paramètres d'entrée. Cela est dû au fait que vous avez ciblé des ressources à l'aide de balises ou d'un groupe de ressources. Par exemple, si vous avez choisi le runbook AWS-RestartEC2Instance, vous n'avez pas à spécifier ou à choisir d'ID d'instance dans la section Inpunt parameters (Paramètres d'entrée). L'exécution d'Automation localise les instances à redémarrer en utilisant les balises ou le groupe de ressources que vous avez spécifiés.

  9. Utilisez les options de la section Rate control (Contrôle du débit) pour restreindre le nombre de ressources AWS qui peuvent exécuter l'automatisation au sein de chaque paire compte-région.

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

    • Sélectionnez targets (cibles) pour entrer un nombre absolu de cibles pouvant exécuter le flux de travail Automation simultanément.

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

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

    • Sélectionnez erreurs pour indiquer un nombre absolu d'erreurs autorisées avant qu'Automation ne cesse d'envoyer le flux de travail à d'autres ressources.

    • Sélectionnez pourcentage pour indiquer un pourcentage d'erreurs autorisées avant qu'Automation ne cesse d'envoyer le flux de travail à d'autres ressources.

  11. (Facultatif) Choisissez une alarme CloudWatch à appliquer à votre automatisation à des fins de surveillance. Afin d'associer une alarme CloudWatch à votre automatisation, le principal IAM démarrant l'automatisation doit disposer de l'autorisation pour l'action iam:createServiceLinkedRole. Pour de plus amples informations relatives à la configuration des alarmes CloudWatch, consultez Utilisation des alarmes Amazon CloudWatch. Notez que l'activation de votre alarme arrête l'automatisation. Si vous utilisez AWS CloudTrail, vous verrez l'appel d'API dans votre journal.

  12. Sélectionnez Execute (Exécuter).

Pour afficher les automatisations démarrées par votre automatisation du contrôle de débit, dans le panneau de navigation, sélectionnez Automation (Automatisation), puis Show child automations (Afficher les automatisations enfants).

Exécution d'une automatisation avec des cibles et des contrôles du débit (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 exécuter une automatisation avec des cibles et des contrôles du débit.

Pour exécuter une automatisation avec des cibles et des contrôles du débit
  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. 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 à utiliser.

  3. Exécutez la commande suivante pour afficher les détails relatifs au runbook. Remplacez runbook name (nom du runbook) par le nom du runbook pour lequel vous souhaitez afficher les détails. Notez un nom de paramètre (par exemple, InstanceId) que vous souhaitez utiliser pour l'option --target-parameter-name. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

    Linux & macOS
    aws ssm describe-document \ --name runbook name
    Windows
    aws ssm describe-document ^ --name runbook name
    PowerShell
    Get-SSMDocumentDescription ` -Name runbook name
  4. Créez une commande qui utilise les options de cibles et de contrôle du débit que vous souhaitez exécuter. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations.

    Ciblage à l'aide de balises

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook name \ --targets Key=tag:key name,Values=value \ --target-parameter-name parameter name \ --parameters "input parameter name=input parameter value,input parameter 2 name=input parameter 2 value" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook name ^ --targets Key=tag:key name,Values=value ^ --target-parameter-name parameter name ^ --parameters "input parameter name=input parameter value,input parameter 2 name=input parameter 2 value" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "tag:key name" $Targets.Values = "value" Start-SSMAutomationExecution ` DocumentName "runbook name" ` -Targets $Targets ` -TargetParameterName "parameter name" ` -Parameter @{"input parameter name"="input parameter value";"input parameter 2 name"="input parameter 2 value"} ` -MaxConcurrency "10" ` -MaxError "25%"

    Ciblage à l'aide des valeurs de paramètre

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook name \ --targets Key=ParameterValues,Values=value,value 2,value 3 \ --target-parameter-name parameter name \ --parameters "input parameter name=input parameter value" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook name ^ --targets Key=ParameterValues,Values=value,value 2,value 3 ^ --target-parameter-name parameter name ^ --parameters "input parameter name=input parameter value" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ParameterValues" $Targets.Values = "value","value 2","value 3" Start-SSMAutomationExecution ` -DocumentName "runbook name" ` -Targets $Targets ` -TargetParameterName "parameter name" ` -Parameter @{"input parameter name"="input parameter value"} ` -MaxConcurrency "10" ` -MaxError "25%"

    Ciblage à l'aide d'AWS Resource Groups

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook name \ --targets Key=ResourceGroup,Values=Resource group nname \ --target-parameter-name parameter name \ --parameters "input parameter name=input parameter value" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook name ^ --targets Key=ResourceGroup,Values=Resource group name ^ --target-parameter-name parameter name ^ --parameters "input parameter name=input parameter value" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ResourceGroup" $Targets.Values = "Resource group name" Start-SSMAutomationExecution ` -DocumentName "runbook name" ` -Targets $Targets ` -TargetParameterName "parameter name" ` -Parameter @{"input parameter name"="input parameter value"} ` -MaxConcurrency "10" ` -MaxError "25%"

    Ciblage de toutes les instances Amazon EC2 de l'Compte AWS et de l'Région AWS actuels

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook name \ --targets "Key=AWS::EC2::Instance,Values=*" \ --target-parameter-name instanceId \ --parameters "input parameter name=input parameter value" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook name ^ --targets Key=AWS::EC2::Instance,Values=* ^ --target-parameter-name instanceId ^ --parameters "input parameter name=input parameter value" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "AWS::EC2::Instance" $Targets.Values = "*" Start-SSMAutomationExecution ` -DocumentName "runbook name" ` -Targets $Targets ` -TargetParameterName "instanceId" ` -Parameter @{"input parameter name"="input parameter value"} ` -MaxConcurrency "10" ` -MaxError "25%"

    La commande renvoie un ID d'exécution. Copiez cet ID dans le Presse-papiers. Vous pouvez utiliser cet ID pour afficher l'état de l'automatisation.

    Linux & macOS
    {
        "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
    }
    Windows
    {
        "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
    }
    PowerShell
    a4a3c0e9-7efd-462a-8594-01234EXAMPLE
  5. Pour afficher l'automatisation, exécutez la commande suivante. Remplacez chaque automation execution ID (ID d'exécution de l'automatisation) par vos propres informations.

    Linux & macOS
    aws ssm describe-automation-executions \ --filter Key=ExecutionId,Values=automation execution ID
    Windows
    aws ssm describe-automation-executions ^ --filter Key=ExecutionId,Values=automation execution ID
    PowerShell
    Get-SSMAutomationExecutionList | ` Where {$_.AutomationExecutionId -eq "automation execution ID"}
  6. Pour afficher les détails de la progression de l'automatisation, exécutez la commande suivante. Remplacez chaque automation execution ID (ID d'exécution de l'automatisation) par vos propres informations.

    Linux & macOS
    aws ssm get-automation-execution \ --automation-execution-id automation execution ID
    Windows
    aws ssm get-automation-execution ^ --automation-execution-id automation execution ID
    PowerShell
    Get-SSMAutomationExecution ` -AutomationExecutionId automation execution ID

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

    Linux & macOS
    {
        "AutomationExecution": {
            "StepExecutionsTruncated": false,
            "AutomationExecutionStatus": "Success",
            "MaxConcurrency": "1",
            "Parameters": {},
            "MaxErrors": "1",
            "Outputs": {},
            "DocumentName": "AWS-StopEC2Instance",
            "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE",
            "ResolvedTargets": {
                "ParameterValues": [
                    "i-02573cafcfEXAMPLE"
                ],
                "Truncated": false
            },
            "ExecutionEndTime": 1564681619.915,
            "Targets": [
                {
                    "Values": [
                        "DEV"
                    ],
                    "Key": "tag:ENV"
                }
            ],
            "DocumentVersion": "1",
            "ExecutionStartTime": 1564681576.09,
            "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
            "StepExecutions": [
                {
                    "Inputs": {
                        "InstanceId": "i-02573cafcfEXAMPLE"
                    },
                    "Outputs": {},
                    "StepName": "i-02573cafcfEXAMPLE",
                    "ExecutionEndTime": 1564681619.093,
                    "StepExecutionId": "86c7b811-3896-4b78-b897-01234EXAMPLE",
                    "ExecutionStartTime": 1564681576.836,
                    "Action": "aws:executeAutomation",
                    "StepStatus": "Success"
                }
            ],
            "TargetParameterName": "InstanceId",
            "Mode": "Auto"
        }
    }
    Windows
    {
        "AutomationExecution": {
            "StepExecutionsTruncated": false,
            "AutomationExecutionStatus": "Success",
            "MaxConcurrency": "1",
            "Parameters": {},
            "MaxErrors": "1",
            "Outputs": {},
            "DocumentName": "AWS-StopEC2Instance",
            "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE",
            "ResolvedTargets": {
                "ParameterValues": [
                    "i-02573cafcfEXAMPLE"
                ],
                "Truncated": false
            },
            "ExecutionEndTime": 1564681619.915,
            "Targets": [
                {
                    "Values": [
                        "DEV"
                    ],
                    "Key": "tag:ENV"
                }
            ],
            "DocumentVersion": "1",
            "ExecutionStartTime": 1564681576.09,
            "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
            "StepExecutions": [
                {
                    "Inputs": {
                        "InstanceId": "i-02573cafcfEXAMPLE"
                    },
                    "Outputs": {},
                    "StepName": "i-02573cafcfEXAMPLE",
                    "ExecutionEndTime": 1564681619.093,
                    "StepExecutionId": "86c7b811-3896-4b78-b897-01234EXAMPLE",
                    "ExecutionStartTime": 1564681576.836,
                    "Action": "aws:executeAutomation",
                    "StepStatus": "Success"
                }
            ],
            "TargetParameterName": "InstanceId",
            "Mode": "Auto"
        }
    }
    PowerShell
    AutomationExecutionId       : a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    AutomationExecutionStatus   : Success
    CurrentAction               : 
    CurrentStepName             : 
    DocumentName                : AWS-StopEC2Instance
    DocumentVersion             : 1
    ExecutedBy                  : arn:aws:sts::123456789012:assumed-role/Administrator/Admin
    ExecutionEndTime            : 8/1/2019 5:46:59 PM
    ExecutionStartTime          : 8/1/2019 5:46:16 PM
    FailureMessage              : 
    MaxConcurrency              : 1
    MaxErrors                   : 1
    Mode                        : Auto
    Outputs                     : {}
    Parameters                  : {}
    ParentAutomationExecutionId : 
    ProgressCounters            : 
    ResolvedTargets             : Amazon.SimpleSystemsManagement.Model.ResolvedTargets
    StepExecutions              : {i-02573cafcfEXAMPLE}
    StepExecutionsTruncated     : False
    Target                      : 
    TargetLocations             : {}
    TargetMaps                  : {}
    TargetParameterName         : InstanceId
    Targets                     : {tag:Name}
    Note

    Vous pouvez aussi surveiller le statut de l'automatisation dans la console. Dans la liste Automation executions (Exécutions Automation), sélectionnez l'exécution que vous venez juste d'exécuter, puis sélectionnez l'onglet Execution Steps (Étapes d'exécution). Cet onglet affiche le statut des actions de l'automatisation.