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.
Ressourcen für Amazon Simple Workflow Service
Dieses Kapitel enthält zusätzliche Ressourcen und Referenzinformationen, die bei der Entwicklung von Workflows mit Amazon SWF nützlich sind.
Themen
Amazon SWF-Timeout-Typen
Um sicherzustellen, dass Workflow-Ausführungen korrekt ausgeführt werden, können Sie mit Amazon SWF verschiedene Arten von Timeouts festlegen. Einige Zeitüberschreitungen legen fest, wie lange der Workflow insgesamt ausgeführt werden kann. Andere Zeitüberschreitungen legen fest, wie lange es dauern darf, bis Aktivitätsaufgaben einem Worker zugewiesen werden, und wie lange die Ausführung einer Aufgabe ab der Planung dauern darf. Alle Timeouts in der Amazon SWF SWF-API sind in Sekunden angegeben. Amazon SWF unterstützt die Zeichenfolge auch NONE
als Timeout-Wert, was bedeutet, dass es kein Timeout gibt.
Für Zeitüberschreitungen im Zusammenhang mit Entscheidungs- und Aktivitätsaufgaben fügt Amazon SWF dem Workflow-Ausführungsverlauf ein Ereignis hinzu. Die Attribute des Ereignisses geben Auskunft darüber, welche Art von Timeout eingetreten ist und welche Entscheidungs- oder Aktivitätsaufgabe betroffen war. Amazon SWF plant auch eine Entscheidungsaufgabe. Wenn der Entscheider die neue Entscheidungsaufgabe erhält, sieht er das Timeout-Ereignis in der Historie und ergreift die entsprechende Aktion, indem er die RespondDecisionTaskCompletedAktion aufruft.
Eine Aufgabe gilt vom Zeitpunkt der Planung bis zum Schließen der Aufgabe als offen. Für Aufgaben, die gerade von einem Worker verarbeitet werden, wird daher der Status "offen" gesendet. Eine Aufgabe ist geschlossen, wenn ein Worker sie als abgeschlossen, abgebrochen oder fehlgeschlagen meldet. Eine Aufgabe kann auch von Amazon SWF aufgrund eines Timeouts geschlossen werden.
Zeitüberschreitungen in Workflow- und Entscheidungsaufgaben
Die folgende Abbildung zeigt, wie Zeitüberschreitungen für Workflow- und Entscheidungsaufgaben sich auf die Lebensdauer eines Workflows auswirken:
![Lebensdauer eines Workflows mit Zeitüberschreitungen](images/workflow_timeouts.png)
Für Workflow- und Entscheidungsaufgaben gibt es zwei relevante Zeitüberschreitungstypen:
-
Workflow-Start to Close (
timeoutType: START_TO_CLOSE
) — Dieses Timeout gibt die maximale Zeit an, die bis zum Abschluss einer Workflow-Ausführung benötigt werden kann. Bei der Registrierung eines Workflows wird ein Standardwert festgelegt, der jedoch beim Starten des Workflows durch andere Werte überschrieben werden kann. Wenn dieses Timeout überschritten wird, schließt Amazon SWF die Workflow-Ausführung und fügt dem Workflow-Ausführungsverlauf ein Ereignis des Typs WorkflowExecutionTimedOuthinzu. Neben demtimeoutType
legen die Ereignisattribute auch diechildPolicy
fest, die sich auf die Workflow-Ausführung auswirkt. Die untergeordnete Richtlinie legt fest, wie mit untergeordneten Workflow-Ausführungen verfahren wird, wenn bei der übergeordneten Workflow-Ausführung eine Zeitüberschreitung auftritt oder sie anderweitig beendet wird. Wenn in derchildPolicy
beispielsweise TERMINATE festgelegt ist, werden die untergeordneten Workflow-Ausführungen beendet. Nachdem bei einer Workflow-Ausführung eine Zeitüberschreitung aufgetreten ist, können Sie als einzige Aktionen dafür noch Sichtbarkeitsaufrufe ausführen. -
Entscheidungsaufgabe von Anfang bis Ende (
timeoutType: START_TO_CLOSE
) — Dieses Timeout gibt die maximale Zeit an, die der entsprechende Entscheider benötigen kann, um eine Entscheidungsaufgabe abzuschließen. Sie wird während der Registrierung des Workflow-Typs festgelegt. Wenn dieses Timeout überschritten wird, wird die Aufgabe im Workflow-Ausführungsverlauf als Timeout markiert, und Amazon SWF fügt dem Workflow-Verlauf ein Ereignis des Typs DecisionTaskTimedOuthinzu. Die Ereignisattribute enthalten die IDs für die Ereignisse, die dem Zeitpunkt entsprechen, zu dem die Entscheidungsaufgabe geplant (scheduledEventId
) und gestartet (startedEventId
) wurde. Amazon SWF fügt nicht nur das Ereignis hinzu, sondern plant auch eine neue Entscheidungsaufgabe, um den Entscheider darüber zu informieren, dass bei dieser Entscheidungsaufgabe das Timeout überschritten wurde. Nach einer Zeitüberschreitung schlagen Versuche, die abgelaufene Entscheidungsaufgabe mitRespondDecisionTaskCompleted
abzuschließen, fehl.
Zeitüberschreitungen in Aktivitätsaufgaben
Die folgende Abbildung zeigt, wie Zeitüberschreitungen sich auf die Lebensdauer einer Aktivitätsaufgabe auswirken:
![Lebensdauer einer Aufgabe mit Zeitüberschreitungen](images/activity_timeouts.png)
Für Aktivitätsaufgaben gibt es vier relevante Zeitüberschreitungstypen:
-
Aktivitätsaufgabe von Anfang bis Ende (
timeoutType: START_TO_CLOSE
) — Dieses Timeout gibt die maximale Zeit an, die ein Mitarbeiter für die Bearbeitung einer Aufgabe benötigen kann, nachdem der Mitarbeiter die Aufgabe erhalten hat. Versuche, eine Aktivitätsaufgabe mit RespondActivityTaskCanceled,, und zu schließen RespondActivityTaskCompleted, schlagen RespondActivityTaskFailedfehl. -
Activity Task Heartbeat (
timeoutType: HEARTBEAT
) — Dieses Timeout gibt die maximale Zeit an, die eine Aufgabe ausgeführt werden kann, bevor ihr Fortschritt durch die Aktion angezeigt wird.RecordActivityTaskHeartbeat
-
Zeitplan für den Start der Aktivitätsaufgabe (
timeoutType: SCHEDULE_TO_START
) — Dieses Timeout gibt an, wie lange Amazon SWF wartet, bis das Zeitlimit für die Aktivitätsaufgabe überschritten wird, wenn keine Mitarbeiter für die Ausführung der Aufgabe verfügbar sind. Nach der Zeitüberschreitung wird die abgelaufene Aufgabe keinem anderen Worker zugewiesen. -
Zeitplan für das Schließen der Aktivitätsaufgabe (
timeoutType: SCHEDULE_TO_CLOSE
) — Dieser Timeout gibt an, wie lange die Aufgabe von der geplanten bis zur Fertigstellung dauern kann. Es hat sich bewährt, dass dieser Wert nicht größer als die Summe aus Task-Timeout und schedule-to-start Task-Timeout sein sollte. start-to-close
Anmerkung
Jeder Zeitüberschreitungstyp verfügt übe einen Standardwert, in der Regel NONE
(unendlich). Die Höchstdauer für die Ausführung einer Aktivität ist jedoch auf ein Jahr beschränkt.
Die Standardwerte für diese Zeitüberschreitungen werden während der Registrierung des Aktivitätstyps festgelegt, können jedoch beim Planen der Aktivitätsaufgabe überschrieben werden. Wenn einer dieser Timeouts eintritt, fügt Amazon SWF dem Workflow-Verlauf ein Ereignis des Typs ActivityTaskTimedOuthinzu. Das Wertattribut timeoutType
dieses Ereignisses gibt an, welche dieser Zeitüberschreitungen aufgetreten ist. Der Wert von timeoutType
für jede Zeitüberschreitung ist in Klammern angegeben. Die Ereignisattribute enthalten auch die IDs für die Ereignisse, die dem Zeitpunkt entsprechen, zu dem die Aktivitätsaufgabe geplant (scheduledEventId
) und gestartet (startedEventId
) wurde. Zusätzlich zum Hinzufügen des Ereignisses plant Amazon SWF auch eine neue Entscheidungsaufgabe, um den Entscheider darüber zu informieren, dass das Timeout eingetreten ist.
Amazon Simple Workflow Service-Endpunkte
Eine Liste der aktuellen Amazon SWF SWF-Regionen und -Endpunkte finden Sie in der Allgemeine Amazon Web Services-Referenz, zusammen mit den Endpunkten für andere Dienste.
Amazon SWF-Domains und alle zugehörigen Workflows und Aktivitäten müssen in derselben Region existieren, um miteinander kommunizieren zu können. Außerdem existieren alle innerhalb einer Region registrierten Domänen, Workflows und Aktivitäten nicht in anderen Regionen. Wenn Sie beispielsweise eine Domain mit dem Namen „MySampleDomain“ sowohl in us-east-1 als auch in us-west-2 erstellen, existieren sie als separate Domänen: Keiner der Workflows, Aufgabenlisten, Aktivitäten oder Daten, die mit Ihren Domains verknüpft sind, wird regionsübergreifend gemeinsam genutzt.
Wenn Sie in Ihren Workflows andere AWS Ressourcen verwenden, z. B. Amazon EC2 EC2-Instances, müssen diese ebenfalls in derselben Region wie Ihre Amazon SWF SWF-Ressourcen vorhanden sein. Die einzigen Ausnahmen sind Dienste, die sich über Regionen erstrecken, wie Amazon S3 und IAM. Sie können auf diese Services von Workflows zugreifen, die in jeder beliebigen Region vorhanden sind, die sie unterstützen.
Zusätzliche Dokumentation für den Amazon Simple Workflow Service
Zusätzlich zu diesem Entwicklerhandbuch sind eventuell auch die folgenden Dokumentationen wertvoll.
Amazon Simple Workflow Service API-Referenz
Die Amazon Simple Workflow Service API-Referenz enthält detaillierte Informationen zur Amazon SWF HTTP-API, einschließlich Aktionen, Anforderungs- und Antwortstrukturen und Fehlercodes.
AWS Flow Framework Dokumentation
Das AWS Flow Framework
Jedes AWS Flow Framework ist so konzipiert, dass es idiomatisch in der Sprache funktioniert, für die es entworfen wurde, sodass Sie ganz natürlich mit der Sprache Ihrer Wahl arbeiten können, um Workflows mit allen Vorteilen von Amazon SWF zu implementieren.
Es gibt ein AWS Flow Framework für Java. Das AWS Flow Framework for Java Developer Guide enthält Informationen darüber, wie Sie das AWS Flow Framework für Java beziehen, einrichten und verwenden können.
AWS SDK-Dokumentation
Die AWS Software Development Kits (SDKs) bieten Zugriff auf Amazon SWF in vielen verschiedenen Programmiersprachen. Die SDKs orientieren sich eng an der HTTP-API, bieten aber auch sprachspezifische Programmierschnittstellen für einige Amazon SWF SWF-Funktionen. Weitere Informationen über die einzelnen SDKs finden Sie über die folgenden Links.
Anmerkung
Hier sind nur SDKs aufgeführt, die zum Zeitpunkt der Erstellung dieses Artikels Amazon SWF unterstützen. Eine vollständige Liste der verfügbaren AWS SDKs finden Sie auf der Seite Tools für Amazon Web Services
- Java
-
Das AWS SDK for Java bietet eine Java-API für AWS Infrastrukturdienste.
Sie können die verfügbare Dokumentation auf der Seite AWS SDK for Java -Dokumentation
finden. Sie können auch direkt zu den Amazon SWF SWF-Abschnitten in der SDK-Referenz wechseln, indem Sie diesen Links folgen: - JavaScript
-
AWS SDK for JavaScript Damit können Entwickler Bibliotheken oder Anwendungen erstellen, die AWS Dienste mithilfe einer einfachen easy-to-use API nutzen, die sowohl im Browser als auch in den Anwendungen von Node.js auf dem Server verfügbar ist.
Sie können die verfügbare Dokumentation auf der Seite AWS SDK for JavaScript -Dokumentation
finden. Sie können auch direkt zum Amazon SWF SWF-Bereich in der SDK-Referenz wechseln, indem Sie diesem Link folgen: - .NET
-
AWS SDK for .NET Es handelt sich um ein einzelnes herunterladbares Paket, das Visual Studio-Projektvorlagen, die AWS .NET-Bibliothek, C#-Codebeispiele und Dokumentation enthält. Das AWS SDK for .NET macht es für Windows-Entwickler einfacher, .NET-Anwendungen für Amazon SWF und andere Dienste zu erstellen.
Sie können die verfügbare Dokumentation auf der Seite AWS SDK for .NET -Dokumentation
finden. Sie können auch direkt zu den Amazon SWF SWF-Abschnitten in der SDK-Referenz wechseln, indem Sie diesen Links folgen: - PHP
-
Das AWS SDK for PHP bietet eine PHP-Programmierschnittstelle für Amazon SWF.
Sie können die verfügbare Dokumentation auf der Seite AWS SDK for PHP -Dokumentation
finden. Sie können auch direkt zum Amazon SWF SWF-Bereich in der SDK-Referenz wechseln, indem Sie diesem Link folgen: - Python
-
Das AWS SDK for Python (Boto) bietet eine Python-Programmierschnittstelle für Amazon SWF.
Die verfügbare Dokumentation finden Sie auf der Seite boto: Eine Python-Schnittstelle zu Amazon Web Services
. Sie können auch direkt zu den Amazon SWF SWF-Abschnitten in der Dokumentation wechseln, indem Sie diesen Links folgen: - Ruby
-
Das AWS SDK for Ruby bietet eine Ruby-Programmierschnittstelle für Amazon SWF.
Sie können die verfügbare Dokumentation auf der Seite AWS SDK for Ruby -Dokumentation
finden. Sie können auch direkt zum Amazon SWF SWF-Bereich in der SDK-Referenz wechseln, indem Sie diesem Link folgen:
AWS CLI Dokumentation
Das AWS Command Line Interface (AWS CLI) ist ein einheitliches Tool zur Verwaltung Ihrer AWS Dienste. Mit nur einem Tool zum Herunterladen und Konfigurieren können Sie mehrere AWS Dienste von der Befehlszeile aus steuern und mithilfe von Skripten automatisieren.
Weitere Informationen zu den AWS CLI finden Sie AWS Command Line Interface
Einen Überblick über die verfügbaren Befehle für Amazon SWF finden Sie unter swf in der AWS CLI Befehlsreferenz.
Webressourcen für den Amazon Simple Workflow Service
Es gibt eine Reihe von Webressourcen, mit denen Sie mehr über Amazon SWF erfahren oder Hilfe bei der Nutzung des Service und der Entwicklung von Workflows erhalten können.
Amazon SWF SWF-Forum
Das Amazon SWF SWF-Forum bietet Ihnen die Möglichkeit, mit anderen Amazon SWF SWF-Entwicklern und Mitgliedern des Amazon SWF SWF-Entwicklungsteams bei Amazon zu kommunizieren, Fragen zu stellen und Antworten zu erhalten.
Sie finden das Forum unter: Forum: Amazon Simple Workflow Service
Häufig gestellte Fragen zu Amazon SWF
Die häufig gestellten Fragen zu Amazon SWF bieten Antworten auf häufig gestellte Fragen zu Amazon SWF, darunter einen Überblick über gängige Anwendungsfälle, Unterschiede zwischen Amazon SWF und anderen Diensten und mehr.
Sie können die häufig gestellten Fragen hier aufrufen: Häufig gestellte Fragen zu Amazon SWF
Amazon SWF SWF-Videos
Der Amazon Web Services-Kanal
Migrationsoptionen für Ruby Flow
The AWS Flow Framework for Ruby wird nicht mehr aktiv entwickelt. Vorhandener Code funktioniert weiterhin für unbegrenzte Zeit, es gibt jedoch keine neuen Funktionen oder Versionen. In diesem Thema werden Verwendungs- und Migrationsoptionen für die weitere Arbeit mit Amazon SWF sowie Informationen zur Migration zu Step Functions behandelt.
Option | Beschreibung |
---|---|
Vorerst wird das Ruby Flow Framework weiterhin funktionieren. Wenn Sie nichts verändern, funktioniert Ihr Code wie bisher. Planen Sie, in naher future von The AWS Flow Framework for Ruby zu migrieren. |
|
Das Java Flow Framework befindet sich weiterhin in aktiver Entwicklung und wird auch weiterhin neue Funktionen und Updates erhalten. |
|
Step Functions bietet eine Möglichkeit, die Komponenten verteilter Anwendungen unter Verwendung visueller Workflows zu koordinieren, gesteuert durch einen Zustandsautomaten. |
|
Direkte Verwendung des SWF API ohne das Flow Framework | Sie können weiterhin in Ruby arbeiten und das SWF API anstelle des Ruby Flow Frameworks verwenden. |
Der Vorteil, den das Flow Framework für Ruby oder Java bietet, ist, dass Sie sich ganz auf Ihre Workflow-Logik konzentrieren können. Das Framework übernimmt viele Details im Hinblick auf Kommunikation und Koordination, und ein Teil der Komplexität wird abstrahiert. Sie können dieselbe Abstraktionsebene beibehalten, indem Sie zum Java Flow Framework migrieren, oder Sie können direkt mit dem Amazon SWF SDK interagieren.
Weitere Nutzung des Ruby Flow Frameworks
Das AWS Flow Framework for Ruby wird kurzfristig weiterhin so funktionieren wie bisher. Wenn Sie Workflows AWS Flow Framework für Ruby geschrieben haben, werden diese weiterhin funktionieren. Ohne Updates, Support oder Sicherheitskorrekturen ist es am besten, einen festen Plan zu haben, um in naher future AWS Flow Framework von Ruby zu migrieren.
Migration auf das Java Flow Framework
Das AWS Flow Framework für Java wird weiterhin aktiv weiterentwickelt. Konzeptionell ähnelt das AWS Flow Framework für Java dem AWS Flow Framework für Ruby: Sie können sich immer noch auf Ihre Workflow-Logik konzentrieren, und das Framework hilft Ihnen bei der Verwaltung Ihrer Entscheidungslogik und erleichtert die Verwaltung anderer Aspekte von Amazon SWF.
Migration auf Step Functions
AWS Step Functions bietet einen Service, der Amazon SWF ähnelt, bei dem Ihre Workflow-Logik jedoch von einer Zustandsmaschine gesteuert wird. Mit Step Functions können Sie die Komponenten verteilter Anwendungen und Microservices mithilfe visueller Workflows koordinieren. Sie erstellen Anwendungen aus einzelnen Komponenten, die jeweils eine diskrete Funktion oder Aufgabe ausführen, sodass Sie Anwendungen schnell skalieren und verändern können. Step Functions bietet eine zuverlässige Möglichkeit, Komponenten zu koordinieren und die Funktionen Ihrer Anwendung Schritt für Schritt durchzugehen. Eine grafische Konsole bietet eine Möglichkeit, die Komponenten Ihrer Anwendungen als Abfolge einzelner Schritte zu visualisieren. Es löst jeden Schritt automatisch aus und verfolgt ihn und versucht es erneut, wenn Fehler auftreten, sodass Ihre Anwendung jedes Mal in der richtigen Reihenfolge und wie erwartet ausgeführt wird. Step Functions protokolliert den Status jedes Schritts, sodass Sie Probleme schnell diagnostizieren und debuggen können, wenn etwas schief geht.
In Step Functions verwalten Sie die Koordination Ihrer Aufgaben mithilfe einer Zustandsmaschine, die in deklarativem JSON geschrieben ist und in der Amazon States Language definiert ist. Durch die Verwendung einer Zustandsmaschine müssen Sie kein Entscheidungsprogramm zur Steuerung Ihrer Anwendungslogik schreiben und verwalten. Step Functions bietet einen intuitiven, produktiven und agilen Ansatz zur Koordination von Anwendungskomponenten mithilfe visueller Workflows. Sie sollten die Verwendung AWS Step Functions für all Ihre neuen Anwendungen in Betracht ziehen, und Step Functions bietet eine hervorragende Plattform, auf die Sie für die Workflows migrieren können, die Sie derzeit in AWS Flow Framework for Ruby implementiert haben.
Um Ihnen bei der Migration Ihrer Aufgaben zu Step Functions zu helfen und gleichzeitig Ihre Ruby-Sprachkenntnisse weiter zu nutzen, bietet Step Functions ein Beispiel für einen Ruby Activity Worker. Dieses Beispiel verwendet bewährte Methoden für die Implementierung eines Activity Workers und kann als Vorlage für die Migration Ihrer Aufgabenlogik zu Step Functions verwendet werden. Weitere Informationen finden Sie im Thema Example Activity Worker in Ruby im AWS Step Functions Developer Guide.
Anmerkung
Für viele Kunden ist die Migration von AWS Flow Framework for Ruby zu Step Functions die beste Option. Wenn Sie jedoch möchten, dass Signale in Ihre Prozesse eingreifen, oder wenn Sie untergeordnete Prozesse starten müssen, die ein Ergebnis an ein übergeordnetes Objekt zurückgeben, sollten Sie die Amazon SWF SWF-API direkt verwenden oder auf Java migrieren. AWS Flow Framework
Weitere Informationen dazu finden Sie AWS Step Functions unter:
Verwenden Sie die Amazon SWF SWF-API direkt
Während das AWS Flow Framework für Ruby einen Teil der Komplexität von Amazon SWF bewältigt, können Sie die Amazon SWF SWF-API auch direkt verwenden. Die direkte Verwendung des API gestattet Ihnen, Workflows zu erstellen, in denen Sie vollständige Kontrolle über ihre Implementierung und Koordinierung haben, ohne sich um die zugrunde liegenden Komplexitäten kümmern zu müssen, wie z. B. den Fortschritt nachverfolgen und den Status verwalten zu müssen.