Risorse del servizio Amazon Simple Workflow - Amazon Simple Workflow Service

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

Risorse del servizio Amazon Simple Workflow

Questo capitolo fornisce risorse aggiuntive e informazioni di riferimento utili per lo sviluppo di flussi di lavoro con Amazon SWF.

Tipi di timeout di Amazon SWF

Per garantire che le esecuzioni dei flussi di lavoro vengano eseguite correttamente, Amazon SWF consente di impostare diversi tipi di timeout. Alcuni timeout specificano la durata totale del flusso di lavoro. Altri timeout specificano quanto impiegano le attività prima di essere assegnate a un lavoratore e quanto ci vuole a completarle dal momento in cui sono state pianificate. Tutti i timeout nell'API Amazon SWF sono specificati in secondi. Amazon SWF supporta anche la stringa NONE come valore di timeout, che indica l'assenza di timeout.

Per i timeout relativi alle attività decisionali e alle attività, Amazon SWF aggiunge un evento alla cronologia di esecuzione del flusso di lavoro. Gli attributi dell'evento forniscono informazioni sul tipo di timeout verificatosi e su quale attività decisionale o attività è stata influenzata. Amazon SWF pianifica anche un'attività decisionale. Quando il decisore riceve il nuovo compito decisionale, vedrà l'evento di timeout nella cronologia e intraprenderà l'azione appropriata richiamando l'azione. RespondDecisionTaskCompleted

Un task si considera aperto dal momento in cui è pianificato fino alla sua chiusura. Perciò un task è segnalato come aperto quando un lavoratore lo sta elaborando. Un task è chiuso quando un lavoratore lo segnala come completato, annullato o non riuscito. Un'attività può anche essere chiusa da Amazon SWF a seguito di un timeout.

I timeout nel flusso di lavoro e i task di decisione

Il diagramma seguente mostra la correlazione tra i timeout del flusso di lavoro e di decisione e il ciclo di vita di un flusso di lavoro:

Il ciclo di vita del flusso di lavoro con i timeout

Esistono due tipi di timeout che interessano i task del flusso di lavoro e di decisione:

  • Workflow Start to Close (timeoutType: START_TO_CLOSE): questo timeout specifica il tempo massimo necessario per completare l'esecuzione di un flusso di lavoro. È impostato come predefinito durante la registrazione del flusso di lavoro, ma può essere sovrascritto con un valore diverso quando il flusso di lavoro inizia. Se questo timeout viene superato, Amazon SWF chiude l'esecuzione del flusso di lavoro e aggiunge un evento di WorkflowExecutionTimedOuttipo alla cronologia di esecuzione del flusso di lavoro. Oltre al timeoutType, gli attributi dell'evento specificano la childPolicy valida per l'esecuzione del flusso di lavoro. La policy figlio specifica in che modo vengono gestite le esecuzioni del flusso di lavoro figlio se quella padre scade o termina in altro modo. Ad esempio, se la childPolicy è impostata su TERMINATA, allora le esecuzioni del flusso di lavoro figlio verranno terminate. Una volta scaduta un'esecuzione del flusso di lavoro, non potrai più intervenire se non con chiamate di visibilità.

  • Inizio e chiusura dell'attività decisionale (timeoutType: START_TO_CLOSE): questo timeout specifica il tempo massimo che il decisore corrispondente può impiegare per completare un'attività decisionale. Viene impostato durante la registrazione del tipo di flusso di lavoro. Se questo timeout viene superato, l'attività viene contrassegnata come scaduta nella cronologia di esecuzione del flusso di lavoro e Amazon SWF aggiunge un evento di tipo DecisionTaskTimedOutalla cronologia del flusso di lavoro. Gli attributi dell'evento comprendono gli ID degli eventi corrispondenti a quando il task di decisione è stato pianificato (scheduledEventId) e a quando è iniziato (startedEventId). Oltre ad aggiungere l'evento, Amazon SWF pianifica anche una nuova attività decisionale per avvisare il decisore che tale attività decisionale è scaduta. Dopo che si verifica questo timeout, il tentativo di completare il task di decisione scaduto utilizzando RespondDecisionTaskCompleted non andrà a buon fine.

Timeout nei task di attività

Il diagramma seguente mostra la correlazione tra i timeout e il ciclo di vita di un task di attività:

Il ciclo di vita di un task con i timeout

