Exemples : Enregistrement de tâches avec une fenêtre de maintenance - AWS Systems Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples : Enregistrement de tâches avec une fenêtre de maintenance

Vous pouvez enregistrer une tâche dansRun Command, une fonctionnalité de AWS Systems Manager, avec une fenêtre de maintenance à l'aide du AWS Command Line Interface (AWS CLI), comme illustré dans Enregistrer des tâches avec la fenêtre de maintenance. Vous pouvez également enregistrer des tâches pour les flux de travail, les AWS Lambda fonctions et les AWS Step Functions tâches de Systems Manager Automation, comme expliqué plus loin dans cette rubrique.

Note

Spécifiez une ou plusieurs cibles pour des tâches de fenêtre de maintenance de type Run Command. En fonction de la tâche, les cibles sont facultatives pour les autres types de tâches de la fenêtre de maintenance (Automation AWS Lambda, et AWS Step Functions). Pour de plus amples informations sur l'exécution de tâches qui ne spécifient pas de cibles, consultez Enregistrement de tâches de fenêtre de maintenance sans cibles.

Dans cette rubrique, nous donnons des exemples d'utilisation de la commande AWS Command Line Interface (AWS CLI) register-task-with-maintenance-window pour enregistrer chacun des quatre types de tâches pris en charge avec une fenêtre de maintenance. Les exemples sont uniquement fournis à titre de démonstration. Mais vous pouvez les modifier afin de créer des commandes réelles d'enregistrement des tâches.

Utilisation de l'cli-input-json option --

Afin de mieux gérer vos options de tâches, vous pouvez utiliser l'option de commande --cli-input-json, avec les valeurs d'options référencées dans un fichier JSON.

Pour utiliser l'exemple de contenu de fichier JSON que nous fournissons dans les exemples suivants, effectuez les opérations suivantes sur votre machine locale :

  1. Créez un fichier portant un nom comme MyRunCommandTask.json, MyAutomationTask.json ou tout autre nom de votre choix.

  2. Copiez le contenu de notre exemple JSON dans le fichier.

  3. Modifiez le contenu du fichier pour l'enregistrement de vos tâches, puis enregistrez le fichier.

  4. Dans le répertoire où vous avez stocké le fichier, exécutez la commande suivante. Remplacez le nom de fichier par 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
À propos des pseudo-paramètres

Dans certains exemples, nous utilisons des pseudo-paramètres comme méthode pour transmettre des informations d'ID à vos tâches. Par exemple, vous pouvez utiliser {{TARGET_ID}} et {{RESOURCE_ID}} pour transmettre des ID de ressources AWS à des tâches Automation, Lambda et Step Functions. Pour plus d'informations sur les pseudo-paramètres dans les contenus --task-invocation-parameters, consultez Utilisation de pseudo-paramètres lors de l'enregistrement des tâches de la fenêtre de maintenance.

Plus d'informations

Exemples d'enregistrement de tâches

Les sections suivantes fournissent un exemple de AWS CLI commande pour enregistrer un type de tâche pris en charge et un exemple JSON pouvant être utilisé avec l'--cli-input-jsonoption.

Les exemples suivants montrent comment enregistrer des tâches Systems Manager Run Command avec une fenêtre de maintenance à l'aide de 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\"]}}}"

Contenu JSON à utiliser avec l'option de fichier --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 } } }

Les exemples suivants montrent comment enregistrer des tâches Automation Systems Manager avec une fenêtre de maintenance à l'aide de l' AWS CLI :

AWS CLI commande :

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"

Contenu JSON à utiliser avec l'option de fichier --cli-input-json :

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

Les exemples suivants montrent comment enregistrer des tâches de fonctions Lambda avec une fenêtre de maintenance à l'aide de la AWS CLI.

Pour ces exemples, l'utilisateur qui a créé la fonction Lambda l'a nommée SSMrestart-my-instances et a créé deux paramètres appelés instanceId et targetType.

Important

La politique IAM pour Maintenance Windows exige que vous donniez un préfixe SSM à la fonction Lambda (ou alias). Avant de procéder à l'enregistrement de ce type de tâche, mettez à jour son nom AWS Lambda pour inclureSSM. Par exemple, si votre nom de fonction Lambda est MyLambdaFunction, remplacez-le par SSMMyLambdaFunction.

AWS CLI commande :

Linux & macOS
Important

Si vous utilisez la version 2 du AWS CLI, vous devez inclure l'option --cli-binary-format raw-in-base64-out dans la commande suivante si votre charge utile Lambda n'est pas codée en base64. L'option cli_binary_format n'est disponible que dans la version 2. Pour plus d'informations à ce sujet et sur d'autres paramètres de AWS CLI config fichier, consultez la section Paramètres de config fichiers pris en charge dans le Guide de AWS Command Line Interface l'utilisateur.

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
Important

Si vous utilisez la version 2 du AWS CLI, vous devez inclure l'option --cli-binary-format raw-in-base64-out dans la commande suivante si votre charge utile Lambda n'est pas codée en base64. L'option cli_binary_format n'est disponible que dans la version 2. Pour plus d'informations à ce sujet et sur d'autres paramètres de AWS CLI config fichier, consultez la section Paramètres de config fichiers pris en charge dans le Guide de AWS Command Line Interface l'utilisateur.

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\"}}'

Contenu JSON à utiliser avec l'option de fichier --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 }

Les exemples suivants montrent comment enregistrer des tâches de machine d'état Step Functions avec une fenêtre de maintenance à l'aide de la AWS CLI.

Note

Les tâches de la fenêtre de maintenance prennent uniquement en charge les flux de travail Step Functions Standard State Machine. Ils ne prennent pas en charge les flux de travail Express State Machine. Pour plus d'informations sur les types de flux de travail basés sur des machines à états, consultez la section Flux de travail standard et express dans le guide du AWS Step Functions développeur.

Pour ces exemples, l'utilisateur qui a créé la machine d'état Step Functions à créé une machine d'état nommée SSMMyStateMachine avec un paramètre appelé instanceId.

Important

La politique AWS Identity and Access Management (IAM) pour Maintenance Windows exige que vous préfixiez les noms des machines d'état Step Functions par. SSM Avant de procéder à l'enregistrement de ce type de tâche, vous devez mettre à jour son nom AWS Step Functions pour l'inclureSSM. Par exemple, si le nom de votre machine d'état est MyStateMachine, remplacez-le par SSMMyStateMachine.

AWS CLI commande :

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"

Contenu JSON à utiliser avec l'option de fichier --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 }