Domande frequenti su AWS Step Functions

Panoramica

AWS Step Functions è un servizio completamente gestito che facilita il coordinamento dei componenti delle applicazioni distribuite e dei microservizi tramite flussi di lavoro visivi. La creazione di applicazioni a partire da singoli componenti che eseguono una funzione dedicata permette di ricalibrare facilmente le risorse e modificare un'applicazione con maggiore rapidità.

Step Functions è un modo affidabile di coordinare componenti e controllare passo per passo le funzioni della tua applicazione. Step Functions fornisce una console grafica per riordinare e visualizzare i componenti della tua applicazione in una serie di fasi. Questo semplifica la creazione e l'esecuzione di applicazioni multifase.

Step Functions attiva automaticamente e tiene traccia di ogni fase e, in caso di errore, riprova, in modo che la tua applicazione venga eseguita nell'ordine e nel modo previsto. Step Functions registra lo stato di ogni fase, per consentirti, in caso di errore, di eseguire una diagnosi e risolvere i problemi più rapidamente. Puoi modificare e aggiungere fasi senza bisogno di scrivere il codice, per consentire un'evoluzione e un'innovazione più rapide della tua applicazione.

La suddivisione di un'applicazione in componenti di servizio (o passaggi) garantisce che il guasto di un componente non provochi l'arresto dell'intero sistema. Ogni componente si ridimensiona in modo indipendente e quel componente può essere aggiornato senza richiedere la ridistribuzione dell'intero sistema dopo ogni modifica.

Il coordinamento dei componenti del servizio prevede la gestione di dipendenze di esecuzione e programmazione e simultaneità in base al flusso logico dell'applicazione. In un'applicazione di questo genere, puoi utilizzare l'orchestrazione del servizio per compiere queste operazioni e per gestire gli errori.

Step Functions facilita la gestione di qualsiasi problema di elaborazione o processo di business che può essere suddiviso in una serie di fasi. E utile anche per creare flussi di lavoro end-to-end per gestire lavori con interdipendenze. I casi d’uso più comuni sono:

  • Elaborazione dati: unificare dati da vari database in report unificati, perfezionare e ridurre set di dati di grosse dimensioni in formati utili, iterare ed elaborare milioni di file in un bucket Amazon Simple Storage Service (S3) con un numero elevato di flussi di lavoro simultanei o coordinare analisi multi-step e flussi di lavoro machine learning
  • Creazione di applicazioni basate sull’IA generativa serverless: sfruttare Step Functions per orchestrare le interazioni con i modelli di base di Amazon Bedrock, gestire tempestivamente, perfezionare e arricchire con le funzionalità di oltre 220 servizi AWS
  • DevOps e automazione IT: costruire strumenti per integrazione continua e implementazione continua, o creare applicazioni guidate dagli eventi che rispondono automaticamente ai cambi nell'infrastruttura.
  • E-commerce: Automatizza processi di business mission-critical, come l’evasione degli ordini e il monitoraggio dell’inventario.
  • Applicazioni Web: Implementa processi stabili di registrazione degli utenti e autenticazione degli accessi.

Per maggiori dettagli, esplora i casi d'uso e le testimonianze dei clienti di AWS Step Functions.

Quando utilizzi Step Functions, definisci macchine a stati che descrivono il tuo flusso di lavoro come una serie di fasi, la loro relazione, gli input e gli output. Le macchine a stati contengono un numero di stati, ognuno dei quali rappresenta una fase nel diagramma del flusso di lavoro.

Gli stati possono eseguire lavoro, fare scelte, passare parametri, iniziare esecuzioni parallele, gestire timeout o terminare il tuo flusso di lavoro con un successo o un fallimento.

La console visiva rappresenta automaticamente in modo grafico il singolo stato nell'ordine di esecuzione, semplificando la pianificazione di applicazioni multifase. La console evidenzia lo stato di ogni fase in tempo reale e fornisce la cronologia dettagliata di ogni esecuzione.

Per maggiori informazioni, consulta Come funziona Step Functions nella Guida per gli sviluppatori di Step Functions.

