Ejecución de automatizaciones que utilicen controles de frecuencia y destinos - AWS Systems Manager

Ejecución de automatizaciones que utilicen controles de frecuencia y destinos

Con AWS Systems Manager Automation, puede ejecutar automatizaciones en una flota de recursos de AWS mediante el uso de destinos. Además, puede controlar la implementación de la automatización en su flota al especificar un valor de simultaneidad y un umbral de error. El valor de simultaneidad determina la cantidad de recursos que pueden ejecutar la automatización de forma simultánea. Automation también proporciona un modo de simultaneidad adaptativa que puede elegir. La simultaneidad adaptativa escala automáticamente su cuota de automatización desde 100 automatizaciones que se ejecutan simultáneamente hasta 500. El umbral de error determina la cantidad de automatizaciones que pueden fallar antes de que Systems Manager deje de enviar la automatización a otros recursos. Las características de umbral de simultaneidad y error se denominan colectivamente controles de frecuencia.

Para obtener más información acerca de la simultaneidad y los umbrales de error, consulte Acerca de la simultaneidad y los umbrales de error. Para obtener más información sobre los destinos, consulte Acerca de destinos.

Los siguientes procedimientos muestran cómo activar una simultaneidad adaptativa y cómo ejecutar una automatización con controles de frecuencia y destinos a través de la consola de Systems Manager y la AWS Command Line Interface (AWS CLI).

Ejecución de una automatización con controles de frecuencia y destinos (consola)

El siguiente procedimiento describe cómo utilizar la consola de Systems Manager para ejecutar una automatización con controles de frecuencia y destinos.

