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:
-
Flusso di dati di elaborazione in ingresso e in uscita di uno stato.
-
Un'AWS servizio integrazione con altre AWS servizi richieste e risposte
-
Richiesta e risposta di un'HTTPattività
Per testare uno stato, puoi anche usare la Step FunctionsAWS Command Line Interface (AWS CLI)console o ilSDK.
TestState
APIAssume 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
Argomenti
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 TestState
API, tieni presente le seguenti considerazioni.
-
TestState APINon include il supporto per quanto segue:
-
Stato del flusso di lavoro delle attivitàafferma che utilizzano i seguenti tipi di risorse:
-
modelli di integrazione dei servizi di tipo
.sync
o.waitForTaskToken
-
-
Un test può durare fino a cinque minuti. Se un test supera questa durata, fallisce con l'
States.Timeout
errore.
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. status
indica lo stato dell'esecuzione dello stato. Ad esempio, SUCCEEDED
FAILED
,RETRIABLE
, eCAUGHT_ERROR
. nextState
indica 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.
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.
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 ilInputPath
filtro. -
afterParameters
— L'input effettivo dopo l'Step Functionsapplicazione delParameters
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.
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.
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:RevealSecrets
azione. Per un esempio di IAM politica che imposta l'states:RevealSecrets
autorizzazione, 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.
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:TestState
iam: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
-
Apri la console Step Functions
. -
Scegli Crea macchina a stati per iniziare a creare una macchina a stati o scegli una macchina a stati esistente.
-
In Workflow Studio, scegli lo stato che desideri testare. modalità di progettazione
-
Scegliete Stato di test nel Pannello Inspector pannello di Workflow Studio.
-
Nella finestra di dialogo Stato di test, effettuate le seguenti operazioni:
-
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.
-
(Facoltativo) Fornisci tutti gli JSON input necessari allo stato selezionato per il test.
-
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:RevealSecrets
azione. 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:RevealSecrets
autorizzazione, vediIAMautorizzazioni per l'utilizzo TestState API.
-
-
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'jq
utilità 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
TestState
APIÈ 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
L'elenco seguente descrive l'ordine di applicazione dei campi di elaborazione di input e output mostrati nel diagramma.
-
Lo stato di input è costituito dai JSON dati passati allo stato corrente da uno stato precedente.
-
InputPathfiltra una parte dell'input allo stato grezzo.
-
L'attività esegue un lavoro e restituisce un risultato.
-
ResultSelectorseleziona un insieme di valori da escludere dal risultato dell'attività.
-
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.
-
Filtraggio dell'output dello stato utilizzando i flussi di OutputPath lavoro di Step Functionsfiltra una parte dell'output per farla passare allo stato successivo.
-
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'inspectionData
oggetto 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'inspectionData
oggetto:
Per esempi di utilizzo di per TestState API eseguire il debug dell'elaborazione di input e output, consultate quanto segue: