Esempi: registrazione delle operazioni con una finestra di manutenzione - AWS Systems Manager

Esempi: registrazione delle operazioni con una finestra di manutenzione

È possibile registrare un'attività in Run Command, una funzionalità di AWS Systems Manager, con una finestra di manutenzione che utilizza il AWS Command Line Interface (AWS CLI), come dimostrato in Registrazione di attività con la finestra di manutenzione. È anche possibile eseguire la registrazione di task per i flussi di lavoro di automazione di Systems Manager, le funzioni di AWS Lambda e le attività di AWS Step Functions, come descritto di seguito in questo argomento.

Nota

Specifica uno o più target per le attività di tipo Run Command della finestra di manutenzione. A seconda dell'attività, gli obiettivi sono facoltativi per altri tipi di attività della finestra di manutenzione (Automazione, AWS Lambda e AWS Step Functions). Per ulteriori informazioni sull'esecuzione di attività che non specificano destinazioni, consulta Registrazione delle attività della finestra di manutenzione senza destinazioni.

In questo argomento, vengono presentati alcuni esempi di utilizzo del comando AWS Command Line Interface (AWS CLI) register-task-with-maintenance-window per registrare ciascuno dei quattro tipi di task supportati con una finestra di manutenzione. Gli esempi sono solo a titolo dimostrativo, ma è possibile modificarli per creare comandi di registrazione di task funzionanti.

Utilizzo dell'opzione --cli-input-json

Per ottimizzare la gestione delle opzioni relative ai task, è possibile utilizzare l'opzione di comando --cli-input-json, con i valori delle opzioni inclusi in un file JSON.

Per utilizzare il contenuto del file JSON di esempio disponibile negli esempi, eseguire la procedura seguente nel computer locale:

  1. Creare un file assegnandogli, ad esempio, il nome MyRunCommandTask.json, MyAutomationTask.json oppure il nome desiderato.

  2. Copiare il contenuto dell'esempio JSON nel file.

  3. Modificare il contenuto del file per la registrazione del task, quindi salvare il file.

  4. Nella stessa directory in cui è stato salvato il file, eseguire il comando seguente. Sostituire MyFile.json con il nome di file desiderato.

    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
Pseudo parametri nelle attività della finestra di manutenzione

In alcuni esempi vengono utilizzati gli pseudoparametri come metodo per passare le informazioni sugli ID ai task. Ad esempio, {{TARGET_ID}} e {{RESOURCE_ID}} possono essere utilizzati per passare gli ID delle risorse AWS all'automazione, alle attività Step Functions e Lambda. Per ulteriori informazioni sugli pseudoparametri nel parametro --task-invocation-parameters, consulta Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione.

Ulteriori informazioni

Esempi di registrazione dei task

Le seguenti sezioni forniscono un comando di esempio dell'AWS CLI per la registrazione di un tipo di task supportato e un esempio JSON che possono essere utilizzati con l'opzione --cli-input-json.

I seguenti esempi illustrano come registrare i task Run Command di Systems Manager con una finestra di manutenzione utilizzando l'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\"]}}}"

Contenuto JSON da utilizzare con l'opzione di file --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 } } }

I seguenti esempi illustrano come registrare i task di automazione di Systems Manager con una finestra di manutenzione utilizzando l' AWS CLI:

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

Contenuto JSON da utilizzare con l'opzione di file --cli-input-json:

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

I seguenti esempi illustrano come registrare i task delle funzioni di Lambda con una finestra di manutenzione utilizzando l' AWS CLI.

Per questi esempi, l'utente che ha creato la funzione Lambda ha denominato tale funzione SSMrestart-my-instances e ha creato due parametri denominati instanceId e targetType.

Importante

La policy IAM per Maintenance Windows prevede che il nome (o l'alias) della funzione Lambda sia associato al prefisso SSM. Prima di procedere alla registrazione di questo tipo di task, è necessario aggiornare il relativo nome in AWS Lambda in modo da includere SSM. Ad esempio, se il nome della funzione Lambda è MyLambdaFunction, modifica tale nome in SSMMyLambdaFunction.

Comando AWS CLI:

Linux & macOS
Importante

Se si utilizza la versione 2 del AWS CLI, devi includere l'opzione --cli-binary-format raw-in-base64-out nel seguente comando se il tuo payload Lambda non è codificato con base64. L'opzione cli_binary_format è disponibile solo nella versione 2. Per informazioni su questo e altre impostazioni del file AWS CLI config, consulta Impostazioni del file config supportate nella Guida per l'utente di 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 si utilizza la versione 2 del AWS CLI, devi includere l'opzione --cli-binary-format raw-in-base64-out nel seguente comando se il tuo payload Lambda non è codificato con base64. L'opzione cli_binary_format è disponibile solo nella versione 2. Per informazioni su questo e altre impostazioni del file AWS CLI config, consulta Impostazioni del file config supportate nella Guida per l'utente di 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\"}}'

Contenuto JSON da utilizzare con l'opzione di file --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 }

I seguenti esempi illustrano come registrare i task delle macchine a stati Step Functions con una finestra di manutenzione utilizzando l' AWS CLI.

Nota

Le attività della finestra di manutenzione supportano solo i flussi di lavoro delle macchine a stati standard di Step Functions. Non supportano i flussi di lavoro delle macchine a stati express. Per informazioni sui tipi di flusso di lavoro delle macchine a stati, consulta Standard vs. Express Workflows (Differenze flussi di lavoro standard ed express) nella Guida per gli sviluppatori di AWS Step Functions.

Per questi esempi, l'utente che ha creato le macchine a stati Step Functions ha creato una macchina a stati denominata SSMMyStateMachine con un parametro denominato instanceId.

Importante

La policy (IAM) AWS Identity and Access Management per Maintenance Windows prevede che i nomi delle macchine a stati Step Functions siano associati al prefisso SSM. Prima di procedere alla registrazione di questo tipo di task, è necessario aggiornare il relativo nome in AWS Step Functions in modo da includere SSM. Ad esempio, se il nome della macchina a stati è MyStateMachine, modifica tale nome in SSMMyStateMachine.

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

Contenuto JSON da utilizzare con l'opzione di file --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 }