Puoi orchestrare qualsiasi servizio AWS usando le integrazioni dei servizi o qualsiasi componente applicativo autogestito usando task di attività.

Le integrazioni dei servizi consentono di creare chiamate ai servizi AWS e di includere la risposta nel flusso di lavoro. Le integrazioni dei servizi dell'SDK AWS consentono di richiamare una delle oltre 9.000 operazioni API AWS da oltre 200 servizi direttamente dal tuo flusso di lavoro.

Le integrazioni dei servizi ottimizzati semplificano ulteriormente l'uso di servizi comuni come AWS Lambda, Amazon Elastic Container Service (ECS), AWS Glue o Amazon EMR con capacità che includono la generazione di policy IAM e il modello RunAJob che attende automaticamente il completamento dei lavori asincroni.

I task di attività consentono l'integrazione con le attività che esegui in una posizione a tua scelta, incluso in Amazon Elastic Compute Cloud (EC2), in Amazon ECS, su un dispositivo mobile o su un server on-premises. Il worker di attività usa Step Functions per il lavoro, accetta qualsiasi input da Step Functions, esegue il lavoro usando il tuo codice e restituisce i risultati. Dato che i worker attività richiedono lavoro, è facile usare worker che sono implementati con un firewall.

Una macchina di stato AWS Step Functions può contenere combinazioni di integrazioni di servizi e task di attività. Le applicazioni Step Functions possono combinare worker di attività in esecuzione in un data center con attività di servizio nel cloud. I worker del data center continuano le operazioni come sempre, insieme alle eventuali attività basate su cloud.

Esistono diversi modi per iniziare a usare Step Functions:

Le macchine a stati di AWS Step Functions vengono definite in JSON attraverso le dichiarazioni di Amazon States Language.

Per creare un worker di attività, puoi utilizzare qualsiasi linguaggio di programmazione, a condizione che si possa comunicare con Step Functions utilizzando le API del servizio Web.

Per praticità puoi utilizzare un SDK di AWS nel linguaggio di tua scelta. Lambda supporta il codice scritto in Node.js (JavaScript), Python, Golang (Go) e C# (usando .NET Core runtime o altri linguaggi). Per ulteriori informazioni sul modello di programmazione Lambda, consulta la Guida per gli sviluppatori di Lambda.

È possibile comporre i due tipi di flusso di lavoro:

  • Eseguendo Express Workflows come flusso di lavoro figlio di Standard Workflows: Express Workflow viene richiamato da uno stato di task nel flusso di lavoro di orchestrazione principale e dà esito completamente positivo o negativo dal punto di vista del flusso principale. È soggetto alla policy dei nuovi tentativi del flusso principale per quel task.
     
  • Richiamando Express Workflows dall'interno di un Express Workflow, purché tutti i flussi di lavoro non superino il limite di durata del padre: puoi scegliere di scomporre i tuoi flussi di lavoro in questo modo se il tuo caso d'uso ha una combinazione di passaggi di lunga durata o solo una volta e di alta frequenza e breve durata.

Step Functions include uno stato della mappa per il parallelismo dinamico. Lo stato della mappa ha due modalità operative, In linea e Distribuita, ed entrambe le modalità eseguono la stessa serie di passaggi per una raccolta di elementi. Una mappa in modalità in linea può supportare la simultaneità di 40 diramazioni parallele e limiti della cronologia di esecuzione di 25.000 eventi o circa 6.500 transizioni di stato in un flusso di lavoro. Con la modalità distribuita, puoi eseguire 10.000 diramazioni parallele simultanee. La mappa distribuita è stata ottimizzata per Amazon S3, consentendoti di iterare più facilmente sugli oggetti in un bucket S3. Consulta le domande frequenti nella sezione relativa all'integrazione. Le iterazioni di una mappa distribuita sono suddivise in esecuzioni parallele per aiutarti a superare i limiti del payload e della cronologia delle esecuzioni. Puoi anche scegliere se ogni iterazione viene eseguita da un flusso di lavoro standard, che è idempotente, o da un flusso di lavoro express, che ha una velocità maggiore e un costo inferiore, ma non è idempotente. Scopri di più sullo stato della mappa.

È ora possibile utilizzare il nuovo campo Assegna per definire le variabili del flusso di lavoro e fare riferimento a tali variabili in un secondo momento utilizzando la sintassi $varName. Se StateK deve fare riferimento ai dati generati da uno stato precedente A, è necessario passare esplicitamente i dati attraverso tutti gli stati intermedi senza variabili, mentre con le variabili si assegna il valore a una variabile in StateA e quindi si fa riferimento alla variabile in StateK.

JSONata è un linguaggio di query/trasformazione dei dati open source per dati JSON, come JSONPath, tranne per il fatto che può eseguire operazioni più potenti come la generazione di data e ora e calcoli matematici. Consente di esprimere domande sofisticate in una notazione compatta e potente. JSONata fornisce operatori e funzioni integrati per manipolare e combinare dati e i risultati delle query possono essere formattati in qualsiasi struttura di output JSON utilizzando la familiare sintassi di oggetti e array JSON.

Sì. Le variabili possono essere aggiunte a qualsiasi flusso di lavoro esistente assegnando Variables. Le trasformazioni avanzate dei dati con JSONata sono disponibili in qualsiasi flusso di lavoro esistente dichiarando "QueryLanguage":"JSONata" come linguaggio di interrogazione sui singoli stati o per l'intero flusso di lavoro. Gli attuali clienti con carichi di lavoro di produzione possono sfruttare Variables e JSONata nei flussi di lavoro esistenti e possono scegliere di utilizzare le direttive sui dati migliorate nei nuovi flussi di lavoro. Le funzionalità introdotte da Variables e JSONata, applicate collettivamente, forniscono un percorso di apprendimento più semplice per i nuovi clienti che entrano a far parte di Step Functions all'interno della versione corrente di ASL. Con questo approccio, tutte le future funzionalità di Step Functions saranno disponibili per ogni cliente senza richiedere di aggiornare i flussi di lavoro per utilizzare una nuova versione di ASL.

Invece di utilizzare JSONPath e le funzioni intrinseche per eseguire la selezione e la trasformazione dei dati come fai oggi, utilizzerai JSONata. Per scrivere un'espressione JSONata usando "QueryLanguage":"JSONata", racchiudila tra {% %} in questo modo: "{% JSONata expression %}". Ad esempio, puoi creare una data per oggi in questo modo: "DateStamp": "{% $now() %}".

JSONPath utilizza diverse combinazioni di cinque campi primari per interrogare e trasformare i dati all'interno di ogni stato (InputPath, Parameters, ResultSelector, ResultPath e OutputPath), che sono difficili da ragionare per gli sviluppatori. Ora, con JSONata, puoi scegliere di utilizzare "QueryLanguage":"JSONata" sostituendo i cinque campi con due nuovi campi (Arguments e Output). Il nuovo campo Arguments fornisce funzionalità aggiuntive per la costruzione del valore da inviare a un'API o a un sottoflusso di lavoro e il nuovo campo Output fornisce funzionalità aggiuntive per la costruzione dell'output di stato. Entrambi i campi accettano JSONata per la manipolazione dei dati. "QueryLanguage":"JSONata" fornisce un set semplificato di regole che non utilizzano più la convenzione ”.$” per i nomi dei campi e racchiudono invece le espressioni JSONata in {% %}. È ora possibile scrivere le condizioni dello stato di scelta su una singola riga utilizzando il nuovo campo Condition. Il campo Condition accetta un valore booleano o un valore stringa che deve essere un'espressione JSONPath o JSONata a seconda dell'impostazione QueryLanguage.

Confronti

