Attività - 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à.

Attività

Le attività sono una AWS Step Functions funzionalità che consente di avere un'attività nella macchina statale in cui il lavoro viene eseguito da un lavoratore che può essere ospitata su Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), dispositivi mobili, praticamente ovunque.

Panoramica

In AWS Step Functions, le attività sono un modo per associare il codice in esecuzione da qualche parte (noto come lavoratore di attività) a un task specifico in una macchina a stati. Puoi creare un'attività utilizzando la console Step Functions o chiamandoCreateActivity. Questo fornisce un Amazon Resource Name (ARN) per lo stato dell'attività. Utilizza questo ARN per effettuare il polling dello stato task per verificare la presenza di lavoro nel tuo lavoratore di attività.

Nota

Le attività non hanno versioni e dovrebbero essere retrocompatibili. Se devi apportare una modifica incompatibile con le versioni precedenti a un'attività, crea una nuova attività in Step Functions utilizzando un nome univoco.

Un activity worker può essere un'applicazione in esecuzione su un'istanza Amazon EC2, una AWS Lambda funzione, un dispositivo mobile: qualsiasi applicazione in grado di stabilire una connessione HTTP, ospitata ovunque. Quando Step Functions raggiunge lo stato di attività, il flusso di lavoro attende che un operatore di attività effettui un sondaggio per un'attività. Un addetto alle attività effettua un sondaggio su Step Functions utilizzando GetActivityTask e inviando l'ARN per l'attività correlata. GetActivityTaskrestituisce una risposta che include input (una stringa di input JSON per l'attività) e un taskToken(un identificatore univoco per l'attività). Dopo aver completato il lavoro, il lavoratore di attività può fornire un report dell'esito positivo o negativo utilizzando SendTaskSuccess o SendTaskFailure. Queste due chiamate utilizzano il taskToken offerto da GetActivityTask per associare il risultato al task.

API relative ai task di attività

Step Functions fornisce API per creare ed elencare attività, richiedere un'attività e gestire il flusso della macchina statale in base ai risultati del lavoratore.

Di seguito sono elencate le API di Step Functions correlate alle attività:

Nota

Il polling per i task di attività con GetActivityTask può risultare in una latenza in alcune implementazioni. Consultare Evita la latenza durante i sondaggi relativi alle attività.

Attesa del completamento di un task di attività

Configura il periodo di attesa di uno stato impostando TimeoutSeconds nella definizione del task. Per mantenere il task attivo e in attesa, invia periodicamente un heartbeat dal tuo lavoratore di attività utilizzando SendTaskHeartbeat entro l'intervallo di tempo configurato in TimeoutSeconds. Configurando una durata di timeout prolungata e inviando attivamente un battito cardiaco, un'attività in Step Functions può attendere fino a un anno per il completamento dell'esecuzione.

Se ad esempio hai bisogno di un flusso di lavoro che attenda l'esito di un processo lungo, esegui le operazioni descritte di seguito:

  1. Crea un'attività tramite la console oppure utilizzando CreateActivity. Annota l'ARN dell'attività.

  2. Fai riferimento all'ARN in uno stato task di attività nella definizione della tua macchina a stati e imposta TimeoutSeconds.

  3. Implementa un lavoratore di attività che esegua il polling per ricercare un lavoro utilizzando GetActivityTask e facendo riferimento all'ARN dell'attività.

  4. Utilizza SendTaskHeartbeat periodicamente entro l'intervallo di tempo impostato in HeartbeatSeconds nella definizione di task della tua macchina a stati per impedire il timeout del task.

  5. Avvia un'esecuzione della tua macchina a stati.

  6. Avvia il processo del lavoratore di attività.

L'esecuzione si ferma nello stato task di attività e attende che il tuo lavoratore di attività effettui il polling di un task. Una volta fornito un taskToken al tuo lavoratore di attività, il flusso di lavoro attenderà che SendTaskSuccess o SendTaskFailure fornisca uno stato. Se l'esecuzione non ottiene risultati o una chiamata SendTaskHeartbeat prima dell'intervallo di tempo configurato in TimeoutSeconds, l'esecuzione avrà esito negativo e la cronologia delle esecuzioni conterrà un evento ExecutionTimedOut.

Fasi successive

Per una panoramica dettagliata sulla creazione di una macchina a stati che utilizzi un lavoratore di attività, consulta: