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à.
AWS Step Functions si integra con i servizi direttamente in Amazon States Language. È possibile controllare questi servizi AWS utilizzando tre modelli di integrazione del servizio.
-
Chiama un servizio e lascia che Step Functions passi allo stato successivo subito dopo aver ricevuto una risposta HTTP.
-
Chiama un servizio e chiedi a Step Functions di attendere il completamento di un lavoro.
-
Chiama un servizio con un task token e fai in modo che Step Functions attenda che quel token venga restituito con un payload.
Ognuno di questi modelli di integrazione del servizio è controllato dal modo in cui si crea una URI nel campo "Resource"
della definizione dell'attività.
Metodi per chiamare un servizio integrato
Per informazioni sulla configurazione AWS Identity and Access Management (IAM) per i servizi integrati, consulta. In che modo Step Functions genera policy IAM per servizi integrati
Supporto dei modelli di integrazione
I flussi di lavoro standard e i flussi di lavoro Express supportano le stesse integrazioni ma non gli stessi modelli di integrazione.
-
I flussi di lavoro standard supportano le integrazioni Request Response. Alcuni servizi supportano Run a Job (.sync) o Wait for Callback (. waitForTaskToken) ed entrambi in alcuni casi. Consulta la seguente tabella di integrazioni ottimizzate per i dettagli.
-
Express Workflows supporta solo le integrazioni Request Response.
Per aiutarti a decidere tra i due tipi, vedi. Scelta del tipo di flusso di lavoro in Step Functions
AWS Integrazioni SDK in Step Functions
Servizio integrato | Richiesta e risposta | Esegui un Job - .sync | Attendi la richiamata -. waitForTaskToken |
---|---|---|---|
Oltre duecento servizi | Standard ed Express | Non supportato | Standard |
Integrazioni ottimizzate in Step Functions
Servizio integrato | Richiesta e risposta | Esegui un Job - .sync | Attendi la richiamata -. waitForTaskToken |
---|---|---|---|
Amazon API Gateway | Standard ed Express | Non supportato | Standard |
Amazon Athena | Standard ed Express | Standard | Non supportato |
AWS Batch | Standard ed Express | Standard | Non supportato |
Amazon Bedrock | Standard ed Express | Standard | Standard |
AWS CodeBuild | Standard ed Express | Standard | Non supportato |
Amazon DynamoDB | Standard ed Express | Non supportato | Non supportato |
Amazon ECS/Fargate | Standard ed Express | Standard | Standard |
Amazon EKS | Standard ed Express | Standard | Standard |
Amazon EMR | Standard ed Express | Standard | Non supportato |
Amazon EMR on EKS | Standard ed Express | Standard | Non supportato |
Amazon EMR Serverless | Standard ed Express | Standard | Non supportato |
Amazon EventBridge | Standard ed Express | Non supportato | Standard |
AWS Glue | Standard ed Express | Standard | Non supportato |
AWS Glue DataBrew | Standard ed Express | Standard | Non supportato |
AWS Lambda | Standard ed Express | Non supportato | Standard |
AWS Elemental MediaConvert | Standard ed Express | Standard | Non supportato |
Amazon SageMaker AI | Standard ed Express | Standard | Non supportato |
Amazon SNS | Standard ed Express | Non supportato | Standard |
Amazon SQS | Standard ed Express | Non supportato | Standard |
AWS Step Functions | Standard ed Express | Standard | Standard |
Richiesta e risposta
Quando si specifica un servizio nella "Resource"
stringa dello stato dell'attività e si fornisce solo la risorsa, Step Functions attenderà una risposta HTTP e quindi passerà allo stato successivo. Step Functions non aspetterà il completamento di un lavoro.
L'esempio seguente mostra come pubblicare un argomento di Amazon SNS.
"Send message to SNS": {
"Type":"Task",
"Resource":"arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn":"arn:aws:sns:us-east-1:123456789012:myTopic",
"Message":"Hello from Step Functions!"
},
"Next":"NEXT_STATE"
}
Questo esempio fa riferimento all'API Publish di Amazon SNS. Il flusso di lavoro avanza allo stato successivo dopo aver richiamato l'API Publish
.
Suggerimento
Per implementare un flusso di lavoro di esempio che utilizza il modello di integrazione del servizio Request Response, consulta Integrare un servizio nel tutorial introduttivo di questa guida o nel modulo Request Response
Esegui un processo (.sync)
Per i servizi integrati come AWS Batch Amazon ECS, Step Functions può attendere il completamento di una richiesta prima di passare allo stato successivo. Per far attendere Step Functions, specifica il "Resource"
campo nella definizione dello stato dell'attività con il .sync
suffisso aggiunto dopo l'URI della risorsa.
Ad esempio, quando inviate un AWS Batch lavoro, utilizzate il "Resource"
campo nella definizione della macchina a stati, come illustrato in questo esempio.
"Manage Batch task": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/testJobDefinition",
"JobName": "testJob",
"JobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/testQueue"
},
"Next": "NEXT_STATE"
}
Se la .sync
parte viene aggiunta alla risorsa Amazon Resource Name (ARN), Step Functions attende il completamento del lavoro. Dopo la chiamata AWS Batch
submitJob
, il flusso di lavoro si mette in pausa. Una volta completato il lavoro, Step Functions passa allo stato successivo. Per ulteriori informazioni, vedere il progetto AWS Batch di esempio:Gestisci un lavoro in batch con AWS Batch e Amazon SNS.
Se un'attività che utilizza questo modello di integrazione del servizio (.sync
) viene interrotta e Step Functions non è in grado di annullarla, potrebbero essere addebitati costi aggiuntivi dal servizio integrato. Un'attività può essere interrotta se:
-
L'esecuzione della macchina a stati viene interrotta.
-
Un ramo diverso di uno stato parallelo fallisce con un errore non rilevato.
-
Un'iterazione di uno stato della mappa fallisce e viene rilevato un errore non rilevato.
Step Functions farà del suo meglio per annullare l'operazione. Ad esempio, se un'states:startExecution.sync
attività Step Functions viene interrotta, chiamerà l'azione StopExecution
API Step Functions. Tuttavia, è possibile che Step Functions non sia in grado di annullare l'operazione. I motivi di ciò includono, a titolo esemplificativo ma non esaustivo:
-
Il tuo ruolo di esecuzione IAM non è autorizzato a effettuare la chiamata API corrispondente.
-
Si è verificata un'interruzione temporanea del servizio.
Quando si utilizza il modello di integrazione dei .sync
servizi, Step Functions utilizza il polling che utilizza la quota e gli eventi assegnati per monitorare lo stato di un lavoro. Per .sync
le chiamate all'interno dello stesso account, Step Functions utilizza EventBridge gli eventi e i sondaggi APIs specificati nello stato. Task
Per le chiamate tra più account.sync
, Step Functions utilizza solo il polling. Ad esempio, forstates:StartExecution.sync
, Step Functions esegue il polling sull'DescribeExecutionAPI e utilizza la quota assegnata.
Suggerimento
Per implementare un flusso di lavoro di esempio che utilizza il pattern di integrazione.sync, consulta Run a Job (.sync)
Per consultare un elenco di ciò che supportano i servizi integrati in attesa del completamento di un processo (.sync
), vedi Integrazione dei servizi con Step Functions.
Nota
Le integrazioni di servizi che utilizzano i .waitForTaskToken
modelli .sync
or richiedono autorizzazioni IAM aggiuntive. Per ulteriori informazioni, consulta In che modo Step Functions genera policy IAM per servizi integrati.
In alcuni casi, potresti volere che Step Functions continui il flusso di lavoro prima che il lavoro sia completamente completato. È possibile ottenere ciò nello stesso modo in cui si utilizza il modello Attendi una richiamata con Task Token di integrazione dei servizi. Per fare ciò, passa un token di attività al tuo job, quindi restituiscilo utilizzando una chiamata SendTaskSuccess
o SendTaskFailure
API. Step Functions utilizzerà i dati forniti in quella chiamata per completare l'attività, interrompere il monitoraggio del lavoro e continuare il flusso di lavoro.
Attendi una richiamata con Task Token
Le attività di callback forniscono un modo per mettere in pausa un flusso di lavoro finché non viene restituito il token dell’attività. Per un'operazione potrebbe essere necessario attendere un’approvazione umana, integrarsi con una terza parte oppure chiamare i sistemi legacy. Per attività come queste, puoi mettere in pausa Step Functions finché l'esecuzione del flusso di lavoro non raggiunge la quota di servizio di un anno (vedi,Quote relative alla limitazione statale) e attendere il completamento di un processo o flusso di lavoro esterno. In queste situazioni Step Functions consente di passare un token di attività alle integrazioni del servizio AWS SDK e anche ad alcune integrazioni di servizi ottimizzati. L'attività verrà messa in pausa finché non riceverà la restituzione del token con una chiamata SendTaskSuccess
o SendTaskFailure
.
Se uno Task
stato che utilizza il token di attività di callback scade, viene generato un nuovo token casuale. È possibile accedere ai token delle attività dall'oggetto Context.
Nota
Un task token deve contenere almeno un carattere e non può superare i 1024 caratteri.
Per essere utilizzata .waitForTaskToken
con un'integrazione AWS SDK, l'API utilizzata deve disporre di un campo di parametri in cui inserire il token dell'attività.
Nota
È necessario trasferire i token delle attività dai responsabili all'interno dello stesso account. AWS I token non funzioneranno se li invii dai responsabili di un altro account. AWS
Suggerimento
Per implementare un flusso di lavoro di esempio che utilizza un modello di integrazione dei token di attività di callback, vedi Callback with
Per consultare un elenco di ciò che supportano i servizi integrati in attesa del token di un'attività (.waitForTaskToken
), vedi Integrazione dei servizi con Step Functions.
Argomenti
Esempio di token di un’attività
In questo esempio, un flusso di lavoro Step Functions deve integrarsi con un microservizio esterno per eseguire una verifica del credito come parte di un flusso di lavoro di approvazione. Step Functions pubblica un messaggio Amazon SQS che include un task token come parte del messaggio. Un sistema esterno si integra con Amazon SQS e rimuove il messaggio dalla coda. Al termine, restituisce il risultato e il task token originale. Step Functions continua quindi con il suo flusso di lavoro.

Il "Resource"
campo della definizione dell'attività che fa riferimento ad Amazon SQS include .waitForTaskToken
aggiunto alla fine.
"Send message to SQS": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"Parameters": {
"QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue",
"MessageBody": {
"Message": "Hello from Step Functions!",
"TaskToken.$": "$$.Task.Token"
}
},
"Next": "NEXT_STATE"
}
Questo dice a Step Functions di mettere in pausa e attendere il task token. Quando si specifica una risorsa utilizzando .waitForTaskToken
, il token di attività è accessibile nel campo "Parameters"
della definizione dello stato con una designazione speciale di percorso ($$.Task.Token
). L'iniziale $$.
indica che il percorso accede all'oggetto Context e ottiene il token di attività per l'attività corrente in un'esecuzione in esecuzione.
Quando viene completato, il servizio esterno chiama SendTaskSuccess
o SendTaskFailure
con taskToken
incluso. Solo allora il flusso di lavoro procede allo stato successivo.
Nota
Per evitare un'attesa indefinita se un processo non riesce a inviare il token di attività insieme a SendTaskSuccess
o SendTaskFailure
, consulta Configurazione di un timeout Heartbeat per un’operazione in attesa.
Ottieni un token dall'oggetto Context
L'oggetto Context è un oggetto JSON interno che contiene informazioni sull'esecuzione. Come input di stato, è possibile accedervi con un percorso dal campo "Parameters"
durante un'esecuzione. Quando l’accesso viene eseguito dall'interno di una definizione di attività, include informazioni sull'esecuzione specifica, tra cui il token dell’attività.
{
"Execution": {
"Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2019-03-26T20:14:13.192Z"
},
"State": {
"EnteredTime": "2019-03-26T20:14:13.192Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName",
"Name": "name"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
È possibile accedere al token dell’attività utilizzando un percorso speciale dall'interno del campo "Parameters"
della definizione dell'attività. Per accedere all'input o all'oggetto Context, specificate innanzitutto che il parametro sarà un percorso aggiungendo un .$
al nome del parametro. Quanto segue specifica i nodi sia dell'input che dell'oggetto Context in una "Parameters"
specifica.
"Parameters": {
"Input.$": "$",
"TaskToken.$": "$$.Task.Token"
},
In entrambi i casi, l'aggiunta .$
al nome del parametro indica a Step Functions di aspettarsi un percorso. Nel primo caso, "$"
è un percorso che include l'intero input. Nel secondo caso, $$.
specifica che il percorso accederà all'oggetto Context e $$.Task.Token
imposta il parametro sul valore del token dell'attività nell'oggetto Context di un'esecuzione in esecuzione.
Nell'esempio di Amazon SQS, .waitForTaskToken
nel "Resource"
campo indica a Step Functions di attendere la restituzione del token dell'attività. Il "TaskToken.$":
"$$.Task.Token"
parametro passa quel token come parte del messaggio Amazon SQS.
"Send message to SQS": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"Parameters": {
"QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue",
"MessageBody": {
"Message": "Hello from Step Functions!",
"TaskToken.$": "$$.Task.Token"
}
},
"Next": "NEXT_STATE"
}
Per ulteriori informazioni sull'oggetto Context, Accesso ai dati di esecuzione dall'oggetto Context in Step Functions consulta la Elaborazione di input e output sezione di questa guida.
Configurazione di un timeout Heartbeat per un’operazione in attesa
Un'operazione in attesa del token di attività attenderà che l'esecuzione raggiunga la quota di servizio di un anno (vedi Quote relative alla limitazione statale). Per evitare il blocco delle esecuzioni è possibile configurare un intervallo di timeout heartbeat nella definizione della macchina a stati. Utilizzare il campo HeartbeatSeconds per specificare l'intervallo di timeout.
{
"StartAt": "Push to SQS",
"States": {
"Push to SQS": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"HeartbeatSeconds": 600,
"Parameters": {
"MessageBody": { "myTaskToken.$": "$$.Task.Token" },
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/push-based-queue"
},
"ResultPath": "$.SQS",
"End": true
}
}
}
In questa definizione di macchina a stati, un'attività invia un messaggio ad Amazon SQS e attende che un processo esterno richiami il token di attività fornito. Il campo "HeartbeatSeconds":
600
imposta l'intervallo di timeout heartbeat su 10 minuti. L'operazione attenderà che il token dell’attività venga restituito con una di queste azioni API:
Se l'attività di attesa non riceve un token di attività valido in un periodo di 10 minuti, l'operazione ha esito negativo con nome di errore States.Timeout
.
Per ulteriori informazioni, consulta il progetto di esempio dell'attività di callback: Crea un esempio di pattern di callback con Amazon SQS, Amazon SNS e Lambda.