

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Führen Sie AWS Systems Manager Automation Automation-Aufgaben synchron über AWS Step Functions aus
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions"></a>

*Elie El Khoury, Amazon Web Services*

## Zusammenfassung
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-summary"></a>

Dieses Muster erklärt, wie die Integration AWS Step Functions mit erfolgt. AWS Systems Manager Es verwendet AWS SDK-Dienstintegrationen, um die Systems Manager **startAutomationExecution**Manager-API mit einem Task-Token aus einem State-Machine-Workflow aufzurufen, und pausiert, bis das Token mit einem erfolgreichen oder fehlerhaften Aufruf zurückkehrt. Um die Integration zu demonstrieren, implementiert dieses Muster einen Wrapper für Automatisierungsdokumente (Runbook) um das `AWS-RunPowerShellScript` OR-Dokument und wird verwendet`.waitForTaskToken`, um `AWS-RunShellScript` oder synchron aufzurufen. `AWS-RunShellScript` `AWS-RunPowerShellScript` Weitere Informationen zu AWS SDK-Dienstintegrationen in Step Functions finden Sie im [AWS Step Functions Entwicklerhandbuch](https://docs.aws.amazon.com/step-functions/latest/dg/supported-services-awssdk.html).

Step Functions**** ist ein visueller Workflow-Dienst mit geringem Programmieraufwand, mit dem Sie mithilfe von Diensten verteilte Anwendungen erstellen, IT- und Geschäftsprozesse automatisieren und Daten- und Machine-Learning-Pipelines erstellen können. AWS Workflows verwalten Fehler, Wiederholungen, Parallelisierung, Serviceintegrationen und Beobachtbarkeit, sodass Sie sich auf die wertvollere Geschäftslogik konzentrieren können.

Automatisierung, eine Funktion von AWS Systems Manager, vereinfacht allgemeine Wartungs-, Bereitstellungs- und Problembehebungsaufgaben für AWS-Services Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS), Amazon Redshift und Amazon Simple Storage Service (Amazon S3). Durch die Automatisierung haben Sie eine detaillierte Kontrolle über die Parallelität Ihrer Automatisierungen. Sie können beispielsweise angeben, auf wie viele Ressourcen gleichzeitig zugegriffen werden soll und wie viele Fehler auftreten können, bevor eine Automatisierung gestoppt wird.

