AWS Step Functions consente di implementare un processo aziendale come una serie di passaggi che costituiscono un flusso di lavoro.
I singoli passaggi del flusso di lavoro possono richiamare una funzione Lambda o un container con una logica aziendale, aggiornare un database come DynamoDB o pubblicare un messaggio in una coda una volta completata l'esecuzione di tale passaggio o dell'intero flusso di lavoro.

Le opzioni del flusso di lavoro di AWS Step Functions sono due: Standard ed Express. Quando si prevede che il processo aziendale richieda più di cinque minuti per una singola esecuzione, è necessario scegliere Standard. Alcuni esempi di un flusso di lavoro a esecuzione prolungata sono una pipeline di orchestrazione ETL o quando qualsiasi fase del flusso di lavoro attende la risposta di un essere umano per passare alla fase successiva.

I flussi di lavoro rapidi sono adatti per flussi di lavoro che richiedono meno di cinque minuti e sono ideali quando è necessario un volume di esecuzione elevato, ad esempio 100.000 chiamate al secondo. Puoi utilizzare Standard o Express in modo distinto oppure combinarli in modo che un flusso di lavoro Standard più lungo attivi più flussi di lavoro Express più brevi che vengono eseguiti in parallelo.

Orchestrazione dei microservizi

Combina le funzioni Lambda per creare un'applicazione basata sul Web

In questo esempio di un semplice sistema bancario, viene creato un nuovo conto corrente bancario dopo aver verificato il nome e l'indirizzo di un cliente. Il flusso di lavoro inizia con due funzioni Lambda CheckName e CheckAddress in esecuzione in parallelo come stati di attività. Una volta completati entrambi, il flusso di lavoro esegue la funzione Lambda ApproveApplication. È possibile definire clausole retry e catch per gestire gli errori dagli stati delle attività. Puoi utilizzare gli errori di sistema predefiniti o gestire gli errori personalizzati emessi dalle funzioni Lambda nel flusso di lavoro. Poiché il codice del flusso di lavoro si occupa della gestione degli errori, le funzioni Lambda possono concentrarsi sulla logica aziendale e avere meno codice. I flussi di lavoro Express sarebbero più adatti per questo esempio poiché le funzioni Lambda eseguono attività che insieme richiedono meno di cinque minuti, senza dipendenze esterne. 

Combina le funzioni Lambda per creare un'applicazione basata sul Web convalidata da un'operatore

In alcuni casi potrebbe essere necessario un operatore per rivedere e approvare o rifiutare un passaggio nel processo aziendale in modo che il flusso di lavoro possa continuare al passaggio successivo. Consigliamo di utilizzare i flussi di lavoro Standard  workflows quando il tuo flusso di lavoro deve attendere un operatore o processi in cui un sistema esterno potrebbe impiegare più di cinque minuti per rispondere. Qui estendiamo il nuovo processo di apertura dell'account con un passaggio intermedio di notifica all'approvatore. Il flusso di lavoro inizia con l'esecuzione in parallelo degli stati delle attività CheckName e CheckAddress. Lo stato successivo ReviewRequired è uno stato che ha due percorsi possibili: inviare un'e-mail di notifica SNS all'approvatore nell'attività NotifyApprover o procedere allo stato ApproveApplication. Lo stato dell'attività NotifyApprover invia un messaggio di posta elettronica all'approvatore e attende una risposta prima di procedere allo stato di scelta successivo "Approvato". In base alla decisione dell'approvatore, la domanda del conto corrente viene approvata o rifiutata tramite le funzioni Lambda,

Richiamo di un processo aziendale in risposta a un evento tramite i flussi di lavoro Express

In questo esempio, un evento su un bus Eventbridge personalizzato soddisfa una regola e richiama un flusso di lavoro Step Functions come destinazione. Si supponga di disporre di un'applicazione del servizio clienti che deve gestire gli abbonamenti scaduti dei clienti. Una regola EventBridge ascolta gli eventi dell'abbonamento scaduto e richiama un flusso di lavoro di destinazione in risposta. Il flusso di lavoro dell'abbonamento scaduto disabiliterà tutte le risorse di cui è proprietario l'abbonamento scaduto senza eliminarle e invierà un'e-mail al cliente per informarlo che l'abbonamento è scaduto. Queste due operazioni possono essere eseguite in parallelo utilizzando le funzioni Lambda. Alla fine del flusso di lavoro, un nuovo evento viene inviato al router di eventi tramite una funzione Lambda che indica che la scadenza dell'abbonamento è stata elaborata. Per questo esempio, si consiglia di utilizzare i flussi di lavoro Express. Man mano che la tua azienda cresce e inizi a inserire più eventi nel router di eventi, la capacità di richiamare 100.000 esecuzioni di flussi di lavoro al secondo con i flussi di lavoro Express è potente. Guarda l'esempio in azione con questo repository Github.

Sicurezza e automazione informatica

Orchestra una risposta agli incidenti di sicurezza per la creazione di policy IAM

Puoi utilizzare AWS Step Functions per creare un flusso di lavoro automatizzato di risposta agli incidenti di sicurezza che includa una fase di approvazione manuale. In questo esempio, un flusso di lavoro di Step Functions viene attivato quando viene creata una policy IAM. Il flusso di lavoro confronta l'azione della policy con un elenco personalizzabile di azioni limitate. Il flusso di lavoro ripristina temporaneamente la policy, quindi invia una notifica a un amministratore che dovrà approvarla o rifiutarla. Puoi estendere questo flusso di lavoro per la correzione automatica, ad esempio applicando azioni alternative o limitando le azioni a ARN specifici. Guarda questo esempio in azione qui.

Risposta agli eventi operativi nell'account AWS

Puoi ridurre il sovraccarico operativo della manutenzione della tua infrastruttura cloud AWS automatizzando il modo in cui rispondi agli eventi operativi per le tue risorse AWS. Amazon EventBridge fornisce un flusso di eventi di sistema quasi in tempo reale che descrive la maggior parte delle modifiche e delle notifiche per le tue risorse AWS. Da questo flusso, puoi creare regole per instradare eventi specifici a AWS Step Functions, AWS Lambda e altri servizi AWS per ulteriori elaborazioni e azioni automatizzate. In questo esempio, un flusso di lavoro AWS Step Functions viene attivato in base a un evento originato da AWS Health. AWS monitora in modo proattivo i siti di repository di codice più diffusi per le chiavi di accesso IAM che sono state esposte pubblicamente. Supponiamo che una chiave di accesso IAM sia stata esposta su GitHub. AWS Health genera un evento AWS_RISK_CREDENTIALS_EXPOSED nell'account AWS correlato alla chiave esposta. Una regola Amazon Eventbridge configurata rileva questo evento e richiama un flusso di lavoro di Step Functions. Con l'aiuto delle funzioni AWS Lambda, il flusso di lavoro quindi elimina la chiave di accesso IAM esposta, riepiloga l'attività API recente per la chiave esposta e invia il messaggio di riepilogo a un argomento Amazon SNS per notificare i sotto scrittori, in questo ordine. Guarda questo esempio in azione qui.

Sincronizzazione dei dati tra i bucket S3 di origine e di destinazione

Puoi utilizzare Amazon S3 per ospitare un sito Web statico e Amazon CloudFront per distribuire i contenuti in tutto il mondo. In qualità di proprietario di un sito Web, potresti aver bisogno di due bucket S3 per caricare i contenuti del tuo sito Web: uno per lo staging e il test e uno per la produzione. Vuoi aggiornare il bucket di produzione con tutte le modifiche del bucket di staging, senza dover creare un nuovo bucket da zero ogni volta che aggiorni il tuo sito Web. In questo esempio, il flusso di lavoro di Step Functions esegue le attività in due cicli paralleli e indipendenti: un ciclo copia tutti gli oggetti dal bucket di origine al bucket di destinazione, ma esclude gli oggetti già presenti nel bucket di destinazione. Il secondo ciclo elimina tutti gli oggetti nel bucket di destinazione non trovati nel bucket di origine. Un set di funzioni AWS Lambda esegue i singoli passaggi: convalida l'input, ottiene gli elenchi di oggetti dai bucket di origine e di destinazione e copia o elimina gli oggetti in batch. Guarda questo esempio insieme al suo codice in dettaglio qui. Scopri di più su come creare rami di esecuzione paralleli nella tua macchina a stati qui.

Elaborazione dati e orchestrazione ETL

Creazione di una pipeline di elaborazione dati per lo streaming di dati

In questo esempio, Freebird crea una pipeline di elaborazione dei dati per elaborare i dati del webhook da più origini in tempo reale ed eseguire funzioni Lambda che modificano i dati. In questo caso d'uso, i dati webhook di diverse applicazioni di terze parti vengono inviati tramite Gateway Amazon API a un flusso di dati Amazon Kinesis. Una funzione AWS Lambda estrae i dati da questo flusso Kinesis e attiva un flusso di lavoro Express. Questo flusso di lavoro passa attraverso una serie di passaggi per convalidare, elaborare e normalizzare questi dati. Alla fine, una funzione Lambda aggiorna l'argomento SNS che attiva i messaggi alle funzioni Lambda a valle per i passaggi successivi attraverso una coda SQS. Potresti avere fino a 100.000 chiamate di questo flusso di lavoro al secondo per dimensionare la pipeline di elaborazione dei dati.

Automatizzazione delle fasi di un processo ETL

Puoi utilizzare Step Functions per orchestrare tutte le fasi di un processo ETL, con diverse origini dei dati e destinazioni. 

In questo esempio, il flusso di lavoro ETL di Step Functions aggiorna Amazon Redshift ogni volta che sono disponibili nuovi dati nel bucket S3 di origine. La macchina a stati Step Functions avvia un processo Batch AWS e ne monitora lo stato per il completamento o gli errori. Il processo Batch AWS recupera lo script .sql del flusso di lavoro ETL dall'origine, ad esempio Amazon S3, e aggiorna la destinazione, ad esempio Amazon Redshift, tramite un container PL/SQL. Il file .sql contiene il codice SQL per ogni fase della trasformazione dei dati. Puoi attivare il flusso di lavoro ETL con un evento EventBridge o manualmente tramite l'AWS CLI o utilizzando gli SDK AWS o persino uno script di automazione personalizzato. Puoi avvisare un amministratore tramite SNS che attiva un'e-mail in caso di errori in qualsiasi fase del flusso di lavoro o alla fine dell'esecuzione. Questo flusso di lavoro ETL è un esempio in cui è possibile utilizzare i flussi di lavoro standard. Guarda questo esempio in dettaglio qui. Puoi ottenere ulteriori informazioni sull'invio di un processo Batch AWS tramite un progetto di esempio qui.

Esecuzione di una pipeline ETL con più processi in parallelo

Le operazioni di estrazione, caricamento e trasformazione (ETL) trasformano i dati non elaborati in set di dati utili, trasformando i dati in informazioni fruibili. 

Puoi utilizzare Step Functions per eseguire più processi ETL in parallelo in cui i set di dati di origine potrebbero essere disponibili in momenti diversi e ciascun processo ETL viene attivato solo quando il set di dati corrispondente diventa disponibile. Questi processi ETL possono essere gestiti da diversi servizi AWS, come AWS Glue, Amazon EMR, Amazon Athena o altri servizi non AWS.
In questo esempio, hai due processi ETL separati in esecuzione su AWS Glue che elaborano un set di dati di vendita e un set di dati di marketing. Una volta elaborati entrambi i set di dati, un terzo lavoro ETL combina l'output dei lavori ETL precedenti per produrre un set di dati combinato. Il flusso di lavoro di Step Functions attende finché i dati non sono disponibili in S3. Mentre il flusso di lavoro principale viene avviato in base a una pianificazione, un gestore di eventi EventBridge è configurato su un bucket Amazon S3, in modo che quando i file del set di dati di vendita o marketing vengono caricati nel bucket, la macchina a stati può attivare il processo ETL "ProcessSales Data" o "ProcessMarketingData" a seconda del set di dati reso disponibile. 

Guarda questa architettura in dettaglio qui per configurare l'architettura di orchestrazione ETL nel tuo account AWS. Scopri come gestire un processo Batch AWS da Step Functions qui.

Elaborazione dei dati su larga scala

Puoi utilizzare Step Functions per eseguire iterazioni su decine di milioni di elementi in un set di dati, ad esempio un array JSON, un elenco di oggetti in S3 o un file CSV in un bucket S3. Potrai quindi elaborare i dati in parallelo con un'elevata simultaneità.

In questo esempio, il flusso di lavoro Step Functions utilizza uno stato della mappa in modalità distribuita per elaborare un elenco di oggetti S3 in un bucket S3. Step Functions itera sull'elenco di oggetti e quindi avvia migliaia di flussi di lavoro paralleli, in esecuzione contemporaneamente, per elaborare gli elementi. Puoi utilizzare servizi di calcolo, come Lambda, che ti aiutano a scrivere codice in qualsiasi lingua supportata. Puoi anche scegliere tra oltre 220 servizi AWS appositamente creati da includere nel flusso di lavoro dello stato della mappa. Una volta completate le esecuzioni dei flussi di lavoro figlio, Step Functions può esportare i risultati in un bucket S3 rendendolo disponibile per la revisione o per un'ulteriore elaborazione.

Diagramma di elaborazione dei dati su larga scala

Operazioni di Machine learning

Esecuzione di un processo ETL e creazione, addestramento e distribuzione di un modello di machine learning

In questo esempio, un flusso di lavoro di Step Functions viene eseguito in base a una pianificazione attivata da EventBridge per l'esecuzione una volta al giorno. Il flusso di lavoro inizia controllando se sono disponibili nuovi dati in S3. Successivamente, esegue un processo ETL per trasformare i dati. Successivamente, addestra e distribuisce un modello di machine learning su questi dati con l'uso di funzioni Lambda che attivano un lavoro SageMaker e attendono il completamento prima che il flusso di lavoro passi alla fase successiva. Infine, il flusso di lavoro attiva una funzione Lambda per generare previsioni che vengono salvate in S3. Completa la procedura dettagliata per creare questo flusso di lavoro qui.

Automatizza un flusso di lavoro di machine learning utilizzando l'SDK data science di AWS Step Functions

L'SDK data science di AWS Step Functions è una libreria open source che consente di creare flussi di lavoro che elaborano e pubblicano modelli di machine learning utilizzando Amazon SageMaker e AWS Step Functions. L'SDK fornisce un'API Python che copre ogni fase di una pipeline di machine learning: formazione, regolazione, trasformazione, modellazione e configurazione degli endpoint. Puoi gestire ed eseguire questi flussi di lavoro direttamente in Python e nei notebook Jupyter. L'esempio seguente illustra le fasi di addestramento e trasformazione di un flusso di lavoro di machine learning. La fase di addestramento avvia un processo di addestramento di Sagemaker e invia gli artefatti del modello a S3. La fase di salvataggio del modello crea un modello su SageMaker utilizzando gli artefatti del modello da S3. La fase di trasformazione avvia un processo di trasformazione SageMaker. La fase di creazione della configurazione dell'endpoint definisce una configurazione dell'endpoint su SageMaker. La fase di creazione dell'endpoint distribuisce il modello addestrato all'endpoint configurato. Visualizza il notebook qui.

