Ejemplos: registrar tareas en un periodo de mantenimiento - AWS Systems Manager

Ejemplos: registrar tareas en un periodo de mantenimiento

Puede registrar una tarea en Run Command, una capacidad de AWS Systems Manager, con un periodo de mantenimiento mediante la AWS Command Line Interface (AWS CLI), como se muestra en Registro de tareas con el periodo de mantenimiento. También puede registrar tareas para flujos de trabajo de Systems Manager Automation, funciones de AWS Lambda y tareas de AWS Step Functions, como se muestra más adelante en este tema.

nota

Especifique uno o más destinos para las tareas de tipo Run Command del periodo de mantenimiento. Según la tarea, los destinos son opcionales para otros tipos de tarea de periodo de mantenimiento (Automation, AWS Lambda y AWS Step Functions). Para obtener más información acerca de la ejecución de tareas que no especifican destinos, consulte Registro de tareas del periodo de mantenimiento sin destinos.

En este tema, se proporcionan ejemplos de cómo utilizar el comando register-task-with-maintenance-window de la AWS Command Line Interface (AWS CLI) para registrar cada uno de los cuatro tipos de tareas compatibles en un periodo de mantenimiento. Los ejemplos solo tienen fines de demostración, pero puede modificarlos para crear los comandos de registro de las tareas en uso.

Uso de la opción --cli-input-json

Para administrar mejor las opciones de la tarea, puede utilizar la opción de comando --cli-input-json, con valores de opción a los que se hace referencia en un archivo JSON.

Para utilizar el contenido del archivo JSON de ejemplo que proporcionamos en los siguientes ejemplos, haga lo siguiente en su equipo local:

  1. Cree un archivo con un nombre como, por ejemplo, MyRunCommandTask.json, MyAutomationTask.json o cualquier otro nombre de su preferencia.

  2. Copie el contenido de la muestra de JSON en el archivo.

  3. Modifique el contenido del archivo para el registro de la tarea y, a continuación, guarde el archivo.

  4. En el mismo directorio en el que almacenó el archivo, ejecute el comando siguiente. Sustituya el nombre de archivo por MiArchivo.json.

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --cli-input-json file://MyFile.json
    Windows
    aws ssm register-task-with-maintenance-window ^ --cli-input-json file://MyFile.json
Acerca de los pseudoparámetros

En algunos ejemplos, utilizamos los pseudoparámetros como método para transferir información del ID a sus tareas. Por ejemplo, {{TARGET_ID}} y {{RESOURCE_ID}} se pueden utilizar para pasar los ID de los recursos de AWS a tareas de Automation, Lambda y Step Functions. Para obtener más información sobre los pseudoparámetros en el contenido --task-invocation-parameters, consulte Utilización de pseudoparámetros en el registro de las tareas del periodo de mantenimiento.

Más información

Ejemplos de registro de tareas

En las secciones siguientes se proporciona un comando de la AWS CLI de ejemplo para registrar un tipo de tarea admitido y una muestra de JSON que se puede utilizar con la opción --cli-input-json.

Los siguientes ejemplos muestran cómo registrar tareas de Systems Manager Run Command con un periodo de mantenimiento mediante la AWS CLI.

Linux & macOS
aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --task-arn "AWS-RunShellScript" \ --max-concurrency 1 --max-errors 1 --priority 10 \ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \ --task-type "RUN_COMMAND" \ --task-invocation-parameters '{"RunCommand":{"Parameters":{"commands":["df"]}}}'
Windows
aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --task-arn "AWS-RunShellScript" ^ --max-concurrency 1 --max-errors 1 --priority 10 ^ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^ --task-type "RUN_COMMAND" ^ --task-invocation-parameters "{\"RunCommand\":{\"Parameters\":{\"commands\":[\"df\"]}}}"

Contenido JSON para usar con la opción de archivo --cli-input-json:

{ "TaskType": "RUN_COMMAND", "WindowId": "mw-0c50858d01EXAMPLE", "Description": "My Run Command task to update SSM Agent on an instance", "MaxConcurrency": "1", "MaxErrors": "1", "Name": "My-Run-Command-Task", "Priority": 10, "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "AWS-UpdateSSMAgent", "TaskInvocationParameters": { "RunCommand": { "Comment": "A TaskInvocationParameters test comment", "NotificationConfig": { "NotificationArn": "arn:aws:sns:region:123456789012:my-sns-topic-name", "NotificationEvents": [ "All" ], "NotificationType": "Invocation" }, "OutputS3BucketName": "amzn-s3-demo-bucket", "OutputS3KeyPrefix": "S3-PREFIX", "TimeoutSeconds": 3600 } } }

Los siguientes ejemplos muestran cómo registrar tareas de Systems Manager Automation con un periodo de mantenimiento mediante la AWS CLI:

Comando de la AWS CLI:

Linux & macOS
aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --task-arn "AWS-RestartEC2Instance" \ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \ --task-type AUTOMATION \ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \ --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" \ --description "Automation task to restart EC2 instances"
Windows
aws ssm register-task-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --task-arn "AWS-RestartEC2Instance" ^ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{TARGET_ID}}'}}" ^ --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" ^ --description "Automation task to restart EC2 instances"

Contenido JSON para usar con la opción de archivo --cli-input-json:

