Utilizzo TestState API per testare uno stato in Step Functions - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo TestState API per testare uno stato in Step Functions

TestStateAPIAccetta la definizione di un singolo stato e la esegue. È possibile testare uno stato senza creare una macchina a stati o aggiornare una macchina a stati esistente.

Utilizzando TestState API, è possibile testare quanto segue:

Per testare uno stato, puoi anche usare la Step FunctionsAWS Command Line Interface (AWS CLI)console o ilSDK.

TestStateAPIAssume un IAM ruolo che deve contenere le IAM autorizzazioni necessarie per le risorse a cui accede il tuo stato. Per informazioni sulle autorizzazioni di cui uno stato potrebbe aver bisogno, consulta. IAMautorizzazioni per l'utilizzo TestState API

Considerazioni sull'utilizzo di TestState API

Utilizzando TestStateAPI, è possibile testare solo uno stato alla volta. Gli stati che è possibile testare sono i seguenti:

Durante l'utilizzo di TestStateAPI, tieni presente le seguenti considerazioni.

Utilizzo dei livelli di ispezione in TestState API

Per testare uno stato utilizzando TestStateAPI, è necessario fornire la definizione di tale stato. Il test restituisce quindi un output. Per ogni stato, è possibile specificare la quantità di dettagli che si desidera visualizzare nei risultati del test. Questi dettagli forniscono informazioni aggiuntive sullo stato che stai testando. Ad esempio, se hai utilizzato filtri di elaborazione dei dati di input e output, come InputPatho ResultPathin uno stato, puoi visualizzare i risultati intermedi e finali dell'elaborazione dei dati.

Step Functionsfornisce i seguenti livelli per specificare i dettagli da visualizzare:

Tutti questi livelli restituiscono anche nextState i campi status and. statusindica lo stato dell'esecuzione dello stato. Ad esempio, SUCCEEDEDFAILED,RETRIABLE, eCAUGHT_ERROR. nextStateindica il nome dello stato successivo verso cui passare. Se non hai definito uno stato successivo nella definizione, questo campo restituisce un valore vuoto.

Per informazioni sul test di uno stato utilizzando questi livelli di ispezione nella Step Functions console eAWS CLI, consulta Test di uno stato (Console) eTestare uno stato utilizzando AWS CLI.

INFO inspectionLevel

Se il test ha esito positivo, questo livello mostra l'output dello stato. Se il test fallisce, questo livello mostra l'output dell'errore. Per impostazione predefinita, Step Functions imposta il livello di ispezione su INFOse non si specifica un livello.

L'immagine seguente mostra un test per uno stato Pass che ha esito positivo. Il livello di ispezione per questo stato è impostato su INFOe l'output relativo allo stato viene visualizzato nella scheda Output.

Schermata dell'output a INFO livello di un test superato.

L'immagine seguente mostra un test fallito per uno stato Task quando il livello di ispezione è impostato su INFO. La scheda Output mostra l'output dell'errore che include il nome dell'errore e una spiegazione dettagliata della causa dell'errore.

Schermata dell'output a INFO livello di un test fallito.

DEBUG inspectionLevel

Se il test ha esito positivo, questo livello mostra lo stato di output e il risultato dell'elaborazione dei dati di input e output.

Se il test fallisce, questo livello mostra l'output dell'errore. Questo livello mostra i risultati intermedi dell'elaborazione dei dati fino al punto di errore. Ad esempio, supponiamo di aver testato uno stato Task che richiama una funzione. Lambda Immagina di aver applicato i Filtraggio dell'output dello stato utilizzando i flussi di OutputPath lavoro di Step Functions filtriInputPath, ParametriSpecificazione dello stato dell'output utilizzando i flussi di ResultPath lavoro di Step Functions, e allo stato Task. Supponiamo che l'invocazione sia fallita. In questo caso, il DEBUG livello mostra i risultati dell'elaborazione dei dati in base all'applicazione dei filtri nell'ordine seguente:

  • input— Input in stato grezzo

  • afterInputPath— Input after Step Functions applica il InputPath filtro.

  • afterParameters— L'input effettivo dopo l'Step Functionsapplicazione del Parameters filtro.

Le informazioni diagnostiche disponibili in questo livello possono aiutarti a risolvere i problemi relativi all'integrazione di un servizio o al flusso di elaborazione dei dati di input e output che potresti aver definito.