Einzelheiten zur Implementierung, einschließlich Runbook-Schritten, Parametern und Beispielen, finden Sie im Abschnitt [Zusätzliche Informationen](#run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-additional).

## Voraussetzungen und Einschränkungen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Konto AWS 
+ AWS Identity and Access Management (IAM) -Berechtigungen für den Zugriff auf Step Functions und Systems Manager
+ Eine EC2 Instanz, auf der Systems Manager Agent (SSM Agent) [installiert](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html) ist
+ [Ein IAM-Instanzprofil für Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html), das an die Instance angehängt ist, auf der Sie das Runbook ausführen möchten
+ Eine Step Functions Functions-Rolle mit den folgenden IAM-Berechtigungen (die dem Prinzip der geringsten Rechte folgen):

```
{
             "Effect": "Allow",
             "Action": "ssm:StartAutomationExecution",
             "Resource": "*"
 }
```

**Produktversionen**
+ SSM-Dokumentschema Version 0.3 oder höher
+ SSM Agent Version 2.3.672.0 oder höher

## Architektur
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Step Functions
+ AWS Systems Manager -Automatisierung

**Zielarchitektur**

![\[Architektur für die synchrone Ausführung von Systems Manager Manager-Automatisierungsaufgaben über Step Functions\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/47c19e4f-d68d-4f91-bb68-202098757529/images/2d248aae-d858-4565-8af2-593cde0da780.png)


**Automatisierung und Skalierung**
+ Dieses Muster bietet eine AWS CloudFormation Vorlage, mit der Sie die Runbooks auf mehreren Instanzen bereitstellen können. (Weitere Informationen finden Sie im [Implementierungs-Repository von GitHub Step Functions und Systems Manager](https://github.com/aws-samples/amazon-stepfunctions-ssm-waitfortasktoken).)

## Tools
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, sie zu verwenden.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt werden. AWS Cloud Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten.

**Code**

Der Code für dieses Muster ist im [Implementierungs-Repository von GitHub Step Functions und Systems Manager](https://github.com/aws-samples/amazon-stepfunctions-ssm-waitfortasktoken) verfügbar. 

## Epen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-epics"></a>

### Runbooks erstellen
<a name="create-runbooks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie die CloudFormation Vorlage herunter. | Laden Sie die `ssm-automation-documents.cfn.json` Vorlage aus dem `cloudformation ` Ordner des GitHub Repositorys herunter. | AWS DevOps | 
| Runbooks erstellen. | Melden Sie sich bei der an AWS-Managementkonsole, öffnen Sie die [CloudFormation Konsole](https://console.aws.amazon.com/cloudformation/) und stellen Sie die Vorlage bereit. Weitere Informationen zum Bereitstellen von CloudFormation Vorlagen finden Sie in der CloudFormation Dokumentation unter [Erstellen eines Stacks auf der CloudFormation Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). Die CloudFormation Vorlage stellt drei Ressourcen bereit:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions.html) | AWS DevOps | 

### Erstellen Sie eine Beispiel-Zustandsmaschine
<a name="create-a-sample-state-machine"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Teststatus-Maschine.  | Folgen Sie den Anweisungen im [AWS Step Functions Entwicklerhandbuch](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html), um eine Zustandsmaschine zu erstellen und auszuführen. Verwenden Sie für die Definition den folgenden Code. Achten Sie darauf, den `InstanceIds` Wert mit der ID einer gültigen Systems Manager-fähigen Instanz in Ihrem Konto zu aktualisieren.<pre>{<br />  "Comment": "A description of my state machine",<br />  "StartAt": "StartAutomationWaitForCallBack",<br />  "States": {<br />    "StartAutomationWaitForCallBack": {<br />      "Type": "Task",<br />      "Resource": "arn:aws:states:::aws-sdk:ssm:startAutomationExecution.waitForTaskToken",<br />      "Parameters": {<br />        "DocumentName": "SfnRunCommandByInstanceIds",<br />        "Parameters": {<br />          "InstanceIds": [<br />            "i-1234567890abcdef0"<br />          ],<br />          "taskToken.$": "States.Array($$.Task.Token)",<br />          "workingDirectory": [<br />            "/home/ssm-user/"<br />          ],<br />          "Commands": [<br />            "echo \"This is a test running automation waitForTaskToken\" >> automation.log",<br />            "sleep 100"<br />          ],<br />          "executionTimeout": [<br />              "10800"<br />          ],<br />          "deliveryTimeout": [<br />              "30"<br />          ],<br />          "shell": [<br />              "Shell"<br />          ]<br />            }<br />      },<br />      "End": true<br />    }<br />  }<br />}</pre>Dieser Code ruft das Runbook auf, um zwei Befehle auszuführen, die den `waitForTaskToken` Aufruf von Systems Manager Automation demonstrieren.Der `shell` Parameterwert (`Shell`oder`PowerShell`) bestimmt, ob das Automatisierungsdokument ausgeführt wird `AWS-RunShellScript` oder`AWS-RunPowerShellScript`.Die Aufgabe schreibt „Dies ist ein waitForTask Automatisierungstoken für die Testausführung“ in die `/home/ssm-user/automation.log` Datei und ruht dann 100 Sekunden lang, bevor sie mit dem Aufgabentoken antwortet und die nächste Aufgabe im Workflow freigibt.Wenn Sie stattdessen das `SfnRunCommandByTargets` Runbook aufrufen möchten, ersetzen Sie den `Parameters` Abschnitt des vorherigen Codes durch den folgenden:<pre>"Parameters": {<br />          "Targets": [<br />            {<br />              "Key": "InstanceIds",<br />              "Values": [<br />                "i-02573cafcfEXAMPLE",<br />                "i-0471e04240EXAMPLE"<br />              ]<br />            }<br />          ],</pre> | AWS DevOps | 
| Aktualisieren Sie die IAM-Rolle für den State Machine. | Im vorherigen Schritt wird automatisch eine dedizierte IAM-Rolle für den State Machine erstellt. Es gewährt jedoch keine Berechtigungen zum Aufrufen des Runbooks. Aktualisieren Sie die Rolle, indem Sie die folgenden Berechtigungen hinzufügen:<pre>{<br />      "Effect": "Allow",<br />      "Action": "ssm:StartAutomationExecution",<br />      "Resource": "*"<br /> }</pre> | AWS DevOps | 
| Validieren Sie die synchronen Aufrufe. | Führen Sie die Zustandsmaschine aus, um den synchronen Aufruf zwischen Step Functions und Systems Manager Automation zu validieren. Eine Beispielausgabe finden Sie im Abschnitt [Zusätzliche Informationen](#run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-additional).  | AWS DevOps | 

## Zugehörige Ressourcen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-resources"></a>
+ [Erste Schritte mit AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html) (*AWS Step Functions Entwicklerhandbuch*)
+ [Warten Sie auf einen Rückruf mit dem Task-Token](https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token) (*AWS Step Functions Developer Guide*, Service Integration Patterns)
+ [API-Aufrufe send\$1task\$1success und [send\$1task\$1failure](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_failure.html)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_success.html) (Boto3-Dokumentation) 
+ [AWS Systems Manager Automatisierung AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) *(Benutzerhandbuch*)

## Zusätzliche Informationen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-additional"></a>

**Implementierungsinformationen**

Dieses Muster stellt eine CloudFormation Vorlage bereit, die zwei Systems Manager Manager-Runbooks bereitstellt:
+ `SfnRunCommandByInstanceIds`führt den `AWS-RunPowerShellScript` Befehl `AWS-RunShellScript` or mithilfe einer Instanz aus. IDs
+ `SfnRunCommandByTargets`führt den `AWS-RunPowerShellScript` Befehl `AWS-RunShellScript` or mithilfe von Zielen aus.

Jedes Runbook implementiert vier Schritte, um einen synchronen Aufruf zu erreichen, wenn die `.waitForTaskToken` Option in Step Functions verwendet wird.


| 
| 
| Schritt | Action | Description | 
| --- |--- |--- |
| **1** | `Branch` | Prüft den `shell` Parameterwert (`Shell`oder`PowerShell`), um zu entscheiden, ob die Ausführung `AWS-RunShellScript` für Linux oder `AWS-RunPowerShellScript` für Windows erfolgen soll. | 
| **2** | `RunCommand_Shell` oder `RunCommand_PowerShell` | Nimmt mehrere Eingaben entgegen und führt den `RunPowerShellScript` Befehl `RunShellScript` oder aus. Weitere Informationen finden Sie auf der Registerkarte **Details** für das Dokument `RunCommand_Shell` oder `RunCommand_PowerShell` Automation in der Systems Manager Manager-Konsole. | 
| **3** | `SendTaskFailure` | Wird ausgeführt, wenn Schritt 2 abgebrochen oder abgebrochen wird. Es ruft die Step Functions [send\$1task\$1failure](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_failure.html) API auf, die drei Parameter als Eingabe akzeptiert: das von der Zustandsmaschine übergebene Token, den Fehlerfehler und eine Beschreibung der Fehlerursache. | 
| **4** | `SendTaskSuccess` | Wird ausgeführt, wenn Schritt 2 erfolgreich ist. Es ruft die Step Functions [send\$1task\$1success](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_success.html) API auf, die das von der Zustandsmaschine übergebene Token als Eingabe akzeptiert. | 

**Runbook-Parameter**

`SfnRunCommandByInstanceIds`Runbook:


| 
| 
| Parametername | Typ | Optional oder erforderlich | Description | 
| --- |--- |--- |--- |
| `shell` | Zeichenfolge | Erforderlich | Die Instanz-Shell, um zu entscheiden, ob sie `AWS-RunShellScript` für Linux oder `AWS-RunPowerShellScript` für Windows ausgeführt werden sollen. | 
| `deliveryTimeout` | Ganzzahl | Optional | Die Wartezeit in Sekunden, bis ein Befehl an den SSM-Agenten auf einer Instance übermittelt wird. Dieser Parameter hat einen Mindestwert von 30 (0,5 Minuten) und einen Höchstwert von 2592000 (720 Stunden). | 
| `executionTimeout` | Zeichenfolge | Optional | Die Zeit in Sekunden, die ein Befehl bis zum Abschluss benötigt, bevor er als fehlgeschlagen betrachtet wird. Der Standardwert ist 3600 (1 Stunde). Der Höchstwert ist 172800 (48 Stunden). | 
| `workingDirectory` | Zeichenfolge | Optional | Der Pfad zum Arbeitsverzeichnis auf der Instance. | 
| `Commands` | StringList | Erforderlich | Das auszuführende Shell-Skript oder der auszuführende Befehl. | 
| `InstanceIds` | StringList | Erforderlich | Die IDs Instanzen, in denen Sie den Befehl ausführen möchten. | 
| `taskToken` | Zeichenfolge | Erforderlich | Das Task-Token, das für Rückrufantworten verwendet werden soll. | 

`SfnRunCommandByTargets`Runbook:


| 
| 
| Name | Typ | Optional oder erforderlich | Description | 
| --- |--- |--- |--- |
| `shell` | Zeichenfolge | Erforderlich | Die Instanz-Shell, um zu entscheiden, ob sie `AWS-RunShellScript` für Linux oder `AWS-RunPowerShellScript` für Windows ausgeführt werden sollen. | 
| `deliveryTimeout` | Ganzzahl | Optional | Die Wartezeit in Sekunden, bis ein Befehl an den SSM-Agenten auf einer Instance übermittelt wird. Dieser Parameter hat einen Mindestwert von 30 (0,5 Minuten) und einen Höchstwert von 2592000 (720 Stunden). | 
| `executionTimeout` | Ganzzahl | Optional | Die Zeit in Sekunden, die ein Befehl bis zum Abschluss benötigt, bevor er als fehlgeschlagen betrachtet wird. Der Standardwert ist 3600 (1 Stunde). Der Höchstwert ist 172800 (48 Stunden). | 
| `workingDirectory` | Zeichenfolge | Optional | Der Pfad zum Arbeitsverzeichnis auf der Instance. | 
| `Commands` | StringList | Erforderlich | Das auszuführende Shell-Skript oder der auszuführende Befehl. | 
| `Targets` | MapList | Erforderlich | Eine Reihe von Suchkriterien, die Instanzen anhand von Schlüssel-Wert-Paaren identifizieren, die Sie angeben. Beispiel: `[{"Key":"InstanceIds","Values":["i-02573cafcfEXAMPLE","i-0471e04240EXAMPLE"]}]` | 
| `taskToken` | Zeichenfolge | Erforderlich | Das Task-Token, das für Rückrufantworten verwendet werden soll. | 

**Beispielausgabe**

Die folgende Tabelle enthält ein Beispiel für die Ausgabe der Step-Funktion. Sie zeigt, dass die Gesamtlaufzeit zwischen Schritt 5 (`TaskSubmitted`) und Schritt 6 (`TaskSucceeded`) über 100 Sekunden beträgt. Dies zeigt, dass die Step-Funktion auf die Beendigung des `sleep 100` Befehls gewartet hat, bevor sie zur nächsten Aufgabe im Workflow überging.


| 
| 
| ID (ID) | Typ | Schritt | Ressource | Verstrichene Zeit (ms) | Zeitstempel | 
| --- |--- |--- |--- |--- |--- |
| **1** | `ExecutionStarted` |  | - | 0 | 11. März 2022 14:50:34.303 Uhr | 
| **2** | `TaskStateEntered` | `StartAutomationWaitForCallBack` | - | 40 | 11. März 2022 14:50:34,343 Uhr | 
| **3** | `TaskScheduled` | `StartAutomationWaitForCallBack` | - | 40 | 11. März 2022 14:50:34,343 Uhr | 
| **4** | `TaskStarted` | `StartAutomationWaitForCallBack` | - | 154 | 11. März 2022 14:50:34.457 Uhr | 
| **5** | `TaskSubmitted` | `StartAutomationWaitForCallBack` | - | 657 | 11. März 2022 14:50:34.960 Uhr | 
| **6** | `TaskSucceeded` | `StartAutomationWaitForCallBack` | - | 10:3835 | 11. März 2022 14:52:18.138 Uhr | 
| **7** | `TaskStateExited` | `StartAutomationWaitForCallBack` | - | 1038 60 | 11. März 2022 14:52:18.163 Uhr | 
| **8** | `ExecutionSucceeded` |  | - | 103 897 | 11. März 2022 14:52:18.200 Uhr | 