Valuta l'utilizzo di AWS Step Functions se hai bisogno di coordinare i componenti di un servizio nello sviluppo di applicazioni altamente scalabili e controllabili. Servizio di coda semplice Amazon (Amazon SQS) viene utilizzato quando hai necessità di un servizio di accodamento affidabile e altamente scalabile per l'invio, l'archiviazione e la ricezione di messaggi da e verso servizi diversi.

  • Step Functions tiene traccia di tutte le attività e gli eventi in un'applicazione, SQS richiede di implementare il proprio monitoraggio a livello di applicazione, soprattutto se l'applicazione utilizza più code.
     
  • La console Step Functions e le API di visibilità forniscono una visione incentrata sull'applicazione che ti consente di cercare, amministrare e approfondire i dettagli di un'esecuzione. SQS richiede l'implementazione di una funzionalità aggiuntiva.
     
  • Step Functions offre varie caratteristiche per facilitare lo sviluppo delle applicazioni, come trasferimento di dati tra task e flessibilità nella distribuzione dei task, mentre SQS richiederebbe di implementare funzionalità a livello di applicazione.
     
  • Step Functions ha funzionalità pronte all'uso per creare flussi di lavoro per coordinare la tua applicazione distribuita. SQS ti consente di creare flussi di lavoro di base, ma ha funzionalità limitate.

Step Functions dovrebbe essere preso in considerazione per tutte le nuove applicazioni, in quanto offre un approccio più produttivo e agile per il coordinamento dei componenti dell'applicazione grazie alla presenza di flussi di lavoro visivi. Se hai bisogno che segnali esterni intervengano nei tuoi processi o vuoi avviare processi figlio che restituiscano un risultato a un padre, allora dovresti valutare l'utilizzo di Amazon Simple Workflow Service (Amazon SWF).

Con SWF, anziché scrivere macchine a stati nel linguaggio dichiarativo JSON, puoi scrivere un programma decisore per separare le fasi operative da quelle decisionali. Ciò offre un controllo completo sulla logica di orchestrazione, ma aumenta la complessità delle applicazioni di sviluppo. È possibile scrivere i programmi decisori nel linguaggio di programmazione scelto oppure ricorrere a Flow Framework per utilizzare costrutti di programmazione che strutturano interazioni asincrone per conto dell’utente.

Amazon EventBridge è un servizio di integrazione serverless che utilizza gli eventi per connettere tra loro i componenti dell'applicazione, rendendo più semplice per gli sviluppatori la creazione di applicazioni scalabili basate sugli eventi. API Destinations è una funzionalità di EventBridge che consente di creare regole per inoltrare eventi a endpoint di terze parti per disaccoppiare produttori e consumatori di eventi.

L'integrazione degli endpoint HTTPS di AWS Step Functions consentirà di richiamare i servizi basati su HTTPS e ricevere una risposta che può essere utilizzata per controllare il flusso dell'esecuzione in base alla logica di business. Amazon EventBridge si concentra sugli eventi di routing, mentre Step Functions si concentra sull'orchestrazione dei flussi di lavoro e sulla gestione dello stato. L'integrazione degli endpoint HTTPS di EventBridge API Destinations e Step Functions può supportare una connessione per l'autenticazione, in modo da poter riutilizzare le credenziali di autenticazione tra i vari servizi. Entrambi i servizi possono essere utilizzati in maniera congiunta per creare applicazioni distribuite altamente scalabili e robuste.

Integrazione

Il flusso di lavoro creato con Step Functions può connettere e coordinare oltre 200 servizi AWS usando integrazioni di servizi. Per esempio, puoi:

  • Richiamare una funzione AWS Lambda
  • Eseguire un'attività ECS o AWS Fargate
  • Prendere un elemento esistente da una tabella Amazon DynamoDB o metterne uno nuovo in una tabella DynamoDB
  • Presenta un processo Batch AWS e aspetta che sia completo
  • Richiama il modello di base Amazon Bedrock
  • Pubblica un messaggio su un argomento SNS
  • Inviare un messaggio a una coda Amazon SQS
  • Iniziare l’esecuzione di un lavoro AWS Glue
  • Creare un processo Amazon SageMaker per addestrare un modello di machine learning o trasformare in batch un set di dati

Per maggiori informazioni su come connettere Step Functions ad altri servizi AWS, consulta la Guida per gli sviluppatori di Step Functions. Puoi creare attività nella macchina a stati che eseguono le applicazioni; fai riferimento alle Domande frequenti nella sezione Panoramica e consulta In che modo AWS Step Functions si connette alle mie risorse?

