Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Verwenden der TestState API zum Testen eines Zustands in Step Functions

Fokusmodus
Verwenden der TestState API zum Testen eines Zustands in Step Functions - 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.

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.

Die TestStateAPI akzeptiert die Definition eines einzelnen Zustands und führt sie aus. Sie können einen Status testen, ohne eine Zustandsmaschine zu erstellen oder eine bestehende Zustandsmaschine zu aktualisieren.

Mithilfe der TestState API können Sie Folgendes testen:

Um einen Status zu testen, können Sie auch den Step Functions Konsole, AWS Command Line Interface (AWS CLI), oder das SDK.

Die TestState API nimmt eine IAM-Rolle an, die die erforderlichen Informationen enthalten muss IAM Berechtigungen für die Ressourcen, auf die Ihr Staat zugreift. Informationen zu den Berechtigungen, die ein Bundesstaat möglicherweise benötigt, finden Sie unterIAM Berechtigungen für die Verwendung der TestState API.

Überlegungen zur Verwendung der TestState API

Mit der TestStateAPI können Sie jeweils nur einen Status testen. Zu den Staaten, die Sie testen können, gehören die folgenden:

Beachten Sie bei der Verwendung der TestState API die folgenden Überlegungen.

Verwendung von Inspektionsebenen in der TestState API

Um einen Status mithilfe der TestStateAPI zu testen, geben Sie die Definition dieses Zustands an. Der Test gibt dann eine Ausgabe zurück. Für jeden Status können Sie angeben, wie viele Details Sie in den Testergebnissen anzeigen möchten. Diese Details enthalten zusätzliche Informationen über den Bundesstaat, den Sie testen. Wenn Sie beispielsweise Filter für die Eingabe- und Ausgabedatenverarbeitung verwendet haben, wie z. B. InputPathoder ResultPathin einem Bundesstaat, können Sie die Zwischen- und Enddaten der Datenverarbeitung einsehen.

Step Functions bietet die folgenden Ebenen, um die Details anzugeben, die Sie anzeigen möchten:

Alle diese Ebenen geben auch die nextState Felder status und zurück. statusgibt den Status der Ausführung im Status an. Zum BeispielSUCCEEDED, FAILEDRETRIABLE, undCAUGHT_ERROR. nextStategibt den Namen des nächsten Zustands an, zu dem der Übergang erfolgen soll. Wenn Sie in Ihrer Definition keinen nächsten Status definiert haben, gibt dieses Feld einen leeren Wert zurück.

Informationen zum Testen eines Bundesstaates anhand dieser Inspektionsstufen finden Sie in Step Functions Konsole und AWS CLI, siehe Testen eines Zustands (Konsole) undTesten eines Zustands mit AWS CLI.

INFO: Inspektionsebene

Wenn der Test erfolgreich ist, zeigt diese Stufe die Statusausgabe an. Wenn der Test fehlschlägt, zeigt diese Stufe die Fehlerausgabe an. Standardmäßig Step Functions setzt die Inspektionsebene auf INFO, wenn Sie keine Stufe angeben.

Die folgende Abbildung zeigt einen Test für den Status „Bestanden“, der erfolgreich war. Die Inspektionsstufe für diesen Status ist auf INFO festgelegt, und die Ausgabe für den Status wird auf der Registerkarte Ausgabe angezeigt.

Screenshot der Ausgabe auf INFO-Ebene für einen bestandenen Test.

Die folgende Abbildung zeigt einen Test für den Status „Bestanden“, der erfolgreich war. Die Inspektionsstufe für diesen Status ist auf INFO festgelegt, und die Ausgabe für den Status wird auf der Registerkarte Ausgabe angezeigt.

Screenshot der Ausgabe auf INFO-Ebene für einen bestandenen Test.

Die folgende Abbildung zeigt einen Test, der für einen Task-Status fehlgeschlagen ist, wenn die Inspektionsebene auf INFO gesetzt ist. Auf der Registerkarte Ausgabe wird die Fehlerausgabe angezeigt, die den Fehlernamen und eine ausführliche Erklärung der Fehlerursache enthält.

Screenshot der Ausgabe auf INFO-Ebene für einen fehlgeschlagenen Test.

Die folgende Abbildung zeigt einen Test, der für einen Task-Status fehlgeschlagen ist, wenn die Inspektionsebene auf INFO gesetzt ist. Auf der Registerkarte Ausgabe wird die Fehlerausgabe angezeigt, die den Fehlernamen und eine ausführliche Erklärung der Fehlerursache enthält.

Screenshot der Ausgabe auf INFO-Ebene für einen fehlgeschlagenen Test.

DEBUG InspectionLevel

Wenn der Test erfolgreich ist, zeigt diese Ebene die Statusausgabe und das Ergebnis der Eingabe- und Ausgabedatenverarbeitung an.

Schlägt der Test fehl, zeigt diese Stufe die Fehlerausgabe an. Auf dieser Ebene werden die Zwischenergebnisse der Datenverarbeitung bis zum Zeitpunkt des Fehlers angezeigt. Nehmen wir beispielsweise an, Sie haben einen Task-Status getestet, der einen aufruft Lambda Funktion. Stellen Sie sich vor, Sie hätten die Filtern der Statusausgabe mit OutputPath Filter InputPathParameter,Zustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben, und auf den Status Task angewendet. Angenommen, der Aufruf ist fehlgeschlagen. In diesem Fall zeigt die DEBUG Ebene die Datenverarbeitungsergebnisse, die auf der Anwendung der Filter basieren, in der folgenden Reihenfolge an:

  • input— Eingabe im Rohzustand

  • afterInputPath— Eingabe danach Step Functions wendet den InputPath Filter an.

  • afterParameters— Die effektive Eingabe danach Step Functions wendet den Parameters Filter an.

Die auf dieser Ebene verfügbaren Diagnoseinformationen können Ihnen bei der Behebung von Problemen im Zusammenhang mit einer Serviceintegration oder einem von Ihnen definierten Ablauf der Eingabe- und Ausgabedatenverarbeitung helfen.

Die folgende Abbildung zeigt einen Test für den Status „Bestanden“, der erfolgreich war. Die Inspektionsstufe für diesen Status ist auf DEBUG gesetzt. Die Registerkarte Eingabe-/Ausgabeverarbeitung in der folgenden Abbildung zeigt das Ergebnis der Anwendung von Parametersauf die für diesen Status bereitgestellte Eingabe.

Screenshot der Ausgabe auf DEBUG-Ebene für einen bestandenen Test.

Die folgende Abbildung zeigt einen Test für den Status „Bestanden“, der erfolgreich war. Die Inspektionsstufe für diesen Status ist auf DEBUG gesetzt. Die Registerkarte Eingabe-/Ausgabeverarbeitung in der folgenden Abbildung zeigt das Ergebnis der Anwendung von Parametersauf die für diesen Status bereitgestellte Eingabe.

Screenshot der Ausgabe auf DEBUG-Ebene für einen bestandenen Test.

Die folgende Abbildung zeigt einen Test, der für einen Task-Status fehlgeschlagen ist, wenn die Inspektionsebene auf DEBUG gesetzt ist. Die Registerkarte Eingabe-/Ausgabeverarbeitung in der folgenden Abbildung zeigt das Ergebnis der Eingabe- und Ausgabedatenverarbeitung für den Status bis zum Zeitpunkt des Fehlers.

Screenshot der Ausgabe auf DEBUG-Ebene für einen fehlgeschlagenen Test.

Die folgende Abbildung zeigt einen Test, der für einen Task-Status fehlgeschlagen ist, wenn die Inspektionsebene auf DEBUG gesetzt ist. Die Registerkarte Eingabe-/Ausgabeverarbeitung in der folgenden Abbildung zeigt das Ergebnis der Eingabe- und Ausgabedatenverarbeitung für den Status bis zum Zeitpunkt des Fehlers.

Screenshot der Ausgabe auf DEBUG-Ebene für einen fehlgeschlagenen Test.

TRACE InspectionLevel

Step Functions stellt die TRACE-Stufe zum Testen einer HTTP-Task bereit. Diese Ebene gibt Informationen über die HTTP-Anfrage zurück, die Step Functions gibt eine Antwort aus, die eine HTTPS-API zurückgibt. Die Antwort kann Informationen wie Header und Anfragetext enthalten. Darüber hinaus können Sie den Status, die Ausgabe und das Ergebnis der Eingabe- und Ausgabedatenverarbeitung auf dieser Ebene anzeigen.

Wenn der Test fehlschlägt, zeigt diese Stufe die Fehlerausgabe an.

Diese Stufe gilt nur für HTTP-Tasks. Step Functions gibt einen Fehler aus, wenn Sie diese Ebene für andere Statustypen verwenden.

Wenn Sie die Inspektionsebene auf TRACE setzen, können Sie auch die in der EventBridge Verbindung enthaltenen Geheimnisse anzeigen. Dazu müssen Sie den revealSecrets Parameter true in der TestStateAPI auf setzen. Darüber hinaus müssen Sie sicherstellen, dass IAM Der Benutzer, der die TestState API aufruft, hat die Erlaubnis für die states:RevealSecrets Aktion. Für ein Beispiel für IAM Eine Richtlinie, die die states:RevealSecrets Berechtigung festlegt, finden Sie unterIAM Berechtigungen für die Verwendung der TestState API. Ohne diese Genehmigung Step Functions gibt den Fehler „Zugriff verweigert“ aus.

Wenn Sie den revealSecrets Parameter auf setzen, false Step Functions lässt alle Geheimnisse in den HTTP-Anforderungs- und Antwortdaten aus.

Die folgende Abbildung zeigt einen erfolgreichen Test für eine HTTP-Aufgabe. Die Inspektionsebene für diesen Status ist auf TRACE festgelegt. Die Registerkarte „HTTP-Anfrage und Antwort“ in der folgenden Abbildung zeigt das Ergebnis des HTTPS-API-Aufrufs.

Screenshot der Ausgabe auf TRACE-Ebene für einen bestandenen Test.

Die folgende Abbildung zeigt einen erfolgreichen Test für eine HTTP-Aufgabe. Die Inspektionsebene für diesen Status ist auf TRACE festgelegt. Die Registerkarte „HTTP-Anfrage und Antwort“ in der folgenden Abbildung zeigt das Ergebnis des HTTPS-API-Aufrufs.

Screenshot der Ausgabe auf TRACE-Ebene für einen bestandenen Test.

IAM Berechtigungen für die Verwendung der TestState API

Das Tool IAM Der Benutzer, der die TestState API aufruft, muss über die erforderlichen Berechtigungen verfügen, um die states:TestState iam:PassRole AND-Aktionen auszuführen. Wenn Sie den Parameter RevealSecrets auf setzentrue, müssen Sie außerdem sicherstellen, dass IAM Der Benutzer ist berechtigt, die states:RevealSecrets Aktion auszuführen. Ohne diese Erlaubnis Step Functions gibt den Fehler „Zugriff verweigert“ aus.

Sie müssen außerdem sicherstellen, dass Ihre Ausführungsrolle die erforderlichen Informationen enthält IAM Berechtigungen für die Ressourcen, auf die Ihr Bundesstaat zugreift. Informationen zu den Berechtigungen, die ein Bundesstaat möglicherweise benötigt, finden Sie unter Ausführungsrollen verwalten.

Folgendes IAM Das Richtlinienbeispiel legt die states:RevealSecrets Berechtigungen states:TestStateiam:PassRole, und fest.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:TestState", "states:RevealSecrets", "iam:PassRole" ], "Resource": "*" } ] }

Testen eines Zustands (Konsole)

