Exemplos: Registrar tarefas em uma janela de manutenção - AWS Systems Manager

Exemplos: Registrar tarefas em uma janela de manutenção

Você pode registrar uma tarefa no Run Command, um recurso do AWS Systems Manager, com uma janela de manutenção usando o AWS Command Line Interface (AWS CLI), conforme demonstrado em Registre tarefas com a janela de manutenção. Você também pode registrar tarefas para fluxos de trabalho do Systems Manager Automation, funções do AWS Lambda, e tarefas do AWS Step Functions, conforme demonstrado abaixo, neste tópico.

nota

Especifique um ou mais destinos para as tarefas da janela de manutenção do tipo Run Command. Dependendo da tarefa, os destinos serão opcionais para outros tipos de tarefas da janela de manutenção (Automation, AWS Lambda e AWS Step Functions). Para obter mais informações sobre como executar tarefas que não especificam destinos, consulte Registrar tarefas da janela de manutenção sem destinos.

Neste tópico, fornecemos exemplos de como usar o comando AWS Command Line Interface (AWS CLI) da register-task-with-maintenance-window para registrar cada um dos quatro tipos de tarefa compatíveis em uma janela de manutenção. Os exemplos são apenas para demonstração, mas você pode modificá-los para criar comandos de registro de tarefa funcionais.

Uso da opção --cli-input-json

Para gerenciar melhor suas opções de tarefas, use a opção de comando --cli-input-json, com valores de opção referenciados em um arquivo JSON.

Para usar o conteúdo do arquivo JSON de exemplo fornecido nos exemplos a seguir, faça o seguinte em sua máquina local:

  1. Crie um arquivo com um nome, como MyRunCommandTask.json, MyAutomationTask.json ou outro nome de sua preferência.

  2. Copie o conteúdo do nosso exemplo de JSON no arquivo.

  3. Modifique o conteúdo do arquivo para o registro de sua tarefa e salve o arquivo.

  4. No mesmo diretório em que armazenou o arquivo, execute o seguinte comando. Substitua o nome do arquivo por MyFile.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
Sobre pseudoparâmetros

Em alguns exemplos, usamos pseudoparâmetros como método para enviar informações de ID às tarefas. Por exemplo, {{TARGET_ID}} e {{RESOURCE_ID}} podem ser usados para passar os IDs dos recursos da AWS somente para tarefas do Automation, do Lambda e do Step Functions. Para obter mais informações sobre pseudoparâmetros em conteúdo --task-invocation-parameters, consulte Usar pseudoparâmetros ao registrar tarefas da janela de manutenção.

Mais informações

Exemplos de registro de tarefas

As seções a seguir fornecem um exemplo de comando da AWS CLI para registrar um tipo de tarefa compatível e um exemplo de JSON que pode ser usado com a opção --cli-input-json.

Os exemplos a seguir demonstram como registrar tarefas Run Command do Systems Manager em uma janela de manutenção usando a 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\"]}}}"

Conteúdo JSON para uso com a opção de arquivo --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": "DOC-EXAMPLE-BUCKET", "OutputS3KeyPrefix": "S3-PREFIX", "TimeoutSeconds": 3600 } } }

Os exemplos a seguir demonstram como registrar tarefas do Systems Manager Automation em uma janela de manutenção usando a AWS CLI:

Comando da 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"

Conteúdo JSON para uso com a opção de arquivo --cli-input-json:

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

Os exemplos a seguir demonstram como registrar tarefas de função do Lambda em uma janela de manutenção usando a AWS CLI:

Para esses exemplos, o usuário que criou a função do Lambda a nomeou como SSMrestart-my-instances e criou dois parâmetros chamados instanceId e targetType.

Importante

A política do Maintenance Windows para IAM requer a adição do prefixo SSM aos nomes das funções Lambda (ou alias) . Antes de prosseguir com o registro desse tipo de tarefa, atualize o nome no AWS Lambda para incluir SSM. Por exemplo, se o nome da função Lambda for MyLambdaFunction, altere-o para SSMMyLambdaFunction.

Comando da AWS CLI:

Linux & macOS
Importante

Se você estiver usando a versão 2 do AWS CLI, inclua a opção --cli-binary-format raw-in-base64-out no comando a seguir se sua carga útil do Lambda não for codificada em base64. A opção cli_binary_format está disponível apenas na versão 2. Para obter informações sobre essa e outras configurações do arquivo AWS CLI config, consulte Configurações de arquivo config compatíveis no Manual do usuário do 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

Se você estiver usando a versão 2 do AWS CLI, inclua a opção --cli-binary-format raw-in-base64-out no comando a seguir se sua carga útil do Lambda não for codificada em base64. A opção cli_binary_format está disponível apenas na versão 2. Para obter informações sobre essa e outras configurações do arquivo AWS CLI config, consulte Configurações de arquivo config compatíveis no Manual do usuário do 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\"}}'

Conteúdo JSON para uso com a opção de arquivo --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 }

Os exemplos a seguir demonstram como registrar tarefas da máquina de estado do Step Functions em uma janela de manutenção usando a AWS CLI:

nota

As tarefas da janela de manutenção oferecem suporte somente aos fluxos de trabalho da máquina de estado Step Functions Standard. Elas não oferecem suporte a fluxos de trabalho de máquinas de estado Express. Para obter informações sobre os tipos de fluxo de trabalho da máquina de estado, consulte Fluxos de trabalho Standard vs. Express no Guia do desenvolvedor do AWS Step Functions.

Para esses exemplos, o usuário que criou a máquina de estado do Step Functions criou uma máquina de estado chamada SSMMyStateMachine com um parâmetro chamado instanceId.

Importante

A política do AWS Identity and Access Management (IAM) para a Maintenance Windows requer o uso do prefixo Step Functions nos nomes das máquinas de estado do SSM. Antes de prosseguir com o registro desse tipo de tarefa, é necessário atualizar o nome no AWS Step Functions a fim de incluir SSM. Por exemplo, se o nome da máquina de estado for MyStateMachine, altere para SSMMyStateMachine.

Comando da 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"

Conteúdo JSON para uso com a opção de arquivo --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 }