Programación de automatizaciones con periodos de mantenimiento - AWS Systems Manager

Programación de automatizaciones con periodos de mantenimiento

Puede iniciar una automatización mediante la configuración de un manual de procedimientos como una tarea registrada para un periodo de mantenimiento. Al registrar el manual de procedimientos como una tarea registrada, el periodo de mantenimiento ejecuta la automatización durante el periodo de mantenimiento programado.

Por ejemplo, supongamos que crea un manual de procedimientos denominado CreateAMI que genera una Amazon Machine Image (AMI) de las instancias registradas como destinos en el periodo de mantenimiento. Para especificar el manual de procedimientos CreateAMI (y la automatización correspondiente) como una tarea registrada de un periodo de mantenimiento, primero debe crear un periodo de mantenimiento y registrar los destinos. A continuación, utilice el siguiente procedimiento para especificar el documento CreateAMI como una tarea registrada en el periodo de mantenimiento. Cuando se inicia el periodo de mantenimiento durante el periodo programado, el sistema ejecuta la automatización y crea una AMI de los destinos registrados.

Para obtener información acerca de la creación de manuales de procedimientos de Automation, consulte Creación de sus propios manuales de procedimientos. Automation es una capacidad de AWS Systems Manager.

Utilice los siguientes procedimientos para configurar una automatización como una tarea registrada para un periodo de mantenimiento a través de la consola de AWS Systems Manager, la AWS Command Line Interface (AWS CLI) o las AWS Tools for Windows PowerShell.

Registro de una tarea de automatización en un periodo de mantenimiento (consola)

El siguiente procedimiento describe cómo utilizar la consola de Systems Manager para configurar una automatización como una tarea registrada para un periodo de mantenimiento.

Antes de empezar

Antes de realizar el siguiente procedimiento, debe crear un período de mantenimiento y registrar al menos un destino. Para obtener más información, consulte los siguientes procedimientos:

Para configurar una automatización como una tarea registrada para un periodo de mantenimiento
  1. Abra la consola de AWS Systems Manager en https://console.aws.amazon.com/systems-manager/.

  2. En el panel de navegación de la izquierda, seleccione Maintenance Windows y, a continuación, el período de mantenimiento con el que desee registrar una tarea de Automation.

  3. Elija Actions. A continuación, seleccione Register Automation task (Registrar tarea de Automation) para ejecutar la automatización que desee en los destinos mediante el uso de un manual de procedimientos.

  4. En Name (Nombre), escriba un nombre para la tarea.

  5. En Descripción, escriba una descripción.

  6. En Document (Documento), elija el manual de procedimientos que defina las tareas que se ejecutarán.

  7. En Document version (Versión de documento), elija la versión del manual de procedimientos que se utilizará.

  8. En Task priority (Prioridad de tarea), especifique una prioridad para esta tarea. 1 es la prioridad más alta. Las tareas de un período de mantenimiento se programan por orden de prioridad; las tareas que tengan la misma prioridad se programan en paralelo.

  9. En la sección Targets (Destinos), si el manual de procedimientos que eligió ejecuta tareas sobre recursos, identifique los destinos en los que desea ejecutar esta automatización. Para ello, especifique las etiquetas o seleccione las instancias de forma manual.

    nota

    Si desea pasar los recursos a través de parámetros de entrada en lugar de destinos, no necesita especificar un destino de periodo de mantenimiento.

    En muchos casos, no es necesario especificar de forma explícita un destino para una tarea de automatización. Por ejemplo, suponga que crea una tarea de tipo Automation para actualizar una Amazon Machine Image (AMI) para Linux mediante el manual de procedimientos AWS-UpdateLinuxAmi. Cuando se ejecuta la tarea, la AMI se actualiza con los paquetes de distribución de Linux y el software de Amazon disponibles más recientes. Las instancias nuevas que se crearon a partir de la AMI ya tienen estas actualizaciones instaladas. Como el ID de la AMI que se actualizará se especifica en los parámetros de entrada del manual de procedimientos, no es necesario volver a especificar un destino en la tarea del periodo de mantenimiento.

    Para obtener información acerca de las tareas del periodo de mantenimiento que no requieren destinos, consulte Registro de tareas del periodo de mantenimiento sin destinos.

  10. (Opcional) En Control de velocidad:

    nota

    Si la tarea que ejecuta no especifica destinos, no es necesario que especifique controles de frecuencia.

    • En Concurrency (Simultaneidad), especifique un número o un porcentaje de destinos en los que desee ejecutar la automatización de forma simultánea.

      Si ha seleccionado destinos mediante la elección de pares de clave-valor para la etiqueta y no está seguro de la cantidad de destinos que utilizarán las etiquetas seleccionadas, limite el número de automatizaciones que se pueden ejecutar a la vez mediante la especificación de un porcentaje.

      Mientras transcurre el periodo de mantenimiento, se inicia una nueva automatización por cada destino. Hay un límite de 100 automatizaciones simultáneas por Cuenta de AWS. Si especifica una tasa de simultaneidad mayor que 100, las automatizaciones simultáneas que superen el valor 100 se agregarán automáticamente a la cola de automatizaciones. Para obtener más información, consulte Service Quotas de Systems Manager en la Referencia general de Amazon Web Services.

    • En Error threshold (Umbral de error), especifique cuándo desea que se detenga la ejecución de la automatización en otros destinos después de que se presentan errores en un número o un porcentaje de destinos. Por ejemplo, si especifica tres errores, Systems Manager deja de ejecutar las automatizaciones cuando se recibe el cuarto error. Los destinos que sigan procesando la automatización también pueden enviar errores.

  11. En la sección Input Parameters (Parámetros de entrada), especifique los parámetros para el manual de procedimientos. En el caso de los manuales de procedimientos, el sistema completará automáticamente algunos de los valores. Puede conservar o reemplazar estos valores.

    importante

    Si así lo desea, puede especificar un rol de asunción de Automation para los manuales de procedimientos. Si no especifica ningún rol para este parámetro, la automatización asume el rol de servicio del periodo de mantenimiento que elija en el paso 11. Por tanto, debe asegurarse de que el rol de servicio del periodo de mantenimiento que elija tenga los permisos de AWS Identity and Access Management (IAM) adecuados para realizar las acciones definidas en el manual de procedimientos.

    Por ejemplo, el rol vinculado al servicio para Systems Manager no tiene el permiso de IAM ec2:CreateSnapshot, que es necesario para usar el manual de procedimientos AWS-CopySnapshot. En este caso, debe utilizar un rol de servicio del período de mantenimiento personalizado o especificar un rol de asunción de Automation con los permisos ec2:CreateSnapshot. Para obtener más información, consulte Configuración de Automation.

  12. En el área IAM service role (Rol de servicio de IAM), elija un rol con el fin de proporcionar permisos a Systems Manager para inicie la automatización.

    Para crear un rol de servicio personalizado para tareas de periodo de mantenimiento, consulte Utilice la consola para configurar permisos para periodos de mantenimiento.

  13. Seleccione Register Automation task (Registrar tarea de Automation).

Registro de una tarea de Automation en un periodo de mantenimiento (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 configurar una automatización como una tarea registrada para un periodo de mantenimiento.

Antes de empezar

Antes de realizar el siguiente procedimiento, debe crear un período de mantenimiento y registrar al menos un destino. Para obtener más información, consulte los siguientes procedimientos:

Para configurar una automatización como una tarea registrada para un periodo de mantenimiento
  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. Cree un comando para configurar una automatización como una tarea registrada para un periodo de mantenimiento. Reemplace cada example resource placeholder con su propia información.

    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
    nota

    Si configura una automatización como una tarea registrada a través de la AWS CLI, utilice el parámetro --Task-Invocation-Parameters para especificar los parámetros que se pasarán a una tarea cuando se ejecute. No utilice el parámetro --Task-Parameters. El parámetro --Task-Parameters es un parámetro heredado.

    En el caso de las tareas del periodo de mantenimiento sin un destino especificado, no puede proporcionar valores para --max-errors ni --max-concurrency. En su lugar, el sistema inserta un valor de marcador 1, el cual podría notificarse en la respuesta a los comandos, como describe-maintenance-window-tasks y get-maintenance-window-task. Estos valores no afectan la ejecución de la tarea y se pueden ignorar.

    Para obtener información acerca de las tareas del periodo de mantenimiento que no requieren destinos, consulte Registro de tareas del periodo de mantenimiento sin destinos.

    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
    nota

    Si configura una automatización como una tarea registrada a través de la AWS CLI, utilice el parámetro --task-invocation-parameters para especificar los parámetros que se pasarán a una tarea cuando se ejecute. No utilice el parámetro --task-parameters. El parámetro --task-parameters es un parámetro heredado.

    En el caso de las tareas del periodo de mantenimiento sin un destino especificado, no puede proporcionar valores para --max-errors ni --max-concurrency. En su lugar, el sistema inserta un valor de marcador 1, el cual podría notificarse en la respuesta a los comandos, como describe-maintenance-window-tasks y get-maintenance-window-task. Estos valores no afectan la ejecución de la tarea y se pueden ignorar.

    Para obtener información acerca de las tareas del periodo de mantenimiento que no requieren destinos, consulte Registro de tareas del periodo de mantenimiento sin destinos.

    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
    nota

    Si configura una automatización como una tarea registrada a través de las AWS Tools for PowerShell, utilice el parámetro -Automation_Parameter para especificar los parámetros que se pasarán a una tarea cuando se ejecute. No utilice el parámetro -TaskParameters. El parámetro -TaskParameters es un parámetro heredado.

    En el caso de las tareas del periodo de mantenimiento sin un destino especificado, no puede proporcionar valores para -MaxError ni -MaxConcurrency. En su lugar, el sistema inserta un valor de marcador de posición 1, el cual podría notificarse en la respuesta a los comandos, como Get-SSMMaintenanceWindowTaskList y Get-SSMMaintenanceWindowTask. Estos valores no afectan la ejecución de la tarea y se pueden ignorar.

    Para obtener información acerca de las tareas del periodo de mantenimiento que no requieren destinos, consulte Registro de tareas del periodo de mantenimiento sin destinos.

    En el siguiente ejemplo, se configura una automatización como una tarea registrada en un periodo de mantenimiento con prioridad 1. También demuestra la omisión de las opciones --targets, --max-errors y --max-concurrency para la tarea de un periodo de mantenimiento sin destino. La automatización utiliza el manual de procedimientos AWS-StartEC2Instance y el rol de asunción de Automation especificado para activar instancias EC2 registradas como destinos en el periodo de mantenimiento. El periodo de mantenimiento ejecuta la automatización de manera simultánea en 5 instancias como máximo en cualquier momento. Además, la tarea registrada deja de ejecutarse en más instancias durante un intervalo determinado si el recuento de errores es superior a 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

    El comando devuelve detalles de la nueva tarea registrada similares a los siguientes.

    Linux & macOS
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. Para ver la tarea registrada, ejecute el siguiente comando. Reemplace maintenance windows ID con su propia información.

    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

    El sistema devuelve información similar a la siguiente.

    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