Esistono quattro tipi di timeout che interessano i task di attività:

  • Inizio attività da inizio a chiusura (timeoutType: START_TO_CLOSE): questo timeout specifica il tempo massimo che un addetto all'attività può impiegare per elaborare un'attività dopo che il lavoratore ha ricevuto l'attività. Tenta di chiudere un'attività scaduta utilizzando RespondActivityTaskCancelede RespondActivityTaskCompletedRespondActivityTaskFailedfallirà.

  • Activity Task Heartbeat (timeoutType: HEARTBEAT): questo timeout specifica il tempo massimo di esecuzione di un'attività prima che il relativo avanzamento nel corso dell'azione possa avvenire. RecordActivityTaskHeartbeat

  • Activity Task Schedule to Start (timeoutType: SCHEDULE_TO_START): questo timeout specifica per quanto tempo Amazon SWF attende prima di scadere il timeout dell'attività se non sono disponibili lavoratori per eseguire l'attività. Una volta scaduto, il task non verrà assegnato ad altri lavoratori.

  • Activity Task Schedule to Close (timeoutType: SCHEDULE_TO_CLOSE): questo timeout specifica quanto tempo può impiegare l'attività dal momento in cui è pianificata al momento in cui viene completata. Come procedura ottimale, questo valore non deve essere maggiore della somma del timeout dell'attività e del schedule-to-start timeout dell'attività. start-to-close

Nota

Ciascun tipo di timeout ha un valore predefinito, generalmente impostato su NONE (infinito). In ogni caso, il tempo massimo per l'esecuzione delle attività è un anno.

In fase di registrazione del tipo di attività si impostano valori predefiniti, ma puoi sovrascriverli con nuovi valori quando pianifichi il task di attività. Quando si verifica uno di questi timeout, Amazon SWF aggiungerà un evento di ActivityTaskTimedOuttipo alla cronologia del flusso di lavoro. L'attributo del valore timeoutType di questo evento specifica quale di questi timeout si è verificato. Per ciascuno dei timeout, il valore del timeoutType è indicato tra parentesi. Gli attributi dell'evento comprendono anche gli ID degli eventi corrispondenti a quando il task di attività è stato pianificato (scheduledEventId) e a quando è iniziato (startedEventId). Oltre ad aggiungere l'evento, Amazon SWF pianifica anche una nuova attività decisionale per avvisare il decisore che si è verificato il timeout.

Endpoint del servizio Amazon Simple Workflow

Un elenco delle regioni e degli endpoint attuali di Amazon SWF è fornito in Riferimenti generali di Amazon Web Services, insieme agli endpoint per altri servizi.

I domini Amazon SWF e tutti i flussi di lavoro e le attività correlati devono esistere all'interno della stessa regione per comunicare tra loro. Inoltre, i domini, i flussi di lavoro e le attività registrati in una regione non esistono in altre regioni. Ad esempio, se crei un dominio denominato "MySampleDominio» sia in us-east-1 che in us-west-2, esistono come domini separati: nessuno dei flussi di lavoro, degli elenchi di attività, delle attività o dei dati associati ai tuoi domini viene condiviso tra le regioni.

Se utilizzi altre AWS risorse nei tuoi flussi di lavoro, come le istanze Amazon EC2, anche queste devono esistere nella stessa regione delle risorse Amazon SWF. Le uniche eccezioni sono i servizi che si estendono su più regioni, come Amazon S3 e IAM. Puoi accedere a questi servizi dai flussi di lavoro presenti nelle regioni che li supportano.

Documentazione aggiuntiva per Amazon Simple Workflow Service

Oltre alla Guida per gli sviluppatori, puoi trovare utile la seguente documentazione.

Riferimento all'API Amazon Simple Workflow Service

Il riferimento all'API Amazon Simple Workflow Service fornisce informazioni dettagliate sull'API HTTP di Amazon SWF, tra cui azioni, strutture di richiesta e risposta e codici di errore.

AWS Flow Framework Documentazione

AWS Flow FrameworkÈ un framework di programmazione che semplifica il processo di implementazione di applicazioni asincrone distribuite che utilizzano Amazon SWF per gestire i flussi di lavoro e le attività, in modo che tu possa concentrarti sull'implementazione della logica del flusso di lavoro.

Ciascuno AWS Flow Framework è progettato per funzionare in modo idiomatico nel linguaggio per cui è stato progettato, quindi puoi lavorare in modo naturale con il tuo linguaggio preferito per implementare flussi di lavoro con tutti i vantaggi di Amazon SWF.

Esiste un AWS Flow Framework per Java. La AWS Flow Framework for Java Developer Guide fornisce informazioni su come ottenere, configurare e utilizzare la versione AWS Flow Framework per Java.

AWS Documentazione SDK

I AWS Software Development Kit (SDK) forniscono l'accesso ad Amazon SWF in molti linguaggi di programmazione diversi. Gli SDK seguono da vicino l'API HTTP, ma forniscono anche interfacce di programmazione specifiche del linguaggio per alcune funzionalità di Amazon SWF. Puoi trovare altre informazioni su ciascun kit SDK visitando i seguenti link.

Nota

Qui sono elencati solo gli SDK che supportano Amazon SWF al momento della stesura. Per un elenco completo degli AWS SDK disponibili, visita la pagina Tools for Amazon Web Services.

Java

AWS SDK for Java Fornisce un'API Java per i servizi di AWS infrastruttura.

Per vedere la documentazione disponibile, consulta la pagina Documentazione di AWS SDK for Java. Puoi anche accedere direttamente alle sezioni Amazon SWF nel riferimento dell'SDK seguendo questi link:

JavaScript

AWS SDK for JavaScript Consente agli sviluppatori di creare librerie o applicazioni che utilizzano AWS servizi utilizzando una semplice easy-to-use API disponibile sia nel browser che all'interno delle applicazioni Node.js sul server.

Per vedere la documentazione disponibile, consulta la pagina Documentazione di AWS SDK for JavaScript. Puoi anche andare direttamente alla sezione Amazon SWF nel riferimento all'SDK seguendo questo link:

.NET

AWS SDK for .NET Si tratta di un unico pacchetto scaricabile che include i modelli di progetto di Visual Studio, la AWS libreria.NET, esempi di codice C# e documentazione. AWS SDK for .NET Ciò semplifica la creazione di applicazioni.NET per Amazon SWF e altri servizi per gli sviluppatori Windows.

Per vedere la documentazione disponibile, consulta la pagina Documentazione di AWS SDK for .NET. Puoi anche accedere direttamente alle sezioni Amazon SWF nel riferimento dell'SDK seguendo questi link:

PHP

AWS SDK for PHP Fornisce un'interfaccia di programmazione PHP per Amazon SWF.

Per vedere la documentazione disponibile, consulta la pagina Documentazione di AWS SDK for PHP. Puoi anche andare direttamente alla sezione Amazon SWF nel riferimento all'SDK seguendo questo link:

Python

AWS SDK for Python (Boto) Fornisce un'interfaccia di programmazione Python per Amazon SWF.

Per visualizzare la documentazione disponibile, consulta la pagina boto: Un'interfaccia Python per Amazon Web Services. Puoi anche accedere direttamente alle sezioni Amazon SWF della documentazione seguendo questi link:

Ruby

AWS SDK for Ruby Fornisce un'interfaccia di programmazione Ruby per Amazon SWF.

Per vedere la documentazione disponibile, consulta la pagina Documentazione di AWS SDK for Ruby. Puoi anche andare direttamente alla sezione Amazon SWF nel riferimento all'SDK seguendo questo link:

AWS CLI Documentazione

Il AWS Command Line Interface (AWS CLI) è uno strumento unificato per gestire i tuoi AWS servizi. Con un solo strumento da scaricare e configurare, puoi controllare più AWS servizi dalla riga di comando e automatizzarli tramite script.

Per ulteriori informazioni su AWS CLI, consulta la AWS Command Line Interfacepagina.

Per una panoramica dei comandi disponibili per Amazon SWF, consulta swf nel Command Reference.AWS CLI

Risorse Web per Amazon Simple Workflow Service

Esistono numerose risorse Web che puoi utilizzare per saperne di più su Amazon SWF o per ricevere assistenza sull'uso del servizio e sullo sviluppo di flussi di lavoro.

Forum Amazon SWF

Il forum Amazon SWF ti consente di comunicare con altri sviluppatori di Amazon SWF e membri del team di sviluppo Amazon SWF di Amazon per porre domande e ottenere risposte.

Puoi visitare il forum all'indirizzo: Forum: Amazon Simple Workflow Service.

Domande frequenti su Amazon SWF

Le domande frequenti su Amazon SWF forniscono risposte alle domande frequenti su Amazon SWF, inclusa una panoramica dei casi d'uso comuni, delle differenze tra Amazon SWF e altri servizi e altro ancora.

Puoi accedere alle domande frequenti qui: Domande frequenti su Amazon SWF.

Video Amazon SWF

Il canale Amazon Web Services YouTube offre corsi di formazione video per tutti i servizi Web di Amazon, incluso Amazon SWF. Per un elenco completo dei video relativi ad Amazon SWF, utilizza la seguente query: Simple Workflow in Amazon Web Services

Opzioni di migrazione per Ruby Flow

AWS Flow Framework for Ruby non è più in fase di sviluppo attivo. Il codice esistente continuerà a funzionare indefinitamente, ma non verranno rilasciate nuove funzionalità o versioni. Questo argomento tratterà le opzioni di utilizzo e migrazione per continuare a lavorare con Amazon SWF e informazioni su come migrare a Step Functions.

Opzione Descrizione

Continua a utilizzare Ruby Flow Framework

Per ora, Ruby Flow Framework continuerà a funzionare. Se non fai niente, il codice continuerà a funzionare così com'è. Pianifica la migrazione da AWS Flow Framework for Ruby nelle prossime future.

Esegui la migrazione a Java Flow Framework

Java Flow Framework rimane in fase di sviluppo attivo e continuerà a ricevere nuove funzionalità e aggiornamenti.

Migrare a Step Functions

Step Functions consente di coordinare i componenti di applicazioni distribuite utilizzando flussi di lavoro visivi controllati da una macchina a stati.

Utilizzate direttamente l'API SWF, senza Flow Framework Potete continuare a lavorare in Ruby e utilizzare direttamente l'API SWF anziché Ruby Flow Framework.

Il vantaggio offerto da Flow Framework, sia per Ruby che per Java, è che consente di concentrarsi sulla logica del flusso di lavoro. Il framework gestisce la maggior parte delle informazioni di comunicazione e coordinamento e una parte della complessità è astratta. Puoi continuare ad avere lo stesso livello di astrazione migrando a Java Flow Framework oppure puoi interagire direttamente con Amazon SWF SDK.

Continua a utilizzare Ruby Flow Framework

Il AWS Flow Framework for Ruby continuerà a funzionare come adesso a breve termine. Se hai dei flussi di lavoro scritti in AWS Flow Framework for Ruby, questi continueranno a funzionare. Senza aggiornamenti, supporto o correzioni di sicurezza, è meglio avere un piano preciso per migrare da Ruby in un prossimo futuro. AWS Flow Framework

Esegui la migrazione a Java Flow Framework

The AWS Flow Framework for Java rimarrà in fase di sviluppo attivo. Concettualmente, AWS Flow Framework per Java è simile a AWS Flow Framework Ruby: puoi comunque concentrarti sulla logica del flusso di lavoro e il framework ti aiuterà a gestire la logica di decisione e semplificherà la gestione di altri aspetti di Amazon SWF.

Migrare a Step Functions

AWS Step Functions fornisce un servizio simile ad Amazon SWF, ma in cui la logica del flusso di lavoro è controllata da una macchina a stati. Step Functions consente di coordinare i componenti delle applicazioni e dei microservizi distribuiti utilizzando flussi di lavoro visivi. La creazione di applicazioni a partire da componenti individuali che eseguono ciascuno una funzione discreta, detta anche task, consente di dimensionare e modificare rapidamente le applicazioni. Step Functions offre un modo affidabile per coordinare i componenti e gestire le funzioni dell'applicazione. Una console grafica visualizza i componenti della tua applicazione in una serie di fasi. Attiva e tiene traccia automaticamente di ogni passaggio e riprova in caso di errori, in modo che l'applicazione venga eseguita sempre nell'ordine e come previsto. Step Functions registra lo stato di ogni passaggio, così quando qualcosa va storto, puoi diagnosticare ed eseguire rapidamente il debug dei problemi.

In Step Functions, gestisci il coordinamento delle tue attività utilizzando una macchina a stati, scritta in JSON dichiarativo, definita utilizzando Amazon States Language. Utilizzando una macchina a stati, non è necessario scrivere e gestire un programma decisionale per controllare la logica dell'applicazione. Step Functions offre un approccio intuitivo, produttivo e agile per coordinare i componenti delle applicazioni utilizzando flussi di lavoro visivi. Dovresti prendere in considerazione l'utilizzo AWS Step Functions per tutte le tue nuove applicazioni e Step Functions offre un'eccellente piattaforma su cui migrare per i flussi di lavoro che hai attualmente implementato in AWS Flow Framework for Ruby.

Per aiutarti a migrare le tue attività su Step Functions, continuando a sfruttare le tue competenze linguistiche in Ruby, Step Functions fornisce un esempio di Ruby activity worker. Questo esempio utilizza le migliori pratiche per l'implementazione di un activity worker e può essere utilizzato come modello per migrare la logica delle attività a Step Functions. Per ulteriori informazioni, consultate l'argomento Example Activity Worker in Ruby nella Guida per gli AWS Step Functions sviluppatori.

Nota

Per molti clienti, la migrazione a Step Functions da AWS Flow Framework for Ruby è l'opzione migliore. Tuttavia, se desideri che i segnali intervengano nei tuoi processi o se devi avviare processi secondari che restituiscono un risultato a un genitore, prendi in considerazione l'utilizzo diretto dell'API Amazon SWF o la migrazione a AWS Flow Framework for Java.

Per ulteriori informazioni su AWS Step Functions, consulta:

Usa direttamente l'API Amazon SWF

Sebbene AWS Flow Framework for Ruby gestisca parte della complessità di Amazon SWF, puoi anche utilizzare direttamente l'API Amazon SWF. Ciò ti consente di creare flussi di lavoro in cui hai un controllo totale sull'implementazione e sul coordinamento dei task, senza doverti preoccupare delle complessità sottostanti come il monitoraggio dell'avanzamento e la gestione dello stato.