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à.
Stato del flusso di lavoro delle attività
Uno stato Task
("Type": "Task"
) rappresenta una singola unità di lavoro eseguita da una macchina a stati. Un'attività esegue il lavoro utilizzando un'attività o un AWS Lambda funzione, integrandosi con altre supportate Servizi AWSo invocando una terza parteAPI, come Stripe.
Amazon States Language rappresenta le attività impostando il tipo di stato Task
e fornendo all'attività l'Amazon Resource Name (ARN) dell'attività, della funzione Lambda o dell'endpoint di terze partiAPI. La seguente definizione dello stato dell'attività richiama una funzione Lambda denominata. HelloFunction
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:HelloFunction
:$LATEST"
},
"End": true
}
Tipi di attività
Step Functions supporta i seguenti tipi di attività che è possibile specificare in una definizione dello stato dell'attività:
È possibile specificare un tipo di attività fornendolo ARN nel Resource
campo di una definizione dello stato dell'attività. L'esempio seguente mostra la sintassi del Resource
campo. Tutti i tipi di task tranne quello che richiama una terza parte utilizzano la API seguente sintassi. Per informazioni sulla sintassi del Task, vedere. HTTP Chiama terze parti APIs nei flussi di lavoro Step Functions
Nella definizione dello stato dell'attività, sostituite il testo in corsivo nella seguente sintassi con AWS informazioni specifiche sulla risorsa.
arn:partition
:service
:region
:account
:task_type
:name
L'elenco seguente illustra i singoli componenti di questa sintassi:
-
partition
è il AWS Step Functions partizione da usare, più comunementeaws
. -
service
indica il Servizio AWS utilizzato per eseguire l'operazione e può avere uno dei seguenti valori: -
region
è il AWS Codice regionale in cui l'attività di Step Functions o il tipo di macchina a stati, la funzione Lambda o qualsiasi altra AWS la risorsa è stata creata. -
account
è il Account AWS ID in cui è stata definita la risorsa. -
task_type
è il tipo di task da eseguire. Può essere uno dei seguenti valori:-
activity
— Un'attività. -
function
— Una funzione Lambda. -
— Il nome di un servizio connesso supportato (vediIntegrazione dei servizi con Step Functions).servicename
-
-
name
è il nome della risorsa registrata (nome dell'attività, nome della funzione Lambda o API azione del servizio).
Nota
Step Functions non supporta il riferimento ARNs tra partizioni o regioni. Ad esempio, non è aws-cn
possibile richiamare attività nella aws
partizione e viceversa.
Nelle sezioni seguenti vengono fornite ulteriori informazioni su ogni tipo di task.
Attività
Le attività rappresentano lavoratori (processi o thread), da te implementati e ospitati, che eseguono un task specifico. Sono supportati solo dai flussi di lavoro standard, non dai flussi di lavoro Express.
L'attività Resource
ARNs utilizza la seguente sintassi.
arn:partition
:states:region
:account
:activity:name
Nota
È necessario creare attività con Step Functions (utilizzando un'CreateActivityAPIazione o la console Step Functions
Per ulteriori informazioni sulla creazione di un'attività e l'implementazione di lavoratori, consultare Attività.
Funzioni Lambda
Le attività Lambda eseguono una funzione utilizzando AWS Lambda. Per specificare una funzione Lambda, usa la ARN funzione Lambda nel campo. Resource
A seconda del tipo di integrazione (Integrazione ottimizzata o AWS SDKintegrazione) utilizzata per specificare una funzione Lambda, la sintassi del campo della funzione Lambda varia. Resource
La seguente sintassi di Resource
campo è un esempio di integrazione ottimizzata con una funzione Lambda.
"arn:aws:states:::lambda:invoke"
La seguente sintassi di Resource
campo è un esempio di AWS SDKintegrazione con una funzione Lambda.
"arn:aws:states:::aws-sdk:lambda:invoke"
La seguente definizione di Task
stato mostra un esempio di integrazione ottimizzata con una funzione Lambda denominata. HelloWorld
"LambdaState": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-1:function:HelloWorld:$LATEST
"
},
"Next": "NextState"
}
Una volta completata la funzione Lambda specificata nel Resource
campo, il relativo output viene inviato allo stato identificato nel Next
campo (» «). NextState
A supportata Servizio AWS
Quando si fa riferimento a una risorsa connessa, Step Functions richiama direttamente le API azioni di un servizio supportato. Specifica il servizio e l'operazione nel campo Resource
.
Il servizio connesso Resource
ARNs utilizza la seguente sintassi.
arn:partition
:states:region
:account
:servicename
:APIname
Nota
Per creare una connessione sincrona a una risorsa connessa, aggiungi .sync
a APIname
voce in. ARN Per ulteriori informazioni, consulta Integrazione dei servizi .
Per esempio:
{
"StartAt": "BATCH_JOB",
"States": {
"BATCH_JOB": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobDefinition": "preprocessing",
"JobName": "PreprocessingBatchJob",
"JobQueue": "SecondaryQueue",
"Parameters.$": "$.batchjob.parameters",
"RetryStrategy": {
"attempts": 5
}
},
"End": true
}
}
}
campi relativi allo stato dell'attività
Oltre ai campi di stato comuni, gli stati Task
hanno i seguenti campi.
-
Resource
(Obbligatorio) -
AURI, in particolare uno ARN che identifica in modo univoco l'attività specifica da eseguire.
-
Parameters
(facoltativo). -
Utilizzato per passare informazioni alle API azioni delle risorse connesse. I parametri possono utilizzare una combinazione di elementi statici JSON e JsonPath
. Per ulteriori informazioni, consulta Passaggio di parametri a un servizio API in Step Functions. Credentials
(facoltativo).-
Specifica un ruolo di destinazione che il ruolo di esecuzione della macchina a stati deve assumere prima di richiamare quello specificato.
Resource
In alternativa, è anche possibile specificare un JSONPath valore o una funzione intrinseca che si risolva in un IAM ruolo in fase di esecuzione in base ARN all'input di esecuzione. Se si specifica un JSONPath valore, è necessario prefissarlo con la notazione.$.
Per esempi di utilizzo di questo campo nello
Task
stato, vedi. Esempi di campi Credentials di Task State Per un esempio di utilizzo di questo campo per accedere a un account multiplo AWS risorsa dalla tua macchina a stati, vediAccesso a più account AWS risorse in Step Functions.Nota
Questo campo è supportato dalle funzioni Lambda Tipi di attività che utilizzano e da AWS servizio.
-
ResultPath
(facoltativo). -
Specifica dove (nell'input) posizionare i risultati dell'esecuzione del task specificato in
Resource
. L'input viene quindi filtrato come specificato dal campoOutputPath
(se presente) prima di essere utilizzato come output dello stato. Per ulteriori informazioni, consultare Elaborazione di input e output. -
ResultSelector
(facoltativo). -
Passa una raccolta di coppie chiave-valore, in cui i valori sono statici o selezionati dal risultato. Per ulteriori informazioni, consulta ResultSelector.
-
Retry
(facoltativo). -
Un array di oggetti, denominati retrier, che definiscono una policy per i nuovi tentativi se si verificano errori di runtime nello stato. Per ulteriori informazioni, consulta Esempi di macchine a stati che utilizzano Retry e Catch.
-
Catch
(facoltativo). -
Un array di oggetti, denominati catcher, che definiscono uno stato di fallback. Questo stato viene eseguito se rileva errori di runtime e la relativa policy per i nuovi tentativi è esaurita o non è definita. Per ulteriori informazioni, consulta Stati di fallback.
-
TimeoutSeconds
(facoltativo). -
Speciifica il tempo massimo di esecuzione di un'attività o di un'attività prima che scada con l'States.Timeouterrore e abbia esito negativo. Il valore di timeout deve essere positivo, un numero intero diverso da zero. Il valore predefinito è
99999999
.Il conteggio dei timeout inizia dopo l'avvio di un'attività, ad esempio quando
LambdaFunctionStarted
gli eventiActivityStarted
o gli eventi vengono registrati nella cronologia degli eventi di esecuzione. Per le attività, il conteggio inizia quandoGetActivityTask
riceve un token eActivityStarted
viene registrato nella cronologia degli eventi di esecuzione.All'avvio di un'attività, Step Functions attende una risposta positiva o negativa da parte dell'operatore dell'attività o dell'addetto all'attività entro la
TimeoutSeconds
durata specificata. Se l'operatore dell'attività o dell'attività non risponde entro questo periodo, Step Functions contrassegna l'esecuzione del flusso di lavoro come non riuscita.Nota
HTTPil timeout dell'attività ha un massimo di 60 secondi, anche se
TimeoutSeconds
supera tale limite. Consulta la sezione Quote relative a HTTP Task -
TimeoutSecondsPath
(facoltativo). -
Se desideri fornire un valore di timeout in modo dinamico dall'input dello stato utilizzando un percorso di riferimento, usa.
TimeoutSecondsPath
Una volta risolto, il percorso di riferimento deve selezionare campi i cui valori sono numeri interi positivi.Nota
Uno
Task
stato non può includere entrambiTimeoutSeconds
eTimeoutSecondsPath
. HTTPil timeout dell'attività ha un massimo di 60 secondi, anche se ilTimeoutSecondsPath
valore supera tale limite. -
HeartbeatSeconds
(facoltativo). -
Determina la frequenza dei segnali del battito cardiaco che un addetto all'attività invia durante l'esecuzione di un'attività. I battiti cardiaci indicano che un'attività è ancora in esecuzione e richiede più tempo per essere completata. I battiti cardiaci impediscono che un'attività o un'attività scada entro la durata prevista.
TimeoutSeconds
HeartbeatSeconds
deve essere un valore intero positivo, diverso da zero, inferiore al valore del campo.TimeoutSeconds
Il valore predefinito è99999999
. Se trascorre più tempo dei secondi specificati tra i battiti cardiaci dell'operazione, lo stato dell'operazione ha esito negativo e viene generato un errore. States.TimeoutPer le attività, il conteggio inizia quando
GetActivityTask
riceve un token eActivityStarted
viene registrato nella cronologia degli eventi di esecuzione. -
HeartbeatSecondsPath
(facoltativo). -
Se desideri fornire un valore del battito cardiaco in modo dinamico dall'input dello stato utilizzando un percorso di riferimento, usa.
HeartbeatSecondsPath
Una volta risolto, il percorso di riferimento deve selezionare campi i cui valori sono numeri interi positivi.Nota
Uno
Task
stato non può includere entrambiHeartbeatSeconds
eHeartbeatSecondsPath
.
Uno stato Task
deve impostare il campo End
su true
se lo stato termina l'esecuzione oppure deve fornire uno stato nel campo Next
che verrà eseguito al completamento dello stato Task
.
Esempi di definizione dello stato dell'attività
Gli esempi seguenti mostrano come specificare la definizione dello stato dell'attività in base alle proprie esigenze.
Timeout dello stato delle attività e intervalli di battito cardiaco
È buona norma impostare un valore di timeout e un intervallo di heartbeat per le attività di lunga durata. Questa operazione può essere eseguita specificando i valori di timeout e heartbeat o impostandoli dinamicamente.
Esempio di notifica di timeout statico e battito cardiaco
Al completamento di HelloWorld
, verrà eseguito lo stato successivo (qui denominato NextState
).
Se non viene completato entro 300 secondi o non invia notifiche heartbeat a intervalli di 60 secondi, questo task viene contrassegnato come failed
.
"ActivityState": {
"Type": "Task",
"Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld",
"TimeoutSeconds": 300,
"HeartbeatSeconds": 60,
"Next": "NextState"
}
Esempio di notifica dinamica del timeout delle attività e del battito cardiaco
In questo esempio, quando AWS Glue il processo viene completato, verrà eseguito lo stato successivo.
Se questa attività non viene completata entro l'intervallo impostato dinamicamente dal AWS Glue
lavoro, l'attività è contrassegnata come. failed
"GlueJobTask": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "myGlueJob"
},
"TimeoutSecondsPath": "$.params.maxTime",
"Next": "NextState"
}
Esempi di campi Credentials di Task State
Specificazione di un ruolo codificato IAM ARN
L'esempio seguente specifica un ruolo di destinazione che IAM il ruolo di esecuzione di una macchina a stati deve assumere per accedere a una funzione Lambda multiaccount denominata. Echo
In questo esempio, il ruolo di destinazione ARN viene specificato come valore codificato.
{
"StartAt": "Cross-account call",
"States": {
"Cross-account call": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn": "arn:aws:iam::111122223333:role/LambdaRole"
},
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo
"
},
"End": true
}
}
}
Specificazione come ruolo JSONPath IAM ARN
L'esempio seguente specifica un JSONPath valore, che si risolverà in un IAM ruolo in ARN fase di esecuzione.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "$.roleArn"
},
...
}
}
}
Specificare una funzione intrinseca come ruolo IAM ARN
L'esempio seguente utilizza la funzione States.Formatintrinseca, che si risolve in un ruolo in fase di esecuzione. IAM ARN
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)"
},
...
}
}
}