Para ejecutar una automatización con controles de frecuencia y destinos

  1. Abra la consola de AWS Systems Manager en https://console.aws.amazon.com/systems-manager/.

  2. En el panel de navegación, elija Automation (Automatización) y, después, seleccione Execute automation (Ejecutar automatización).

  3. En la lista Automation document (Documento de Automation), elija un manual de procedimientos. Elija una o más opciones en el panel Document categories (Categorías de documentos) para filtrar documentos SSM según su propósito. Para ver un manual de procedimientos que le pertenezca, seleccione la pestaña Owned by me (De mi propiedad). Para ver un manual de procedimientos que se haya compartido con su cuenta, elija la pestaña Compartido conmigo. Para ver todos los manuales de procedimientos, seleccione la pestaña All documents (Todos los documentos).

    nota

    Puede ver información acerca de un manual de procedimientos al seleccionar su nombre.

  4. En la sección Document details (Detalles del documento), verifique que Document version (Versión del documento) esté establecido como la versión que desea ejecutar. El sistema incluye las siguientes opciones de versión:

    • Default version at runtime (Versión predeterminada en tiempo de ejecución): seleccione esta opción si el manual de procedimientos de Automation se actualiza de forma periódica y se asigna una nueva versión predeterminada.

    • Latest version at runtime (Última versión en tiempo de ejecución): seleccione esta opción si el manual de procedimientos de Automation se actualiza de forma periódica y desea ejecutar la versión que se ha actualizado más recientemente.

    • 1 (Default) (1 [Predeterminado]): seleccione esta opción para ejecutar la primera versión del documento, que es la versión predeterminada.

  5. Elija Next (Siguiente).

  6. En la sección Execution Mode (Modo de ejecución), seleccione Rate Control (Control de frecuencia). Debe utilizar este modo o Multi-account and Region (Varias cuentas y regiones) si desea utilizar controles de frecuencia y destinos.

  7. En la sección Targets (Destinos), seleccione cómo quiere que se indiquen los recursos de AWS donde desea ejecutar la automatización como destino. Estas opciones son obligatorias.

    1. Use la lista Parameter (Parámetro) para elegir un parámetro. Los elementos de la lista Parameter (Parámetro) se determinan a partir de los parámetros en el manual de procedimientos de Automation que seleccionó al inicio de este procedimiento. Al elegir un parámetro, se define el tipo de recurso en el que ejecuta la el flujo de trabajo de automatización.

    2. Utilice la lista Targets (Destinos) para elegir cómo indicar los recursos de destino.

      1. Si eligió indicar recursos como destino mediante el uso de valores de parámetro, ingrese el valor del parámetro que eligió en la sección Input parameters (Parámetros de entrada).

      2. Si eligió los recursos de destino con AWS Resource Groups, entonces elija el nombre del grupo de la lista Resource Group (Grupo de recursos).

      3. Si eligió indicar recursos de destino mediante el uso de etiquetas, introduzca la clave de etiqueta y, opcionalmente, un valor de etiqueta en los campos correspondientes. Elija Add.

      4. Si desea ejecutar un manual de procedimientos de Automation en todas las instancias de la Cuenta de AWS y la Región de AWS actuales, seleccione All instances (Todas las instancias).

  8. En la sección Input parameters (Parámetros de entrada), especifique las entradas necesarias: De forma opcional, puede elegir un rol de servicio de IAM de la lista AutomationAssumeRole.

    nota

    Es posible que no tenga que elegir algunas de las opciones de la sección Input parameters (Parámetros de entrada). Esto se debe a que ha indicado recursos como destino a través de etiquetas o un grupo de recursos. Por ejemplo, si eligió el manual de procedimientos AWS-RestartEC2Instance, no necesita especificar ni elegir los ID de instancias en la sección Input parameters (Parámetros de entrada). La ejecución de Automation localiza las instancias que se deben reiniciar a través de las etiquetas o los grupos de recursos que haya especificado.

  9. Utilice las opciones de la sección Rate control (Control de frecuencia) para restringir el número de recursos de AWS que pueden ejecutar Automation dentro de cada par de cuenta-región.

    En la sección Concurrency (Simultaneidad), elija una opción:

    • Seleccione targets (destinos) para introducir un número absoluto de destinos que pueden ejecutar el flujo de trabajo de Automation simultáneamente.

    • Seleccione percentage (porcentaje) para introducir un porcentaje del destino definido que puede ejecutar el flujo de trabajo de Automation simultáneamente.

  10. En la sección Error threshold (Umbral de error), elija una opción:

    • Elija errors (errores) para introducir un número absoluto de errores permitidos antes de que la Automation deje de enviar el flujo de trabajo a otros recursos.

    • Elija percentage (porcentaje) para introducir un porcentaje de errores permitidos antes de que la Automation deje de enviar el flujo de trabajo a otros recursos.

  11. Elija Execute (Ejecutar).

Para ver las automatizaciones que inició la automatización de control de frecuencia, en el panel de navegación, seleccione Automation y, a continuación, elija Show child automations (Mostrar automatizaciones secundarias).

Ejecución de una automatización con controles de frecuencia y destinos (línea de comandos)

El siguiente procedimiento describe cómo utilizar la AWS CLI (en Linux o Windows) o las AWS Tools for PowerShell para ejecutar una automatización con controles de frecuencia y destinos.

