Beispiele: Registrieren von Aufgaben für ein Wartungsfenster - AWS Systems Manager

Beispiele: Registrieren von Aufgaben für ein Wartungsfenster

Sie können eine Aufgabe in Run Command, einer Funktion von AWS Systems Manager, mit einem Wartungsfenster registrieren, indem Sie das AWS Command Line Interface (AWS CLI) verwenden, wie in Register tasks with the maintenance window (Aufgaben mit dem Wartungsfenster registrieren) gezeigt. Darüber hinaus haben Sie die Möglichkeit, Aufgaben wie nachstehend veranschaulicht für Systems Manager Automation-Workflows, AWS Lambda-Funktionen und AWS Step Functions-Aufgaben zu registrieren.

Anmerkung

Geben Sie ein oder mehrere Ziele für Wartungsfenster Run Command-Typ-Aufgaben an. Abhängig von der Aufgabe sind Ziele für andere Aufgaben-Typen im Wartungsfenster optional (Automation, AWS Lambda und AWS Step Functions) enthalten. Weitere Informationen zur Ausführung von Aufgaben, die keine Ziele angeben, finden Sie unter Wartungsfenster-Tasks ohne Ziele registrieren.

In diesem Thema finden Sie Beispiele für die Verwendung des AWS Command Line Interface (AWS CLI)-CLI-Befehls register-task-with-maintenance-window zur Registrierung eines jeden der vier unterstützten Aufgabentypen bei einem Wartungsfenster. Die Beispiele dienen nur zur Veranschaulichung. Sie können sie abwandeln, um funktionsfähige Befehle zur Aufgabenregistrierung zu erstellen.

Verwenden der --cli-input-json-Option

Zur besseren Verwaltung Ihrer Aufgabenoptionen können Sie die Befehlsoption --cli-input-json mit in einer JSON-Datei referenzierten Optionswerten verwenden.

Um den Inhalt der JSON-Beispieldatei zu verwenden, den wir in den folgenden Beispielen bereitgestellt haben, führen Sie auf Ihrem lokalen Computer die die folgenden Schritte aus:

  1. Erstellen Sie eine Datei mit einem Namen wie z. B. MyRunCommandTask.json, MyAutomationTask.json oder einem anderen von Ihnen bevorzugten Namen.

  2. Kopieren Sie den Inhalt der JSON-Beispieldatei in die Datei.

  3. Ändern Sie den Inhalt der Datei für Ihre Aufgabenregistrierung ab und speichern Sie dann die Datei.

  4. Führen Sie in demselben Verzeichnis, in dem Sie die Datei gespeichert haben, den folgenden Befehl aus. Ersetzen Sie MyFile.json durch Ihren Dateinamen.

    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-Parameter in Wartungsfenster-Aufgaben

In einigen Beispielen verwenden wir Pseudoparameter als Methode zur Übergabe von ID-Informationen an Ihre Aufgaben. Zum Beispiel werden {{TARGET_ID}} und {{RESOURCE_ID}} verwendet, um IDs von AWS-Ressourcen an Automation-, Lambda- und Step Functions-Aufgaben zu übergeben. Weitere Informationen zu Pseudoparametern im --task-invocation-parameters-Inhalt finden Sie unter Verwendung von Pseudo-Parametern bei der Registrierung von Aufgaben im Wartungsfenster.

Weitere Informationen

Beispiele der Aufgabenregistrierung

In den folgenden Abschnitten finden Sie einen AWS CLI-Beispielbefehl für die Registrierung eines unterstützten Aufgabentyps und ein JSON-Beispiel, das mit der --cli-input-json-Option verwendet werden kann.

Die folgenden Beispiele veranschaulichen, wie Sie Aufgaben von Systems Manager Run Command-Aufgaben mithilfe der AWS CLI bei einem Wartungsfenster registrieren.

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

JSON-Inhalt für die Verwendung mit der Dateioption --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 } } }

Die folgenden Beispiele veranschaulichen, wie Systems Manager Automation-Aufgaben mithilfe der bei einem Wartungsfenster registriert werden AWS CLI:

AWS CLI-Befehl:

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"

JSON-Inhalt für die Verwendung mit der Dateioption --cli-input-json:

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

Die folgenden Beispiele veranschaulichen, wie Lambda-Funktionsaufgaben mithilfe der AWS CLI bei einem Wartungsfenster registriert werden.

Bei diesen Beispielen hat der Benutzer, der die Lambda-Funktion erstellt hat, ihr den Namen SSMrestart-my-instances gegeben und zwei Parameter mit dem Namen instanceId und targetType erstellt.

Wichtig

Die IAM-Richtlinie für Maintenance Windows erfordert, dass Sie den Namen von Lambda-Funktionen (oder Aliasen) das Präfix SSM hinzufügen. Bevor Sie mit dem Registrieren dieser Art von Aufgabe fortfahren, müssen Sie ihren Namen in AWS Lambda so aktualisieren, dass in ihm SSM enthalten ist. Beispiel: Wenn Ihr Lambda-Funktionsname MyLambdaFunction lautet, ändern Sie ihn in SSMMyLambdaFunction.

AWS CLI-Befehl:

Linux & macOS
Wichtig

Wenn Sie Version 2 des AWS CLI verwenden, müssen Sie die Option --cli-binary-format raw-in-base64-out in den folgenden Befehl aufnehmen, wenn Ihre Lambda-Nutzlast nicht base64-kodiert ist. Die Option cli_binary_format ist nur in Version 2 verfügbar. Informationen über diese und andere AWS CLI config-Dateieinstellungen finden Sie unter Unterstützte configDateieinstellungen im AWS Command Line Interface-Benutzerhandbuch.

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
Wichtig

Wenn Sie Version 2 des AWS CLI verwenden, müssen Sie die Option --cli-binary-format raw-in-base64-out in den folgenden Befehl aufnehmen, wenn Ihre Lambda-Nutzlast nicht base64-kodiert ist. Die Option cli_binary_format ist nur in Version 2 verfügbar. Informationen über diese und andere AWS CLI config-Dateieinstellungen finden Sie unter Unterstützte configDateieinstellungen im AWS Command Line Interface-Benutzerhandbuch.

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

JSON-Inhalt für die Verwendung mit der Dateioption --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 }

Die folgenden Beispiele veranschaulichen, wie Sie Aufgaben von Step Functions-Zustandsautomaten mithilfe der AWS CLI bei einem Wartungsfenster registrieren.

Anmerkung

Aufgaben im Wartungsfenster unterstützen nur Zustandsmaschinen-Workflows von Step Functions Standard. Sie unterstützen keine Express-Zustandsmaschinen-Workflows. Informationen zu Workflowtypen für Zustandsmaschinen finden Sie unter Standard- gegenüber Express-Workflows im AWS Step Functions-Entwicklerhandbuch.

In diesen Beispielen erstellte der Benutzer, der den Step Functions-Zustandsautomaten erstellt hatte, einen Zustandsautomaten mit dem Namen „SSMMyStateMachine“ und dem Parameter „instanceId“.

Wichtig

Die AWS Identity and Access Management (IAM)-Richtlinie für Maintenance Windows erfordert, dass Sie die Namen von Step Functions-Zustandsautomaten mit dem Präfix SSM versehen. Bevor Sie mit dem Registrieren dieser Art von Aufgabe fortfahren, müssen Sie ihren Namen in AWS Step Functions so aktualisieren, dass in ihm SSM enthalten ist. Beispiel: Wenn der Name des Zustandsautomaten MyStateMachine lautet, ändern Sie ihn in SSMMyStateMachine.

AWS CLI-Befehl:

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"

JSON-Inhalt für die Verwendung mit der Dateioption --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 }