Ejecución de operaciones automatizadas a escala - AWS Systems Manager

Ejecución de operaciones automatizadas a escala

Con Automatización de AWS Systems Manager, 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. Las características de umbral de simultaneidad y error se denominan colectivamente controles de frecuencia. 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.

Para obtener más información acerca de la simultaneidad y los umbrales de error, consulte Control de las automatizaciones a escala. Para obtener más información sobre los destinos, consulte Asignación de objetivos de una automatización.

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 Automatización y, después, seleccione Ejecutar automatización.

  3. En la lista Documento de automatización, elija un manual de procedimientos. Elija una o más opciones en el panel 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 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 Todos los documentos.

    nota

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

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

    • Versión predeterminada en tiempo de ejecución: seleccione esta opción si el manual de procedimientos de automatización se actualiza de forma periódica y se asigna una nueva versión predeterminada.

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

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

  5. Elija Siguiente.

  6. En la sección Modo de ejecución, seleccione Control de velocidad. Debe utilizar este modo o Varias cuentas y regiones si desea utilizar controles de frecuencia y destinos.

  7. En la sección 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 Parámetro para elegir un parámetro. Los elementos de la lista Parámetro se determinan a partir de los parámetros en el manual de procedimientos de automatización que seleccionó al inicio de este procedimiento. Al elegir un parámetro, se define el tipo de recurso en el que se ejecuta el flujo de trabajo de automatización.

    2. Utilice la lista 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 Parámetros de entrada.

      2. Si eligió los recursos de destino con AWS Resource Groups, entonces elija el nombre del grupo de la lista 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 Agregar.

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

  8. En la sección 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 instancia en la sección 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 Control de velocidad para restringir el número de recursos de AWS que pueden ejecutar la automatización dentro de cada par de cuenta-región.

    En la sección Simultaneidad, elija una opción:

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

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

  10. En la sección Umbral de error, elija una opción:

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

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

  11. (Opcional) Elija una alarma de CloudWatch que desee aplicar a la automatización para fines de monitoreo. Para adjuntar una alarma de CloudWatch a su automatización, la entidad principal de IAM que ejecuta esta última debe tener permiso para la acción iam:createServiceLinkedRole. Para obtener más información sobre las alarmas de CloudWatch, consulte Uso de alarmas de Amazon CloudWatch. Tenga en cuenta que si la alarma se activa, la automatización se detiene. Si usa AWS CloudTrail, verá la llamada a la API en el registro de seguimiento.

  12. Elija 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 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 Instalación o actualización de la última versión de la AWS CLI e Instalación de AWS Tools for PowerShell.

  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. Reemplace nombre del runbook con el nombre del manual de procedimientos cuyos detalles desee ver. Además, indique el nombre de parámetro (por ejemplo, InstanceId) que desee 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. Reemplace cada example resource placeholder con su propia información.

    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 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%"

    Indicar destino mediante valores de parámetros

    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%"

    Indicar destino mediante 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%"

    Indicar todas las instancias de Amazon EC2 en la Cuenta de AWS y la Región de AWS actuales

    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%"

    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. Reemplace cada automation execution ID con su propia información.

    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. Ejecute el siguiente comando para ver detalles acerca del progreso de la automatización. Reemplace cada automation execution ID con su propia información.

    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

    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 Ejecuciones de automatización, elija la automatización que acaba de ejecutar y, a continuación, seleccione la pestaña Execution steps. Esta pestaña muestra el estado de las acciones de la automatización.