Sie können einen Status in der Konsole testen und die Statusausgabe oder den Ablauf der Eingabe- und Ausgabedatenverarbeitung überprüfen. Bei einer HTTP-Aufgabe können Sie die rohe HTTP-Anfrage und -Antwort testen.

Um einen Status zu testen
  1. Öffnen Sie die Step Functions Functions-Konsole.

  2. Wählen Sie Create State Machine, um mit der Erstellung eines State Machine zu beginnen, oder wählen Sie einen vorhandenen State Machine aus.

  3. Wählen Sie im Entwurfsmodus Workflow Studio einen Status aus, den Sie testen möchten.

  4. Wählen Sie im Inspektor-Panel Bedienfeld von Workflow Studio die Option Teststatus aus.

  5. Gehen Sie im Dialogfeld Teststatus wie folgt vor:

    1. Wählen Sie unter Ausführungsrolle eine Ausführungsrolle aus, um den Status zu testen. Stellen Sie sicher, dass Sie über die erforderlichen IAM Berechtigungen für den Staat, den Sie testen möchten.

    2. (Optional) Geben Sie alle JSON-Eingaben an, die Ihr ausgewählter Bundesstaat für den Test benötigt.

    3. Wählen Sie für Inspektionsebene je nach den Werten, die Sie anzeigen möchten, eine der folgenden Optionen aus:

      • INFO — Zeigt die Statusausgabe auf der Registerkarte „Ausgabe“ an, wenn der Test erfolgreich ist. Wenn der Test fehlschlägt, zeigt INFO die Fehlerausgabe an, die den Fehlernamen und eine detaillierte Erklärung der Fehlerursache enthält. Standardmäßig Step Functions setzt die Inspektionsebene auf INFO, wenn Sie keine Stufe auswählen.

      • DEBUG — Zeigt die Statusausgabe und das Ergebnis der Eingabe- und Ausgabedatenverarbeitung an, wenn der Test erfolgreich ist. Wenn der Test fehlschlägt, zeigt DEBUG die Fehlerausgabe an, die den Fehlernamen und eine detaillierte Erklärung der Fehlerursache enthält.

      • TRACE — Zeigt die rohe HTTP-Anfrage und -Antwort an und ist nützlich für die Überprüfung von Headern, Abfrageparametern und anderen API-spezifischen Details. Diese Option ist nur für den HTTP-Task verfügbar.

        Optional können Sie die Option Geheimnisse enthüllen auswählen. In Kombination mit TRACE können Sie mit dieser Einstellung die sensiblen Daten sehen, die EventBridge Verbindungseinfügungen, z. B. API-Schlüssel. Das Tool IAM Die Benutzeridentität, die Sie für den Zugriff auf die Konsole verwenden, muss über die erforderliche Berechtigung zum Ausführen der states:RevealSecrets Aktion verfügen. Ohne diese Erlaubnis Step Functions gibt den Fehler „Zugriff verweigert“ aus, wenn Sie den Test starten. Für ein Beispiel für ein IAM Eine Richtlinie, die die states:RevealSecrets Berechtigung festlegt, finden Sie unterIAM Berechtigungen für die Verwendung der TestState API.

    4. Wählen Sie Test starten.

Testen eines Zustands mit AWS CLI

Sie können einen unterstützten Status mithilfe der TestStateAPI in der testen AWS CLI. Diese API akzeptiert die Definition eines Zustands und führt sie aus.

Für jeden Status können Sie angeben, wie viele Details Sie in den Testergebnissen anzeigen möchten. Diese Details enthalten zusätzliche Informationen über die Ausführung des Status, einschließlich der Ergebnisse der Eingabe- und Ausgabedatenverarbeitung sowie Informationen zur HTTP-Anforderung und -Antwort. Die folgenden Beispiele zeigen die verschiedenen Inspektionsstufen, die Sie für die TestState API angeben können. Denken Sie daran, den italicized Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.

Dieser Abschnitt enthält die folgenden Beispiele, in denen beschrieben wird, wie Sie die verschiedenen Inspektionsebenen verwenden können Step Functions bietet in der AWS CLI:

Beispiel 1: Verwenden von INFO InspectionLevel zum Testen eines Choice-Status

Um einen Status mithilfe des INFO InspectionLevels in der zu testen AWS CLI, führen Sie den test-state Befehl wie im folgenden Beispiel gezeigt aus.

aws stepfunctions test-state \ --definition '{"Type": "Choice", "Choices": [{"Variable": "$.number", "NumericEquals": 1, "Next": "Equals 1"}, {"Variable": "$.number", "NumericEquals": 2, "Next": "Equals 2"}], "Default": "No Match"}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --input '{"number": 2}'

In diesem Beispiel wird der Status Choice verwendet, um den Ausführungspfad für den Status anhand der von Ihnen angegebenen numerischen Eingabe zu ermitteln. Standardmäßig Step Functions setzt den Wert inspectionLevel auf, INFO wenn Sie keinen Pegel angeben.

Step Functions gibt die folgende Ausgabe zurück.

{ "output": "{\"number\": 2}", "nextState": "Equals 2", "status": "SUCCEEDED" }

Beispiel 2: Verwendung von DEBUG InspectionLevel zum Debuggen der Eingabe- und Ausgabedatenverarbeitung im Status Pass

Um einen Status mit dem DEBUG InspectionLevel in der zu testen AWS CLI, führen Sie den test-state Befehl aus, wie im folgenden Beispiel gezeigt.

aws stepfunctions test-state \ --definition '{"Type": "Pass", "InputPath": "$.payload", "Parameters": {"data": 1}, "ResultPath": "$.result", "OutputPath": "$.result.data", "Next": "Another State"}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --input '{"payload": {"foo": "bar"}}' \ --inspection-level DEBUG

In diesem Beispiel wird anhand eines Workflow-Status übergeben Zustands veranschaulicht, wie Step Functions filtert und manipuliert JSON-Eingabedaten mithilfe der Eingabe- und Ausgabedatenverarbeitungsfilter. In diesem Beispiel werden die folgenden Filter verwendet:InputPath, ParameterZustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben, und. Filtern der Statusausgabe mit OutputPath

Step Functions gibt die folgende Ausgabe zurück.

{ "output": "1", "inspectionData": { "input": "{\"payload\": {\"foo\": \"bar\"}}", "afterInputPath": "{\"foo\":\"bar\"}", "afterParameters": "{\"data\":1}", "afterResultSelector": "{\"data\":1}", "afterResultPath": "{\"payload\":{\"foo\":\"bar\"},\"result\":{\"data\":1}}" }, "nextState": "Another State", "status": "SUCCEEDED" }

Beispiel 3: Verwendung von TRACE InspectionLevel und RevealSecrets zur Überprüfung der an eine HTTPS-API gesendeten HTTP-Anfrage

Um einen HTTP-Task mithilfe von TRACE InspectionLevel zusammen mit dem Parameter RevealSecrets in der zu testen AWS CLI, führen Sie den Befehl aus, wie im folgenden Beispiel gezeigt. test-state

aws stepfunctions test-state \ --definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:us-east-1:123456789012:connection/MyConnection/0000000-0000-0000-0000-000000000000"}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --inspection-level TRACE \ --reveal-secrets

In diesem Beispiel wird getestet, ob der HTTP-Task die angegebene HTTPS-API aufruft,. https://httpbin.org/ Außerdem werden die HTTP-Anfrage- und Antwortdaten für den API-Aufruf angezeigt.

{ "output": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "inspectionData": { "input": "{}", "afterInputPath": "{}", "afterParameters": "{\"Method\":\"GET\",\"Authentication\":{\"ConnectionArn\":\"arn:aws:events:us-east-1:123456789012:connection/foo/a59c10f0-a315-4c1f-be6a-559b9a0c6250\"},\"ApiEndpoint\":\"https://httpbin.org/get\",\"Headers\":{\"definitionHeader\":\"h1\"},\"RequestBody\":{\"message\":\"Hello from Step Functions!\"},\"QueryParameters\":{\"queryParam\":\"q1\"}}", "result": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "afterResultSelector": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "afterResultPath": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|us-east-1\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "request": { "protocol": "https", "method": "GET", "url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1", "headers": "[definitionHeader: h1, Authorization: Basic XXXXXXXX, CustomHeader1: CustomHeaderValue1, User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1, Range: bytes=0-262144]", "body": "{\"message\":\"Hello from Step Functions!\",\"BodyKey1\":\"BodyValue1\"}" }, "response": { "protocol": "https", "statusCode": "200", "statusMessage": "OK", "headers": "[date: Tue, 21 Nov 2023 00:06:17 GMT, content-type: application/json, content-length: 620, server: gunicorn/19.9.0, access-control-allow-origin: *, access-control-allow-credentials: true]", "body": "{\n \"args\": {\n \"QueryParam1\": \"QueryParamValue1\", \n \"queryParam\": \"q1\"\n }, \n \"headers\": {\n \"Authorization\": \"Basic XXXXXXXX\", \n \"Content-Type\": \"application/json; charset=UTF-8\", \n \"Customheader1\": \"CustomHeaderValue1\", \n \"Definitionheader\": \"h1\", \n \"Host\": \"httpbin.org\", \n \"Range\": \"bytes=0-262144\", \n \"Transfer-Encoding\": \"chunked\", \n \"User-Agent\": \"Amazon|StepFunctions|HttpInvoke|us-east-1\", \n \"X-Amzn-Trace-Id\": \"Root=1-0000000-0000-0000-0000-000000000000\"\n }, \n \"origin\": \"12.34.567.891\", \n \"url\": \"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"\n}\n" } }, "status": "SUCCEEDED" }

Beispiel 4: Verwenden des jq-Dienstprogramms zum Filtern und Drucken der von der TestState API zurückgegebenen Antwort

Die TestState API gibt JSON-Daten in ihrer Antwort als Escape-Zeichenketten zurück. Folgendes AWS CLI Beispiel erweitert Beispiel 3 und verwendet das jq Hilfsprogramm, um die HTTP-Antwort, die die TestState API zurückgibt, in einem für Menschen lesbaren Format zu filtern und auszudrucken. Weitere Informationen jq und Installationsanweisungen finden Sie unter jq on. GitHub

aws stepfunctions test-state \ --definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:us-east-1:123456789012:connection/MyConnection/0000000-0000-0000-0000-000000000000"}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \ --role-arn arn:aws:iam::123456789012:role/myRole \ --inspection-level TRACE \ --reveal-secrets \ | jq '.inspectionData.response.body | fromjson'

Das folgende Beispiel zeigt die Ausgabe, die in einem für Menschen lesbaren Format zurückgegeben wird.

{ "args": { "QueryParam1": "QueryParamValue1", "queryParam": "q1" }, "headers": { "Authorization": "Basic XXXXXXXX", "Content-Type": "application/json; charset=UTF-8", "Customheader1": "CustomHeaderValue1", "Definitionheader": "h1", "Host": "httpbin.org", "Range": "bytes=0-262144", "Transfer-Encoding": "chunked", "User-Agent": "Amazon|StepFunctions|HttpInvoke|us-east-1", "X-Amzn-Trace-Id": "Root=1-0000000-0000-0000-0000-000000000000" }, "origin": "12.34.567.891", "url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1" }

Testen und Debuggen des Eingabe- und Ausgabedatenflusses

Die TestState API ist hilfreich beim Testen und Debuggen der Daten, die durch Ihren Workflow fließen. Dieser Abschnitt enthält einige wichtige Konzepte und erklärt, wie Sie die TestState für diesen Zweck verwenden können.

Die wichtigsten Konzepte

In Step Functions, der Prozess des Filterns und Manipulierens von JSON-Daten, während sie die Zustände in Ihrer Zustandsmaschine durchlaufen, wird Eingabe- und Ausgabeverarbeitung genannt. Weitere Information zur Funktionsweise finden Sie unter Eingabe und Ausgabe in Step Functions verarbeiten.

Alle Zustandstypen in der Amazon States Language (ASL) (Task, Parallel, Map, Pass, Wait, Choice, Succeed und Fail) haben gemeinsam eine Reihe gemeinsamer Felder zum Filtern und Bearbeiten der JSON-Daten, die sie durchlaufen. Diese Felder sind:InputPath,, Parameter ResultSelectorZustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben, und. Filtern der Statusausgabe mit OutputPath Die Support für jedes Feld ist von Bundesstaat zu Bundesstaat unterschiedlich. Zur Laufzeit Step Functions wendet jedes Feld in einer bestimmten Reihenfolge an. Das folgende Diagramm zeigt die Reihenfolge, in der diese Felder auf die Daten innerhalb eines Aufgabenstatus angewendet werden:

Reihenfolge der Filter: InputPath, Parameter ResultSelector, ResultPath, und OutputPath.

In der folgenden Liste wird die Reihenfolge beschrieben, in der die Eingabe- und Ausgabeverarbeitungsfelder im Diagramm angewendet werden.

  1. Bei der Statuseingabe handelt es sich um die JSON-Daten, die von einem früheren Status an den aktuellen Status übergeben wurden.

  2. InputPathfiltert einen Teil der Rohstatuseingabe.

  3. Parameterkonfiguriert den Wertesatz, der an die Aufgabe übergeben werden soll.

  4. Die Aufgabe führt Arbeit aus und gibt ein Ergebnis zurück.

  5. ResultSelectorwählt eine Reihe von Werten aus, die aus dem Aufgabenergebnis übernommen werden sollen.

  6. Zustandsausgabe mithilfe von ResultPath In-Step-Funktionen angebenkombiniert das Ergebnis mit der unverarbeiteten Statuseingabe oder ersetzt das Ergebnis damit.

  7. Filtern der Statusausgabe mit OutputPathfiltert einen Teil der Ausgabe, sodass er in den nächsten Zustand übergeht.

  8. Bei der Statusausgabe handelt es sich um die JSON-Daten, die vom aktuellen Status an den nächsten Status übergeben werden.

Diese Eingabe- und Ausgabeverarbeitungsfelder sind optional. Wenn Sie keines dieser Felder in Ihrer Bundesstaatendefinition verwenden, verwendet die Aufgabe die unverarbeitete Statuseingabe und gibt das Aufgabenergebnis als Statusausgabe zurück.

Wird verwendet TestState , um die Eingabe- und Ausgabeverarbeitung zu überprüfen

Wenn Sie die TestState API aufrufen und den inspectionLevel Parameter auf setzenDEBUG, enthält die API-Antwort ein aufgerufenes ObjektinspectionData. Dieses Objekt enthält Felder, anhand derer Sie überprüfen können, wie Daten innerhalb des Status gefiltert oder manipuliert wurden, als sie ausgeführt wurden. Das folgende Beispiel zeigt das inspectionData Objekt für einen Task-Status.

"inspectionData": { "input": string, "afterInputPath": string, "afterParameters": string, "result": string, "afterResultSelector": string, "afterResultPath": string, "output": string }

In diesem Beispiel zeigt jedes Feld, das das after Präfix enthält, die Daten an, nachdem ein bestimmtes Feld angewendet wurde. afterInputPathZeigt beispielsweise, wie sich das Anwenden des InputPath Felds auf das Filtern der Rohstatuseingabe auswirkt. Das folgende Diagramm ordnet jedes ASL-Definitionsfeld dem entsprechenden Feld im inspectionData Objekt zu:

Diagramm, das die Zuordnung von ASL-Feldern zu InspectionData zeigt.

Beispiele für die Verwendung der TestState API zum Debuggen der Eingabe- und Ausgabeverarbeitung finden Sie im Folgenden:

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.