L'immagine seguente mostra un test per uno stato Pass che ha esito positivo. Il livello di ispezione per questo stato è impostato su. DEBUG La scheda Elaborazione input/output nell'immagine seguente mostra il risultato dell'applicazione di Parameterssull'input fornito per questo stato.

Schermata dell'output a DEBUG livello di un test superato.

L'immagine seguente mostra un test fallito per uno stato Task quando il livello di ispezione è impostato su DEBUG. La scheda Elaborazione input/output nell'immagine seguente mostra il risultato dell'elaborazione dei dati di input e output per lo stato fino al punto in cui si è verificato il fallimento.

Schermata dell'output a DEBUG livello di un test fallito.

TRACE inspectionLevel

Step Functionsfornisce il TRACElivello per testare un HTTPTask. Questo livello restituisce informazioni sulla HTTP richiesta che Step Functions effettua e sulla risposta API restituita da una terza parte. La risposta potrebbe contenere informazioni, come le intestazioni e il corpo della richiesta. Inoltre, è possibile visualizzare l'output dello stato e il risultato dell'elaborazione dei dati di input e output in questo livello.

Se il test fallisce, questo livello mostra l'output dell'errore.

Questo livello è applicabile solo per HTTP Task. Step Functionsgenera un errore se si utilizza questo livello per altri tipi di stato.

Quando si imposta il livello di ispezione su TRACE, è possibile visualizzare anche i segreti inclusi nella EventBridge connessione. A tale scopo, è necessario impostare il revealSecrets parametro su true in TestStateAPI. Inoltre, è necessario assicurarsi che l'IAMutente che chiama il TestState API disponga dell'autorizzazione per l'states:RevealSecretsazione. Per un esempio di IAM politica che imposta l'states:RevealSecretsautorizzazione, vediIAMautorizzazioni per l'utilizzo TestState API. Senza questa autorizzazione, Step Functions genera un errore di accesso negato.

Se si imposta il revealSecrets parametro sufalse, Step Functions omette tutti i segreti nei dati di HTTP richiesta e risposta.

L'immagine seguente mostra un test per un HTTP Task che ha esito positivo. Il livello di ispezione per questo stato è impostato su. TRACE La scheda HTTPRichiesta e risposta nell'immagine seguente mostra il risultato della API chiamata di terze parti.

Schermata dell'output al TRACE livello di un test superato.

IAMautorizzazioni per l'utilizzo TestState API

L'IAMutente che chiama TestState API deve disporre delle autorizzazioni per eseguire le azioni states:TestState andiam:PassRole. Inoltre, se si imposta il revealSecretsparametro sutrue, è necessario assicurarsi che l'IAMutente disponga delle autorizzazioni necessarie per eseguire l'azionestates:RevealSecrets. Senza questa autorizzazione, Step Functions genera un errore di accesso negato.

È inoltre necessario assicurarsi che il ruolo di esecuzione contenga le IAM autorizzazioni necessarie per le risorse a cui accede lo stato. Per informazioni sulle autorizzazioni di cui uno stato potrebbe aver bisogno, consulta Gestione dei ruoli di esecuzione.

Il seguente esempio di IAM policy imposta le states:RevealSecrets autorizzazioni states:TestStateiam:PassRole, e.

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

Test di uno stato (Console)

È possibile testare uno stato nella console e controllare lo stato di output o il flusso di elaborazione dei dati di input e output. Per un HTTPTask, puoi testare la HTTP richiesta e la risposta non elaborate.

Per testare uno stato
  1. Apri la console Step Functions.

  2. Scegli Crea macchina a stati per iniziare a creare una macchina a stati o scegli una macchina a stati esistente.

  3. In Workflow Studio, scegli lo stato che desideri testare. modalità di progettazione

  4. Scegliete Stato di test nel Pannello Inspector pannello di Workflow Studio.

  5. Nella finestra di dialogo Stato di test, effettuate le seguenti operazioni:

    1. Per Ruolo di esecuzione, scegliete un ruolo di esecuzione per testare lo stato. Assicurati di disporre delle IAMautorizzazioni necessarie per lo stato che desideri testare.

    2. (Facoltativo) Fornisci tutti gli JSON input necessari allo stato selezionato per il test.

    3. Per Livello di ispezione, selezionate una delle seguenti opzioni in base ai valori che desiderate visualizzare:

      • INFO— Mostra l'output dello stato nella scheda Output se il test ha esito positivo. Se il test ha esito negativo, INFOmostra l'output dell'errore, che include il nome dell'errore e una spiegazione dettagliata della causa dell'errore. Per impostazione predefinita, Step Functions imposta il livello di ispezione su INFOse non si seleziona un livello.

      • DEBUG— Mostra lo stato di output e il risultato dell'elaborazione dei dati di input e output se il test ha esito positivo. Se il test ha esito negativo, DEBUGmostra l'output dell'errore, che include il nome dell'errore e una spiegazione dettagliata della causa dell'errore.

      • TRACE— Mostra la HTTP richiesta e la risposta non elaborate ed è utile per verificare intestazioni, parametri di query e altri dettagli API specifici. Questa opzione è disponibile solo per il Task. HTTP

        Facoltativamente, puoi scegliere di selezionare Rivela segreti. In combinazione con TRACE, questa impostazione consente di visualizzare i dati sensibili inseriti dalla EventBridge connessione, come API le chiavi. L'identità IAM utente utilizzata per accedere alla console deve disporre dell'autorizzazione per eseguire l'states:RevealSecretsazione. Senza questa autorizzazione, all'avvio Step Functions del test viene generato un errore di accesso negato. Per un esempio di IAM policy che imposta l'states:RevealSecretsautorizzazione, vediIAMautorizzazioni per l'utilizzo TestState API.

    4. Scegli Avvia test.

Testare uno stato utilizzando AWS CLI

È possibile testare uno stato supportato utilizzando TestStateAPIinAWS CLI. Questo API accetta la definizione di uno stato e la esegue.

Per ogni stato, è possibile specificare la quantità di dettagli che si desidera visualizzare nei risultati del test. Questi dettagli forniscono informazioni aggiuntive sull'esecuzione dello stato, compresi i risultati dell'elaborazione dei dati in ingresso e in uscita e le informazioni HTTP su richieste e risposte. Gli esempi seguenti mostrano i diversi livelli di ispezione che è possibile specificare per. TestState API Ricordatevi di sostituire il italicized testo con le informazioni specifiche della risorsa.

Questa sezione contiene i seguenti esempi che descrivono come utilizzare i diversi livelli di ispezione disponibili inStep Functions: AWS CLI

Esempio 1: utilizzo INFO inspectionLevel per testare uno stato Choice

Per testare uno stato utilizzando lo INFO inspectionLevelin the AWS CLI, eseguite il test-state comando come illustrato nell'esempio seguente.

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}'

Questo esempio utilizza uno stato Choice per determinare il percorso di esecuzione per lo stato in base all'input numerico fornito. Per impostazione predefinita, Step Functions imposta inspectionLevel su INFO se non si imposta un livello.

Step Functionsrestituisce il seguente risultato.

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

Esempio 2: utilizzo DEBUG inspectionLevel per eseguire il debug dell'elaborazione dei dati di input e output in uno stato Pass

Per testare uno stato utilizzando DEBUG inspectionLevelin the AWS CLI, eseguite il test-state comando come illustrato nell'esempio seguente.

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

Questo esempio utilizza uno Passare lo stato del workflow stato per mostrare come Step Functions filtra e manipola i dati di input utilizzando i filtri di elaborazione JSON dei dati di input e output. Questo esempio utilizza i seguenti filtri:InputPath,Parametri, Specificazione dello stato dell'output utilizzando i flussi di ResultPath lavoro di Step Functions e. Filtraggio dell'output dello stato utilizzando i flussi di OutputPath lavoro di Step Functions

Step Functionsrestituisce il seguente risultato.

{ "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" }

Esempio 3: utilizzo TRACE inspectionLevel e revealSecrets ispezione della HTTP richiesta inviata a una terza parte API

Per testare un HTTPTask utilizzando il parametro TRACE inspectionLevelinsieme al revealSecretsparametro in AWS CLI, eseguite il test-state comando come illustrato nell'esempio seguente.

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

Questo esempio verifica se il HTTP Task chiama la terza parte specificataAPI,https://httpbin.org/. Mostra anche i dati di HTTP richiesta e risposta per la API chiamata.

{ "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" }

Esempio 4: utilizzo dell'utilità jq per filtrare e stampare la risposta che restituisce TestState API

TestState APIRestituisce JSON i dati come stringhe di escape nella sua risposta. L'AWS CLIesempio seguente estende l'esempio 3 e utilizza l'jqutilità per filtrare e stampare la HTTP risposta TestState API restituita in un formato leggibile dall'uomo. Per informazioni jq e istruzioni di installazione, vedere 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'

L'esempio seguente mostra l'output restituito in un formato leggibile dall'uomo.

{ "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" }

Test e debug del flusso di dati di input e output

TestStateAPIÈ utile per testare ed eseguire il debug dei dati che fluiscono attraverso il flusso di lavoro. Questa sezione fornisce alcuni concetti chiave e spiega come utilizzarli TestState per questo scopo.

Concetti chiave

NelStep Functions, il processo di filtraggio e manipolazione JSON dei dati mentre attraversano gli stati della macchina a stati viene chiamato elaborazione di input e output. Per ulteriori informazioni sul funzionamento, consulta Elaborazione di input e output in Step Functions.

Tutti i tipi di stato presenti in Amazon States Language (ASL) (Task, Parallel, Map, Pass, Wait, Choice, Succeed e Fail) condividono una serie di campi comuni per filtrare e manipolare i JSON dati che li attraversano. Questi campi sono:InputPath,, ParametriResultSelector, Specificazione dello stato dell'output utilizzando i flussi di ResultPath lavoro di Step Functions e. Filtraggio dell'output dello stato utilizzando i flussi di OutputPath lavoro di Step Functions Il supporto per ogni campo varia a seconda degli stati. In fase di esecuzione, Step Functions applica ogni campo in un ordine specifico. Il diagramma seguente mostra l'ordine in cui questi campi vengono applicati ai dati all'interno di uno stato del task:

Ordine dei filtri: InputPath, Parametri, ResultSelector ResultPath, e OutputPath.

L'elenco seguente descrive l'ordine di applicazione dei campi di elaborazione di input e output mostrati nel diagramma.

  1. Lo stato di input è costituito dai JSON dati passati allo stato corrente da uno stato precedente.

  2. InputPathfiltra una parte dell'input allo stato grezzo.

  3. Parametriconfigura l'insieme di valori da passare al Task.

  4. L'attività esegue un lavoro e restituisce un risultato.

  5. ResultSelectorseleziona un insieme di valori da escludere dal risultato dell'attività.

  6. Specificazione dello stato dell'output utilizzando i flussi di ResultPath lavoro di Step Functionscombina il risultato con l'input allo stato grezzo o sostituisce il risultato con esso.

  7. Filtraggio dell'output dello stato utilizzando i flussi di OutputPath lavoro di Step Functionsfiltra una parte dell'output per farla passare allo stato successivo.

  8. Lo stato di output è costituito dai JSON dati passati dallo stato corrente allo stato successivo.

Questi campi di elaborazione di input e output sono opzionali. Se non si utilizza nessuno di questi campi nella definizione dello stato, l'attività utilizzerà l'input dello stato non elaborato e restituirà il risultato dell'attività come output dello stato.

Utilizzo TestState per ispezionare l'elaborazione di input e output

Quando si chiama TestState API e si imposta il inspectionLevel parametro suDEBUG, la API risposta include un oggetto chiamatoinspectionData. Questo oggetto contiene campi che consentono di verificare in che modo i dati sono stati filtrati o manipolati all'interno dello stato in cui sono stati eseguiti. L'esempio seguente mostra l'inspectionDataoggetto per uno stato Task.

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

In questo esempio, ogni campo che contiene il after prefisso mostra i dati dopo l'applicazione di un determinato campo. Ad esempio, afterInputPath mostra l'effetto dell'applicazione del InputPath campo per filtrare l'input allo stato grezzo. Il diagramma seguente mappa ogni campo di ASLdefinizione al campo corrispondente nell'inspectionDataoggetto:

Diagramma che mostra la mappatura dei ASL campi su. inspectionData

Per esempi di utilizzo di per TestState API eseguire il debug dell'elaborazione di input e output, consultate quanto segue: