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 simulierte Serviceintegrationen in Step Functions
Um simulierte Dienstintegrationen verwenden zu können, müssen Sie zunächst eine simulierte Konfigurationsdatei MockConfigFile.json
mit dem Namen erstellen, die Ihre Scheinkonfigurationen enthält. Stellen Sie dann Step Functions Local die Scheinkonfigurationsdatei zur Verfügung. Diese Konfigurationsdatei definiert Testfälle, die Scheinzustände enthalten, die simulierte Antworten zur Serviceintegration verwenden. Der folgende Abschnitt enthält Informationen zur Struktur der Scheinkonfiguration, die die Scheinstatus und die simulierten Antworten umfasst:
Struktur der Scheinkonfigurationsdatei
Eine Scheinkonfiguration ist ein JSON Objekt, das die folgenden Felder der obersten Ebene enthält:
-
StateMachines
- Die Felder dieses Objekts stellen Zustandsmaschinen dar, die so konfiguriert sind, dass sie simulierte Dienstintegrationen verwenden. -
MockedResponse
- Die Felder dieses Objekts stellen simulierte Antworten auf Aufrufe zur Serviceintegration dar.
Das Folgende ist ein Beispiel für eine simulierte Konfigurationsdatei, die eine StateMachine
Definition und MockedResponse
enthält.
{
"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 zum Feld „Scheinkonfiguration“
In den folgenden Abschnitten werden die Objektfelder der obersten Ebene erläutert, die Sie in Ihrer Scheinkonfiguration definieren müssen.
StateMachines
Das StateMachines
Objekt definiert, welche Zustandsmaschinen simulierte Dienstintegrationen verwenden. Die Konfiguration für jede Zustandsmaschine wird als Feld der obersten Ebene von dargestellt. StateMachines
Der Feldname ist der Name der Zustandsmaschine und der Wert ist ein Objekt, das ein einzelnes Feld mit dem Namen enthältTestCases
, dessen Felder Testfälle dieses Zustandsmaschinen darstellen.
Die folgende Syntax zeigt eine Zustandsmaschine mit zwei Testfällen:
"MyStateMachine": {
"TestCases": {
"HappyPath": {
...
},
"SadPath": {
...
}
}
TestCases
Die Felder von TestCases
stehen für einzelne Testfälle für die Zustandsmaschine. Der Name jedes Testfalls muss pro Zustandsmaschine eindeutig sein, und der Wert jedes Testfalls ist ein Objekt, das eine simulierte Antwort angibt, die für Task-Status in der Zustandsmaschine verwendet werden soll.
Das folgende Beispiel für a TestCase
verknüpft zwei Task
Zustände mit zweiMockedResponses
:
"HappyPath": {
"SomeTaskState": "SomeMockedResponse",
"AnotherTaskState": "AnotherMockedResponse"
}
MockedResponses
MockedResponses
ist ein Objekt, das mehrere simulierte Antwortobjekte mit eindeutigen Feldnamen enthält. Ein simuliertes Antwortobjekt definiert das erfolgreiche Ergebnis oder die Fehlerausgabe für jeden Aufruf eines simulierten Task-Status. Sie geben die Aufrufnummer mithilfe einzelner Ganzzahlzeichenfolgen wie „0“, „1“, „2“ und „3“ oder mithilfe eines inklusiven Bereichs von ganzen Zahlen wie „0-1“, „2-3“ an.
Wenn Sie eine Aufgabe simulieren, müssen Sie für jeden Aufruf eine simulierte Antwort angeben. Eine Antwort muss ein einzelnes Feld mit dem Namen Return
oder Throw
dessen Wert das Ergebnis oder die Fehlerausgabe für den simulierten Task-Aufruf enthalten. Wenn Sie keine simulierte Antwort angeben, schlägt die Ausführung der Zustandsmaschine fehl.
Im Folgenden finden Sie ein Beispiel für Return
Objekte MockedResponse
mit Throw
und. In diesem Beispiel wird die in angegebene Antwort zurückgegeben, wenn die Zustandsmaschine zum ersten Mal ausgeführt "0-2"
wird, und beim vierten Mal, wenn die Zustandsmaschine ausgeführt wird, "3"
wird die in angegebene Antwort zurückgegeben.
"SomeMockedResponse": {
"0-2": {
"Throw": {
...
}
},
"3": {
"Return": {
...
}
}
}
Anmerkung
Wenn Sie einen Map
Status verwenden und vorhersehbare Reaktionen für diesen Map
Zustand sicherstellen möchten, setzen Sie den Wert maxConcurrency
auf 1. Wenn Sie einen Wert größer als 1 festlegen, führt Step Functions Local mehrere Iterationen gleichzeitig aus, wodurch die allgemeine Ausführungsreihenfolge der Zustände über Iterationen hinweg nicht vorhersehbar ist. Dies kann außerdem dazu führen, dass Step Functions Local unterschiedliche simulierte Antworten für Iterationszustände von einer Ausführung zur nächsten verwendet.
Ergebnis
Return
wird als ein Feld der Objekte dargestellt. MockedResponse
Es gibt das erfolgreiche Ergebnis eines simulierten Aufgabenstatus an.
Das Folgende ist ein Beispiel für ein Return
Objekt, das eine simulierte Antwort Invoke
auf den Aufruf einer Lambda-Funktion enthält:
"Return": {
"StatusCode": 200,
"Payload": {
"StatusCode": 200,
"body": "Hello from Lambda!"
}
}
Wirf
Throw
wird als ein Feld der MockedResponse
Objekte dargestellt. Es gibt die Fehlerausgabe einer fehlgeschlagenen Aufgabe an. Der Wert von Throw
muss ein Objekt sein, das Cause
Felder Error
und mit Zeichenfolgenwerten enthält. Darüber hinaus MockConfigFile.json
muss der Zeichenkettenwert, den Sie in dem Error
Feld angeben, den Fehlern entsprechen, die in den Catch
Abschnitten Retry
und Ihrer Zustandsmaschine behandelt wurden.
Das Folgende ist ein Beispiel für ein Throw
Objekt, das eine simulierte Antwort Invoke
auf den Aufruf einer Lambda-Funktion enthält:
"Throw": {
"Error": "Lambda.TimeoutException",
"Cause": "Lambda timed out."
}