Elaborazione dei media

Estrazione dei dati da PDF o immagini per l'elaborazione

In questo esempio, imparerai come combinare AWS Step Functions, AWS Lambda e Amazon Textract per scansionare una fattura PDF ed estrarne il testo e i dati per elaborare un pagamento. Amazon Textract analizza il testo e i dati della fattura e avvia un flusso di lavoro Step Functions tramite SNS, SQS e Lambda per ogni completamento riuscito del lavoro. Il flusso di lavoro inizia con una funzione Lambda che salva i risultati di un'analisi della fattura riuscita in S3. Ciò attiva un'altra funzione Lambda che elabora il documento analizzato per verificare se è possibile elaborare un pagamento per questa fattura e aggiorna le informazioni in DynamoDB. Se la fattura può essere elaborata, il flusso di lavoro controlla se la fattura è stata approvata per il pagamento. In caso contrario, richiede a un revisore tramite SNS di approvare manualmente la fattura. Se viene approvata, una funzione Lambda archivia la fattura elaborata e termina il flusso di lavoro. Guarda questo esempio insieme al suo codice in dettaglio qui.

Divisione e transcodifica video utilizzando una parallelizzazione massiva

In questo esempio, la Thomson Reuters ha creato una soluzione di transcodifica video divisa serverless utilizzando AWS Step Functions e AWS Lambda. Aveva bisogno di transcodificare circa 350 videoclip di notizie al giorno in 14 formati per ciascun videoclip, il più rapidamente possibile. L'architettura utilizza FFmpeg, un codificatore audio e video open source che elabora solo un file multimediale in modo seriale. Al fine di migliorare il throughput per fornire la migliore esperienza del cliente, la soluzione era utilizzare AWS Step Functions e Amazon S3 per elaborare le cose in parallelo. Ogni video è suddiviso in segmenti di 3 secondi, elaborati in parallelo e poi messo insieme agli altri alla fine.

Il primo passaggio è una funzione Lambda chiamata Individua fotogrammi chiave che identifica le informazioni necessarie per suddividere il video. La funzione Lambda Dividi video divide quindi il video in base ai fotogrammi chiave e archivia i segmenti in un bucket S3. Ogni segmento viene quindi elaborato in parallelo dalle funzioni Lambda e inserito in un bucket di destinazione. La macchina a stati segue l'elaborazione finché non vengono elaborati tutti gli N segmenti. Quindi attiva una funzione Lambda finale che concatena i segmenti elaborati e archivia il video risultante in un bucket S3.

Creazione di una pipeline di transcodifica video serverless tramite Amazon MediaConvert

In questo esempio, impareremo come AWS Step Functions, AWS Lambda e AWS Elemental MediaConvert possono essere orchestrati insieme verso capacità di transcodifica completamente gestite per contenuti on demand. Questo caso d'uso si applica alle aziende con volumi elevati o variabili di contenuti video di origine che desiderano elaborare i contenuti video nel cloud o spostare i carichi di lavoro nel cloud in futuro.
La soluzione di video on demand dispone di tre flussi di lavoro secondari attivati da un flusso di lavoro di Step Functions principale:

  • Acquisizione: questo può essere un flusso di lavoro Express. Un file di origine rilasciato in S3 attiva questo flusso di lavoro per importare i dati.
  • Elaborazione: questo flusso di lavoro esamina l'altezza e la larghezza del video e crea un profilo di codifica. Dopo l'elaborazione, viene attivato un processo di codifica tramite AWS Elemental MediaConvert.
  • Pubblicazione: il passaggio finale verifica se le risorse sono disponibili nei bucket S3 di destinazione e notifica all'amministratore che il processo è stato completato.

Nozioni di base su AWS Step Functions

Visita la pagina sulle nozioni di base
Sei pronto per iniziare?
Accedi alla console AWS Step Functions.
Hai altre domande?
Contattaci