Per i casi d'uso più comuni di Step Functions, visita la pagina dei casi d'uso, dove sono presenti casi dettagliati, insieme alle loro visualizzazioni dell'architettura.

Utilizzando l'integrazione degli endpoint HTTPS di AWS Step Functions, è possibile un'integrazione diretta con i servizi basati su HTTP, incluse le applicazioni SaaS. Utilizzando un'interfaccia visiva, è possibile creare e orchestrare applicazioni distribuite composte da servizi AWS e applicazioni SaaS.

È possibile utilizzare l'API TestState per testare una singola fase del flusso di lavoro, abilitando cicli di feedback più rapidi per accelerare lo sviluppo. TestState consente di chiamare direttamente servizi ed endpoint, modificare l'input per simulare diversi scenari e rivedere la risposta. È possibile accedere a TestState tramite Workflow Studio, semplificando il test durante la creazione senza la necessità di distribuire il flusso di lavoro. TestState accetta una definizione e un input di stato singoli, quindi restituisce in modo sincrono l'output dello stato insieme alle trasformazioni intermedie dei dati. Dopo aver eseguito il flusso di lavoro, è possibile analizzare ed eseguire il debug delle esecuzioni tramite il file di log Amazon CloudWatch, AWS X-Ray e direttamente nella console di Step Functions attraverso un'esperienza visiva che aiuta a identificare rapidamente le aree problematiche. 

Puoi creare flussi di lavoro utilizzando uno stato della mappa in modalità distribuita per eseguire l'elaborazione su larga scala di dati come log, file multimediali, transazioni di vendita o dati di sensori IoT. Step Functions eseguirà l'iterazione degli elementi e avvierà istantaneamente esecuzioni parallele del flusso di lavoro, consentendo di creare un'elaborazione dei dati su richiesta su larga scala. Lo stato della mappa distribuita è stato ottimizzato per funzionare con S3. Puoi specificare un bucket S3 con criteri di filtro, un file manifest S3, una raccolta JSON o un file CSV archiviato in S3 come input per il tuo flusso di lavoro. Puoi anche specificare un bucket S3 per gli output di esecuzione di una mappa distribuita.

Puoi associare le API Step Functions ad Gateway Amazon API in modo che tali API richiamino la macchina a stati quando una richiesta HTTPS viene inviata ad un metodo API da te definito.

Puoi usare l'API di Gateway API per accendere le macchine a stati Step Functions che coordinano i componenti di un'applicazione backend distribuita e integrare task di attività umane nelle fasi dell'applicazione quali richieste di approvazione e risposte.

Inoltre, è possibile inoltrare chiamate serverless asincrone alle API dei servizi utilizzati dall'applicazione. Per ulteriori informazioni, prova il nostro tutorial, Creare un Step Functions API usando API Gateway.

La coreografia e l'orchestrazione sono due modelli diversi di come i servizi distribuiti possono comunicare tra loro. Nell'orchestrazione, la comunicazione è controllata più strettamente e Step Functions, un servizio di orchestrazione, coordina l'interazione e l'ordine in cui i servizi vengono richiamati.

La coreografia raggiunge la comunicazione senza uno stretto controllo. Con Amazon EventBridge gli eventi scorrono tra i servizi senza un coordinamento centralizzato. Molte applicazioni utilizzano sia la coreografia che l'orchestrazione per diversi casi d'uso. 

Esempi di come utilizzare insieme Step Functions ed EventBridge potrebbero includere l'invio di un evento o la creazione di un programma con EventBridge Scheduler per attivare un flusso di lavoro di AWS Step Functions, seguito dall'emissione di eventi in diverse fasi del flusso di lavoro.

AWS Lambda è un servizio di elaborazione serverless basato su eventi che permette di eseguire codice per qualsiasi tipo di applicazione o servizio di back-end senza doversi occupare del provisioning o della gestione dei server. Step Functions è un servizio di orchestrazione serverless che consente di coordinare facilmente più funzioni Lambda in flussi di lavoro flessibili, di cui è semplice eseguire il debug e la modifica. Step Functions manterrà le tue funzioni Lambda prive di logica aggiuntiva, attivando e tracciando ogni fase della tua applicazione al posto tuo.

Sì, Step Functions è un servizio di orchestrazione serverless. AWS Step Functions ricalibra automaticamente le risorse di funzionamento e di calcolo perché le applicazioni siano sempre in grado di rispondere alle variazioni dei carichi di lavoro. Step Functions ha una tolleranza ai guasti integrata e gestisce la capacità dei servizi tra più zone di disponibilità in ogni regione per proteggere le applicazioni da guasti di singoli computer o data center. Queste funzionalità garantiscono elevata disponibilità sia per il servizio sia per il flusso di lavoro dell'applicazione.

Step Functions offre un modello di fatturazione a consumo per aumentare l'agilità e ottimizzare i costi. Ulteriori informazioni sui prezzi di Step Functions.

AWS Step Functions invia i parametri ad Amazon CloudWatch e AWS CloudTrail per il monitoraggio dell'applicazione. CloudWatch raccoglie e monitora i parametri, imposta allarmi e reagisce automaticamente ai cambiamenti in AWS Step Functions.

CloudTrail cattura tutte le chiamate API per Step Functions come eventi, incluse chiamate dalla console Step Functions e da chiamate di codice a API Step Functions. Step Functions supporta anche le regole gestite di Eventi CloudWatch per ogni servizio integrato nel flusso di lavoro e crea e gestisce le regole di Eventi CloudWatch nel tuo account AWS se necessario.

Per maggiori informazioni, consulta Monitoraggio e registrazione nella Guida per gli sviluppatori di Step Functions.

Per impostazione predefinita, i flusso di lavoro express riportano tutti i risultati a CloudWatch Logs, tra cui input e output del flusso di lavoro e passaggi completati. Puoi selezionare livelli di versi di registrazione di log per registrare soltanto gli errori e puoi scegliere di non registrare nel log input e output. I flussi di lavoro che esauriscono i tentativi o che hanno un’eccezione non gestita devono essere rieseguiti dall’inizio.

Step Functions ha un'integrazione ottimizzata con Amazon Bedrock. È possibile richiamare i modelli di base di Bedrock direttamente dal flusso di lavoro di Step Functions utilizzando il linguaggio naturale. Questo dà la possibilità di:   

  • Arricchire i dati elaborati da Step Functions con funzionalità di IA generativa per ridurre la complessità della gestione dei dati, come il riepilogo del testo, la generazione di immagini o la personalizzazione.
  • Recuperare informazioni dai database, come i prezzi dei prodotti più recenti e i dati di personalizzazione degli utenti, e utilizzare le funzioni intrinseche di Step Functions per inserirle nel prompt, assicurando che il LLM utilizzi i dati più recenti per migliorare l'accuratezza della risposta.
  • Generare le integrazioni facendo esaminare a Step Functions i documenti, estrarre i dati, suddividere i documenti e quindi trasformare i dati da testo digitale a integrazione con un processo in più fasi. Questo può essere pianificato come un processo ricorrente.
  • Usa i flussi di lavoro Step Function per il concatenamento dei prompt. È possibile orchestrare più chiamate LLM e scegliere il modello migliore per ogni fase della catena, formando una catena personalizzata di fasi di elaborazione, curando risposte più consapevoli del contesto e accurate dal modello di base.
  • Crea interazioni Human-in-the-Loop (HITL) con il flusso di lavoro di IA generativa per moderare le risposte ed evitare allucinazioni o incorporare una logica per gestire le risposte che non sono supportate dal modello di base.

Sicurezza

Step Functions supporta anche gli endpoint VPC (VPCE) tramite AWS PrivateLink. Puoi accedere a Step Functions dalle funzioni AWS Lambda abilitate per VPC e altri servizi AWS senza passare per la rete Internet pubblica.

Per ulteriori informazioni, consulta la sezione Endpoint Amazon VPC per Step Functions nella Guida per gli sviluppatori di Step Functions.

Conformità

Step Functions è conforme a HIPAA, FedRAMP, SOC, GDPR e altri standard di conformità comuni. Per ottenere un elenco dettagliato degli standard di conformità supportati, visita il sito sulla sicurezza cloud AWS.