Para ejecutar una automatización con controles de frecuencia y destinos

  1. Si aún no lo ha hecho, instale y configure la AWS CLI o las AWS Tools for PowerShell.

    Para obtener información, consulte Instalar o actualizar herramientas de línea de comandos de AWS.

  2. Ejecute el siguiente comando para ver una lista de documentos.

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

    Anote el nombre del manual de procedimientos que desea usar.

  3. Ejecute el siguiente comando para ver detalles acerca del manual de procedimientos. Especifique el nombre de parámetro (por ejemplo, InstanceId) que desea utilizar para la opción --target-parameter-name. Este parámetro determina el tipo de recurso en el que se ejecuta la automatización.

    Linux & macOS
    aws ssm describe-document \ --name runbook_name
    Windows
    aws ssm describe-document ^ --name runbook_name
    PowerShell
    Get-SSMDocumentDescription ` -Name runbook_name
  4. Cree un comando que utilice las opciones de control de frecuencia y destinos que desee ejecutar. A continuación se muestran algunos comandos de plantilla para ayudarle.

    Indicar destino mediante etiquetas

    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_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" \ --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_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" ^ --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 "RunbookName" ` -Targets $Targets ` -TargetParameterName "Parameter_Name" ` -Parameter @{"input_parameter_name1"="input_parameter_value1";"input_parameter_name2"="input_parameter_value2"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    Indicar destino mediante valores de parámetros

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets Key=ParameterValues,Values=value_1,value_2,value_3 \ --target-parameter-name parameter_name \ --parameters "input_parameter_name1=input_parameter_value1" \ --max-concurrency 10 \ --max-errors 25%
    Windows
    aws ssm start-automation-execution ^ --document-name runbook_name ^ --targets Key=ParameterValues,Values=value_1,value_2,value_3 ^ --target-parameter-name parameter_name ^ --parameters "input_parameter_name1=input_parameter_value1" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "ParameterValues" $Targets.Values = "value_1","value_2","value_3" Start-SSMAutomationExecution ` -DocumentName "RunbookName" ` -Targets $Targets ` -TargetParameterName "Parameter_Name" ` -Parameter @{"input_parameter_name1"="input_parameter_value1"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    Indicar destino mediante AWS Resource Groups

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets Key=ResourceGroup,Values=Resource_Group_name \ --target-parameter-name parameter_name \ --parameters "input_parameter_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" \ --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_name1=input_parameter_value1,input_parameter_name2=input_parameter_value2" ^ --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 "RunbookName" ` -Targets $Targets ` -TargetParameterName "Parameter_Name" ` -Parameter @{"input_parameter_name1"="input_parameter_value1";"input_parameter_name2"="input_parameter_value2"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    Indicar como destino todas las instancias en la Cuenta de AWS y la Región de AWS actual

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook_name \ --targets "Key=AWS::EC2::Instance,Values=*" \ --target-parameter-name instanceId \ --parameters "input_parameter_name1=input_parameter_value1" \ --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_name1=input_parameter_value1" ^ --max-concurrency 10 ^ --max-errors 25%
    PowerShell
    $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target $Targets.Key = "AWS::EC2::Instance" $Targets.Values = "*" Start-SSMAutomationExecution ` -DocumentName "RunbookName" ` -Targets $Targets ` -TargetParameterName "instanceId" ` -Parameter @{"input_parameter_name1"="input_parameter_value1"} ` -MaxConcurrency "a_number_of_instances_or_a_percentage_of_target_set" ` -MaxError "a_number_of_errors_or_a_percentage_of_target_set"

    El comando devuelve un ID de ejecución. Copie este ID en el portapapeles. Puede utilizar este ID para ver el estado de la automatización.

    Linux & macOS
    {
        "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
    }
    Windows
    {
        "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
    }
    PowerShell
    a4a3c0e9-7efd-462a-8594-01234EXAMPLE
  5. Ejecute el siguiente comando para ver la automatización.

    Linux & macOS
    aws ssm describe-automation-executions \ --filter Key=ExecutionId,Values=a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    Windows
    aws ssm describe-automation-executions ^ --filter Key=ExecutionId,Values=a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    PowerShell
    Get-SSMAutomationExecutionList | ` Where {$_.AutomationExecutionId -eq "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"}
  6. Ejecute el siguiente comando para ver detalles acerca del progreso de la automatización.

    Linux & macOS
    aws ssm get-automation-execution \ --automation-execution-id a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    Windows
    aws ssm get-automation-execution ^ --automation-execution-id a4a3c0e9-7efd-462a-8594-01234EXAMPLE
    PowerShell
    Get-SSMAutomationExecution ` -AutomationExecutionId a4a3c0e9-7efd-462a-8594-01234EXAMPLE

    El sistema devuelve información similar a la siguiente.

    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}
    nota

    También puede monitorear el estado de la automatización en la consola. En la lista Automation executions (Ejecuciones de automatización), elija la automatización que acaba de ejecutar y, a continuación, seleccione la pestaña Execution steps (Pasos de ejecución). Esta pestaña muestra el estado de las acciones de la automatización.