{ "WindowId": "mw-0c50858d01EXAMPLE", "TaskArn": "AWS-PatchInstanceWithRollback", "TaskType": "AUTOMATION","TaskInvocationParameters": { "Automation": { "DocumentVersion": "1", "Parameters": { "instanceId": [ "{{RESOURCE_ID}}" ] } } } }

Los siguientes ejemplos muestran cómo registrar las tareas de la función de Lambda con un periodo de mantenimiento mediante la AWS CLI.

En estos ejemplos, el usuario que creó la función de Lambda la nombró SSMrestart-my-instances y creó dos parámetros denominados instanceId y targetType.

importante

La política de IAM para Maintenance Windows requiere que se agregue el prefijo SSM a los nombres de la función (o alias) de Lambda. Antes de continuar con el registro de este tipo de tareas, actualice el nombre en AWS Lambda para incluir SSM. Por ejemplo, si el nombre de la función de Lambda es MyLambdaFunction, cámbielo a SSMMyLambdaFunction.

Comando de la AWS CLI:

Linux & macOS
importante

Si está utilizando la versión 2 de la AWS CLI, debe incluir la opción --cli-binary-format raw-in-base64-out en el siguiente comando si la carga de Lambda no está codificada en base64. La opción cli_binary_format solo está disponible en la versión 2. Para obtener información acerca de esta y otras configuraciones del archivo config de la AWS CLI, consulte Configuraciones del archivo config admitidas en la Guía del usuario de AWS Command Line Interface.

aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" \ --description "A description for my LAMBDA example task" --task-type "LAMBDA" \ --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" \ --task-invocation-parameters '{"Lambda":{"Payload":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}","Qualifier": "$LATEST"}}'
PowerShell
importante

Si está utilizando la versión 2 de la AWS CLI, debe incluir la opción --cli-binary-format raw-in-base64-out en el siguiente comando si la carga de Lambda no está codificada en base64. La opción cli_binary_format solo está disponible en la versión 2. Para obtener información acerca de esta y otras configuraciones del archivo config de la AWS CLI, consulte Configuraciones del archivo config admitidas en la Guía del usuario de AWS Command Line Interface.

aws ssm register-task-with-maintenance-window ` --window-id "mw-0c50858d01EXAMPLE" ` --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ` --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" ` --description "A description for my LAMBDA example task" --task-type "LAMBDA" ` --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" ` --task-invocation-parameters '{\"Lambda\":{\"Payload\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\",\\\"targetType\\\":\\\"{{TARGET_TYPE}}\\\"}\",\"Qualifier\": \"$LATEST\"}}'

Contenido JSON para usar con la opción de archivo --cli-input-json:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "SSM_RestartMyInstances", "TaskType": "LAMBDA", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "Lambda": { "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE", "Payload": "{ \"instanceId\": \"{{RESOURCE_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }", "Qualifier": "$LATEST" } }, "Name": "My-Lambda-Task", "Description": "A description for my LAMBDA task", "Priority": 5 }

Los siguientes ejemplos muestran cómo registrar tareas de máquina de estado de Step Functions con un periodo de mantenimiento mediante la AWS CLI.

nota

Las tareas de los periodos de mantenimiento solo admiten los flujos de trabajo de máquinas de estado estándar de Step Functions. No son compatibles con los flujos de trabajo de máquinas de estado rápidas. Para obtener información sobre los tipos de flujos de trabajo de máquinas de estado, consulte Flujos de trabajo estándar en comparación con flujos de trabajo rápidos en la Guía para desarrolladores de AWS Step Functions.

En estos ejemplos, el usuario que creó la máquina de estado de Step Functions, creó una máquina de estado llamada SSMMyStateMachine con un parámetro denominado instanceId.

importante

La política de AWS Identity and Access Management (IAM) para Maintenance Windows requiere que se agregue el prefijo SSM a los nombres de máquina de estado de Step Functions. Antes de proceder al registro de este tipo de tarea, debe actualizar su nombre en AWS Step Functions para que incluya SSM. Por ejemplo, si el nombre de la máquina de estado es MyStateMachine, cámbielo a SSMMyStateMachine.

Comando de la AWS CLI:

Linux & macOS
aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE \ --task-type STEP_FUNCTIONS \ --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_ID}}\"}", "Name":"{{INVOCATION_ID}}"}}' \ --priority 0 --max-concurrency 10 --max-errors 5 \ --name "My-Step-Functions-Task" --description "A description for my Step Functions task"
PowerShell
aws ssm register-task-with-maintenance-window ` --window-id "mw-0c50858d01EXAMPLE" ` --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ` --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE ` --task-type STEP_FUNCTIONS ` --task-invocation-parameters '{\"StepFunctions\":{\"Input\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\"}\", \"Name\":\"{{INVOCATION_ID}}\"}}' ` --priority 0 --max-concurrency 10 --max-errors 5 ` --name "My-Step-Functions-Task" --description "A description for my Step Functions task"

Contenido JSON para usar con la opción de archivo --cli-input-json:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "SSM_MyStateMachine", "TaskType": "STEP_FUNCTIONS", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "StepFunctions": { "Input": "{ \"instanceId\": \"{{TARGET_ID}}\" }", "Name": "{{INVOCATION_ID}}" } }, "Name": "My-Step-Functions-Task", "Description": "A description for my Step Functions task", "Priority": 5 }