Konfigurationsdatei für verspottete Service-Integrationen - AWS Step Functions

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.

Konfigurationsdatei für verspottete Service-Integrationen

Um verspottete Service-Integrationen verwenden zu können, müssen Sie zuerst eine Mock-Konfigurationsdatei mit dem Namen erstellenMockConfigFile.jsonenthält Ihre Mock-Konfigurationen. Geben Sie dann Step Functions Local die Mock-Konfigurationsdatei an. Diese Konfigurationsdatei definiert Testfälle, die Mock-Status enthalten, die verspottete Service-Integrationsantworten verwenden. Der folgende Abschnitt enthält Informationen über die Struktur der Mock-Konfiguration, die die Mock-Zustände und verspottete Antworten enthält:

Einführung in die Struktur der Mock-Konfiguration

Eine Mock-Konfiguration ist ein JSON-Objekt, das die folgenden Felder der obersten Ebene enthält:

  • StateMachines- Die Felder dieses Objekts stellen Statuscomputer dar, die für die Verwendung von verspotteten Service-Integrationen konfiguriert sind.

  • MockedResponse- Die Felder dieses Objekts stellen verspottete Antworten für Service-Integrationsaufrufe dar.

Es folgt ein Beispiel für die Mock-Konfigurationsdateidas beinhaltet einStateMachineDefinition undMockedResponseaus.

{ "StateMachines":{ "LambdaSQSIntegration":{ "TestCases":{ "HappyPath":{ "LambdaState":"MockedLambdaSuccess", "SQSState":"MockedSQSSuccess" }, "RetryPath":{ "LambdaState":"MockedLambdaRetry", "SQSState":"MockedSQSSuccess" }, "HybridPath":{ "LambdaState":"MockedLambdaSuccess" } } } }, "MockedResponses":{ "MockedLambdaSuccess":{ "0":{ "Return":{ "StatusCode":200, "Payload":{ "StatusCode":200, "body":"Hello from Lambda!" } } } }, "LambdaMockedResourceNotReady":{ "0":{ "Throw":{ "Error":"Lambda.ResourceNotReadyException", "Cause":"Lambda resource is not ready." } } }, "MockedSQSSuccess":{ "0":{ "Return":{ "MD5OfMessageBody":"3bcb6e8e-7h85-4375-b0bc-1a59812c6e51", "MessageId":"3bcb6e8e-8b51-4375-b0bc-1a59812c6e51" } } }, "MockedLambdaRetry":{ "0":{ "Throw":{ "Error":"Lambda.ResourceNotReadyException", "Cause":"Lambda resource is not ready." } }, "1-2":{ "Throw":{ "Error":"Lambda.TimeoutException", "Cause":"Lambda timed out." } }, "3":{ "Return":{ "StatusCode":200, "Payload":{ "StatusCode":200, "body":"Hello from Lambda!" } } } } } }

Referenz für das Mock-Konfigurationsfeld

In den folgenden Abschnitten werden die Objektfelder der obersten Ebene erläutert, die Sie in Ihrer Mock-Konfiguration definieren müssen.

StateMachines

DieStateMachinesobject definiert, welche Zustandsmaschinen verspottete Service-Integrationen verwenden werden. Die Konfiguration für jeden Zustandsmaschine wird als Feld der obersten Ebene vonStateMachinesaus. Der Feldname ist der Name des Status-Rechners und der Wert ist ein Objekt, das ein einzelnes Feld mit dem Namen enthältTestCases, deren Felder Testfälle dieser Zustandsmaschine darstellen.

Die folgende Syntax zeigt einen Statuscomputer mit zwei Testfällen:

"MyStateMachine": { "TestCases": { "HappyPath": { ... }, "SadPath": { ... } }
TestCases

Die Felder vonTestCasesStellen Sie einzelne Testfälle für den Zustandsautomaten dar. Der Name jedes Testfalls muss pro Statuscomputer eindeutig sein, und der Wert jedes Testfalls ist ein Objekt, das eine verspottete Antwort angibt, die für Aufgabenstatus im Statuscomputer verwendet werden soll.

Das folgende Beispiel für einTestCaseverlinkt zweiTaskBundesstaaten zu zweiMockedResponses:

"HappyPath": { "SomeTaskState": "SomeMockedResponse", "AnotherTaskState": "AnotherMockedResponse" }

MockedResponses

MockedResponsesist ein Objekt, das mehrere verspottete Antwortobjekte mit eindeutigen Feldnamen enthält. Ein verspottetes Antwortobjekt definiert das erfolgreiche Ergebnis oder die Fehlerausgabe für jeden Aufruf eines verspotteten Task-Status. Sie geben die Aufrufnummer unter Verwendung einzelner ganzzahliger Zeichenfolgen wie „0“, „1“, „2“ und „3“ oder einem inklusiven Bereich von Ganzzahlen wie „0-1“, „2-3“ an.

Wenn Sie eine Aufgabe verspotten, müssen Sie für jeden Aufruf eine verspottete Antwort angeben. Eine Antwort muss ein einzelnes Feld mit dem Namen enthaltenReturnoderThrowdessen Wert die Ergebnis- oder Fehlerausgabe für den verspotteten Task-Aufruf ist. Wenn Sie keine verspottete Antwort angeben, schlägt die Ausführung des Zustandsmaschiners fehl.

Es folgt ein Beispiel für einMockedResponsemitThrowundReturnObjekte. In diesem Beispiel wird die erste drei Male der Statusmaschine ausgeführt, die in"0-2"wird zurückgegeben, und beim vierten Mal, wenn der Zustandsmaschine ausgeführt wird, wird die in"3"wird zurückgegeben.

"SomeMockedResponse": { "0-2": { "Throw": { ... } }, "3": { "Return": { ... } } }
Anmerkung

Wenn Sie einMapangeben und vorhersehbare Antworten für dieMapstate, setze den Wert vonmaxConcurrencybis 1. Wenn Sie einen Wert größer als 1 festlegen, führt Step Functions Local mehrere Iterationen gleichzeitig aus, wodurch die allgemeine Ausführungsreihenfolge von Zuständen über Iterationen hinweg unvorhersehbar ist. Dies kann außerdem dazu führen, dass Step Functions Local verschiedene verspottete Antworten für Iterationszustände von einer Ausführung zur nächsten verwendet.

Ergebnis

Returnwird als Feld derMockedResponseObjekte. Es gibt das erfolgreiche Ergebnis eines verspotteten Aufgabenstatus an.

Es folgt ein Beispiel für einReturnObjekt, das eine verspottete Antwort für den Aufruf enthältInvokebei einer Lambda-Funktion:

"Return": { "StatusCode": 200, "Payload": { "StatusCode": 200, "body": "Hello from Lambda!" } }
Werfen

Throwwird als Feld derMockedResponseObjekte. Es gibt dieFehlerausgabeeiner fehlgeschlagenen Aufgabe. Der Wert vonThrowmuss ein Objekt sein, das einErrorundCause-Felder mit String-Werten. Darüber hinaus ist der String-Wert, in dem Sie angebenErrorfield imMockConfigFile.jsonmuss mit den Fehlern übereinstimmen, die imRetryundCatchAbschnitte Ihres Zustandsautomaten.

Es folgt ein Beispiel für einThrowObjekt, das eine verspottete Antwort für den Aufruf enthältInvokebei einer Lambda-Funktion:

"Throw": { "Error": "Lambda.TimeoutException", "Cause": "Lambda timed out." }

Konfigurieren von verspotteten Dienstintegrationen

Sie können jede Serviceintegration mit Step Functions Local verspotten. Step Functions Local erzwingt jedoch nicht, dass die Mocks mit den echten APIs identisch sind. Eine verspottete Aufgabe wird den Dienstendpunkt niemals aufrufen. Wenn Sie keine verspottete Antwort angeben, versucht eine Aufgabe, die Dienstendpoints aufzurufen. Darüber hinaus generiert Step Functions Local automatisch ein Task-Token, wenn Sie eine Aufgabe mit dem.waitForTaskTokenaus.