Esempi di Amazon SWF con la AWS CLI - AWS Command Line Interface

Esempi di Amazon SWF con la AWS CLI

Gli esempi di codice seguenti mostrano come eseguire azioni e implementare scenari comuni utilizzando AWS Command Line Interface con Amazon SWF.

Le operazioni sono estratti di codice da programmi più grandi e devono essere eseguite nel contesto. Sebbene le operazioni mostrino come richiamare le singole funzioni del servizio, è possibile visualizzarle contestualizzate negli scenari correlati.

Ogni esempio include un link al codice sorgente completo, dove è possibile trovare le istruzioni su come configurare ed eseguire il codice nel contesto.

Argomenti

Operazioni

L’esempio di codice seguente mostra come utilizzare count-closed-workflow-executions.

AWS CLI

Conteggio delle esecuzioni del flusso di lavoro chiuso

È possibile utilizzare swf count-closed-workflow-executions per recuperare il numero di flussi di lavoro chiusi per un determinato dominio. È possibile specificare dei filtri per contare classi specifiche di esecuzioni.

Gli argomenti --domain e sia --close-time-filter che --start-time-filter sono obbligatori. Tutti gli altri argomenti sono facoltativi.

aws swf count-closed-workflow-executions \ --domain DataFrobtzz \ --close-time-filter "{ \"latestDate\" : 1377129600, \"oldestDate\" : 1370044800 }"

Output:

{ "count": 2, "truncated": false }

Se “truncated” è true, allora “count” rappresenta il numero massimo che può essere restituito da Amazon SWF. Eventuali ulteriori risultati vengono troncati.

Per ridurre il numero di risultati restituiti, puoi:

modificare i valori --start-time-filter o --close-time-filter per restringere l’intervallo di tempo in cui viene effettuata la ricerca. Ciascuno di questi si esclude a vicenda: puoi specificarne solo uno in una richiesta. Utilizza gli argomenti --close-status-filter, --execution-filter, --tag-filter o --type-filter per filtrare ulteriormente i risultati. Tuttavia, anche questi argomenti si escludono a vicenda.

Consulta anche CountClosedWorkflowExecutions nella documentazione di riferimento dell’API di Amazon Simple Workflow Service

L’esempio di codice seguente mostra come utilizzare count-open-workflow-executions.

AWS CLI

Conteggio delle esecuzioni del flusso di lavoro aperto

È possibile utilizzare swf count-open-workflow-executions per recuperare il numero di flussi di lavoro aperti per un determinato dominio. È possibile specificare dei filtri per contare classi specifiche di esecuzioni.

Gli elementi --domain e --start-time-filter sono obbligatori. Tutti gli altri argomenti sono facoltativi.

aws swf count-open-workflow-executions \ --domain DataFrobtzz \ --start-time-filter "{ \"latestDate\" : 1377129600, \"oldestDate\" : 1370044800 }"

Output:

{ "count": 4, "truncated": false }

Se “truncated” è true, allora “count” rappresenta il numero massimo che può essere restituito da Amazon SWF. Eventuali ulteriori risultati vengono troncati.

Per ridurre il numero di risultati restituiti, puoi:

modificare i valori --start-time-filter per restringere l’intervallo di tempo in cui viene effettuata la ricerca. Utilizza gli argomenti --close-status-filter, --execution-filter, --tag-filter o --type-filter per filtrare ulteriormente i risultati. Ciascuno di questi si esclude a vicenda: è possibile specificare solo uno di questi in una richiesta.

Per ulteriori informazioni, consulta CountOpenWorkflowExecutions nella documentazione di riferimento dell’API di Amazon Simple Workflow Service

L’esempio di codice seguente mostra come utilizzare deprecate-domain.

AWS CLI

Dichiarare obsoleto un dominio

Per impostare come obsoleto un dominio (che resta comunque visibile, ma non può essere utilizzato per creare nuove esecuzioni di flussi di lavoro o registrare tipi), utilizza swf deprecate-domain. Esiste un solo parametro obbligatorio, --name, che assume il nome del dominio da dichiarare obsoleto.

aws swf deprecate-domain \ --name MyNeatNewDomain ""

Come per register-domain, non viene restituito alcun output. Se tuttavia utilizzi list-domains per visualizzare i domini registrati, vedrai che il dominio è stato dichiarato obsoleto e non compare più tra i dati restituiti.

aws swf list-domains \ --registration-status REGISTERED { "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" }, { "status": "REGISTERED", "name": "erontest" } ] }

Se usi --registration-status DEPRECATED con list-domains vedrai il tuo dominio obsoleto.

aws swf list-domains \ --registration-status DEPRECATED { "domainInfos": [ { "status": "DEPRECATED", "name": "MyNeatNewDomain" } ] }

Puoi ancora utilizzare describe-domain per ottenere informazioni su un dominio obsoleto.

aws swf describe-domain \ --name MyNeatNewDomain { "domainInfo": { "status": "DEPRECATED", "name": "MyNeatNewDomain" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "0" } }

Consulta anche DeprecateDomain nella documentazione di riferimento dell’API di Amazon Simple Workflow Service

  • Per informazioni dettagliate sull’API, consulta DeprecateDomain in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare describe-domain.

AWS CLI

Recupero di informazioni su un dominio

Per ottenere informazioni dettagliate su un dominio specifico, utilizza il comando swf describe-domain. Esiste un solo parametro obbligatorio: --name, che assume il nome del dominio su cui si desidera ottenere informazioni.

aws swf describe-domain \ --name DataFrobotz { "domainInfo": { "status": "REGISTERED", "name": "DataFrobotz" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "1" } }

Puoi anche utilizzare describe-domain per ottenere informazioni sui domini obsoleti.

aws swf describe-domain \ --name MyNeatNewDomain { "domainInfo": { "status": "DEPRECATED", "name": "MyNeatNewDomain" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "0" } }

Consulta anche DescribeDomain nel riferimento all’API di Amazon Simple Workflow Service

  • Per informazioni dettagliate sull’API, consulta DescribeDomain in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare list-activity-types.

AWS CLI

Elenco dei tipi di attività

Per ottenere un elenco dei tipi di attività per un dominio, utilizza swf list-activity-types. Gli elementi --domain e --registration-status sono obbligatori.

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED

Output:

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.451, "activityType": { "version": "1", "name": "confirm-user-email" }, "description": "subscribe confirm-user-email activity" }, { "status": "REGISTERED", "creationDate": 1371454150.709, "activityType": { "version": "1", "name": "confirm-user-phone" }, "description": "subscribe confirm-user-phone activity" }, { "status": "REGISTERED", "creationDate": 1371454149.871, "activityType": { "version": "1", "name": "get-subscription-info" }, "description": "subscribe get-subscription-info activity" }, { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" }, { "status": "REGISTERED", "creationDate": 1371454150.085, "activityType": { "version": "1", "name": "subscribe-user-sns" }, "description": "subscribe subscribe-user-sns activity" } ] }

Puoi utilizzare l’argomento --name per selezionare solo i tipi di attività con un nome particolare:

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --name "send-subscription-success"

Output:

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" } ] }

Per recuperare i risultati nelle pagine, puoi impostare l’argomento --maximum-page-size. Se vengono restituiti più risultati di quelli contenuti in una pagina di risultati, nel set di risultati verrà restituito un “nextPageToken”:

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --maximum-page-size 2

Output:

{ "nextPageToken": "AAAAKgAAAAEAAAAAAAAAA1Gp1BelJq+PmHvAnDxJYbup8+0R4LVtbXLDl7QNY7C3OpHo9Sz06D/GuFz1OyC73umBQ1tOPJ/gC/aYpzDMqUIWIA1T9W0s2DryyZX4OC/6Lhk9/o5kdsuWMSBkHhgaZjgwp3WJINIFJFdaSMxY2vYAX7AtRtpcqJuBDDRE9RaRqDGYqIYUMltarkiqpSY1ZVveBasBvlvyUb/WGAaqehiDz7/JzLT/wWNNUMOd+Nhe", "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.451, "activityType": { "version": "1", "name": "confirm-user-email" }, "description": "subscribe confirm-user-email activity" }, { "status": "REGISTERED", "creationDate": 1371454150.709, "activityType": { "version": "1", "name": "confirm-user-phone" }, "description": "subscribe confirm-user-phone activity" } ] }

Puoi passare il valore nextPageToken alla chiamata successiva a list-activity-types nell’argomento --next-page-token, recuperando la pagina successiva di risultati:

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --maximum-page-size 2 \ --next-page-token "AAAAKgAAAAEAAAAAAAAAA1Gp1BelJq+PmHvAnDxJYbup8+0R4LVtbXLDl7QNY7C3OpHo9Sz06D/GuFz1OyC73umBQ1tOPJ/gC/aYpzDMqUIWIA1T9W0s2DryyZX4OC/6Lhk9/o5kdsuWMSBkHhgaZjgwp3WJINIFJFdaSMxY2vYAX7AtRtpcqJuBDDRE9RaRqDGYqIYUMltarkiqpSY1ZVveBasBvlvyUb/WGAaqehiDz7/JzLT/wWNNUMOd+Nhe"

Output:

{ "nextPageToken": "AAAAKgAAAAEAAAAAAAAAAw+7LZ4GRZPzTqBHsp2wBxWB8m1sgLCclgCuq3J+h/m3+vOfFqtkcjLwV5cc4OjNAzTCuq/XcylPumGwkjbajtqpZpbqOcVNfjFxGoi0LB2Olbvv0krbUISBvlpFPmSWpDSZJsxg5UxCcweteSlFn1PNSZ/MoinBZo8OTkjMuzcsTuKOzH9wCaR8ITcALJ3SaqHU3pyIRS5hPmFA3OLIc8zaAepjlaujo6hntNSCruB4" "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454149.871, "activityType": { "version": "1", "name": "get-subscription-info" }, "description": "subscribe get-subscription-info activity" }, { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" } ] }

Se ci sono ancora altri risultati da restituire, verrà restituito “nextPageToken” con i risultati. Quando le pagine dei risultati da recuperare saranno terminate, “nextPageToken” non verrà restituito nei risultati.

È possibile utilizzare l’argomento --reverse-order per invertire l’ordine dei risultati restituiti. Ciò influisce anche sui risultati paginati.

aws swf list-activity-types \ --domain DataFrobtzz \ --registration-status REGISTERED \ --maximum-page-size 2 \ --reverse-order

Output:

{ "nextPageToken": "AAAAKgAAAAEAAAAAAAAAAwXcpu5ePSyQkrC+8WMbmSrenuZC2ZkIXQYBPB/b9xIOVkj+bMEFhGj0KmmJ4rF7iddhjf7UMYCsfGkEn7mk+yMCgVc1JxDWmB0EH46bhcmcLmYNQihMDmUWocpr7To6/R7CLu0St1gkFayxOidJXErQW0zdNfQaIWAnF/cwioBbXlkz1fQzmDeU3M5oYGMPQIrUqkPq7pMEW0q0lK5eDN97NzFYdZZ/rlcLDWPZhUjY", "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454150.085, "activityType": { "version": "1", "name": "subscribe-user-sns" }, "description": "subscribe subscribe-user-sns activity" }, { "status": "REGISTERED", "creationDate": 1371454150.909, "activityType": { "version": "1", "name": "send-subscription-success" }, "description": "subscribe send-subscription-success activity" } ] }

Consulta anche ListActivityTypes nella documentazione di riferimento dell’API di Amazon Simple Workflow Service

  • Per informazioni dettagliate sull’API, consulta ListActivityTypes in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare list-domains.

AWS CLI

Esempio 1: elencare i domini registrati

Il comando di esempio seguente list-domains elenca i domini REGISTERED SWF che hai registrato per il tuo account.

aws swf list-domains \ --registration-status REGISTERED

Output:

{ "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" }, { "status": "REGISTERED", "name": "erontest" } ] }

Per ulteriori informazioni, consulta ListDomains nella documentazione di riferimento delle API di Amazon Simple Storage Service.

Esempio 2: elencare i domini obsoleti

Il comando di esempio seguente list-domains elenca i domini DEPRECATED SWF che hai registrato per il tuo account. I domini obsoleti sono domini che non possono registrare nuovi flussi di lavoro o attività, ma che possono comunque essere interrogati.

aws swf list-domains \ --registration-status DEPRECATED

Output:

{ "domainInfos": [ { "status": "DEPRECATED", "name": "MyNeatNewDomain" } ] }

Per ulteriori informazioni, consulta ListDomains nella documentazione di riferimento delle API di Amazon Simple Storage Service.

Esempio 3: elencare la prima pagina dei domini registrati

Il comando di esempio seguente list-domains elenca i domini REGISTERED SWF della prima pagina che hai registrato per il tuo account utilizzando l’opzione --maximum-page-size.

aws swf list-domains \ --registration-status REGISTERED \ --maximum-page-size 1

Output:

{ "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" } ], "nextPageToken": "AAAAKgAAAAEAAAAAAAAAA2QJKNtidVgd49TTeNwYcpD+QKT2ynuEbibcQWe2QKrslMGe63gpS0MgZGpcpoKttL4OCXRFn98Xif557it+wSZUsvUDtImjDLvguyuyyFdIZtvIxIKEOPm3k2r4OjAGaFsGOuVbrKljvla7wdU7FYH3OlkNCP8b7PBj9SBkUyGoiAghET74P93AuVIIkdKGtQ==" }

Per ulteriori informazioni, consulta ListDomains nella documentazione di riferimento delle API di Amazon Simple Storage Service.

Esempio 4: elencare la pagina singola specificata dei domini registrati

Il comando di esempio seguente list-domains elenca i domini REGISTERED SWF della prima pagina che hai registrato per il tuo account utilizzando l’opzione --maximum-page-size.

Quando effettuerai nuovamente la chiamata, fornendo il valore di nextPageToken nell’argomento --next-page-token, riceverai un’altra pagina di risultati.

aws swf list-domains \ --registration-status REGISTERED \ --maximum-page-size 1 \ --next-page-token "AAAAKgAAAAEAAAAAAAAAA2QJKNtidVgd49TTeNwYcpD+QKT2ynuEbibcQWe2QKrslMGe63gpS0MgZGpcpoKttL4OCXRFn98Xif557it+wSZUsvUDtImjDLvguyuyyFdIZtvIxIKEOPm3k2r4OjAGaFsGOuVbrKljvla7wdU7FYH3OlkNCP8b7PBj9SBkUyGoiAghET74P93AuVIIkdKGtQ=="

Output:

{ "domainInfos": [ { "status": "REGISTERED", "name": "erontest" } ] }

Quando le pagine dei risultati da recuperare saranno terminate, nextPageToken non verrà restituito nei risultati.

Per ulteriori informazioni, consulta ListDomains nella documentazione di riferimento delle API di Amazon Simple Storage Service.

  • Per informazioni dettagliate sull’API, consulta ListDomains in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare list-workflow-types.

AWS CLI

Elenco dei tipi di flusso di lavoro

Per ottenere un elenco dei tipi di flusso di lavoro per un dominio, utilizza swf list-workflow-types. Gli elementi --domain e --registration-status sono obbligatori. Ecco un semplice esempio.

aws swf list-workflow-types \ --domain DataFrobtzz \ --registration-status REGISTERED

Output:

{ "typeInfos": [ { "status": "REGISTERED", "creationDate": 1371454149.598, "description": "DataFrobtzz subscribe workflow", "workflowType": { "version": "v3", "name": "subscribe" } } ] }

Come con list-activity-types, è possibile utilizzare l’argomento --name per selezionare solo i tipi di flusso di lavoro con un nome particolare e utilizzare l’argomento --maximum-page-size in coordinamento con --next-page-token per i risultati della pagina. Per invertire l’ordine in cui vengono restituiti i risultati, utilizza --reverse-order.

Consulta anche ListWorkflowTypes nella documentazione di riferimento dell’API di Amazon Simple Workflow Service

  • Per informazioni dettagliate sull’API, consulta ListWorkflowTypes in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare register-domain.

AWS CLI

Registrazione di un dominio

Puoi utilizzare AWS CLI per registrare nuovi domini. Utilizza il comando swf register-domain. Esistono due parametri obbligatori: --name, che assume il nome del dominio, e --workflow-execution-retention-period-in-days, che assume un valore intero per specificare il numero di giorni per mantenere i dati di esecuzione dei flussi di lavoro su questo dominio, fino a un massimo di 90 giorni (per ulteriori informazioni, consulta le domande frequenti relative a SWF <https://aws.amazon.com/swf/faqs/#retain_limit>). I dati di esecuzione dei flussi di lavoro non saranno conservati una volta superato il numero di giorni specificato.

aws swf register-domain \ --name MyNeatNewDomain \ --workflow-execution-retention-period-in-days 0 ""

Quando si registra un dominio, non viene restituito alcun valore (""), ma è possibile utilizzare swf list-domains o swf describe-domain per visualizzare il nuovo dominio.

aws swf list-domains \ --registration-status REGISTERED { "domainInfos": [ { "status": "REGISTERED", "name": "DataFrobotz" }, { "status": "REGISTERED", "name": "MyNeatNewDomain" }, { "status": "REGISTERED", "name": "erontest" } ] }

Con swf describe-domain:

aws swf describe-domain --name MyNeatNewDomain { "domainInfo": { "status": "REGISTERED", "name": "MyNeatNewDomain" }, "configuration": { "workflowExecutionRetentionPeriodInDays": "0" } }

Consulta anche RegisterDomain nella documentazione di riferimento dell’API di Amazon Simple Workflow Service

  • Per informazioni dettagliate sull’API, consulta RegisterDomain in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare register-workflow-type.

AWS CLI

Registrazione di un tipo di flusso di lavoro

Per registrare un tipo di workflow con AWS CLI, utilizza il comando swf register-workflow-type.

aws swf register-workflow-type \ --domain DataFrobtzz \ --name "MySimpleWorkflow" \ --workflow-version "v1"

Se il comando ha esito positivo, non produce alcun output.

In caso di errore (ad esempio, se provi a registrare due volte lo stesso tipo di flusso di lavoro o specifichi un dominio che non esiste) riceverai una risposta in JSON.

{ "message": "WorkflowType=[name=MySimpleWorkflow, version=v1]", "__type": "com.amazonaws.swf.base.model#TypeAlreadyExistsFault" }

--domain, --name e --workflow-version sono obbligatori. Puoi anche impostare la descrizione del flusso di lavoro, i timeout e la policy del flusso di lavoro secondario.

Per ulteriori informazioni, consulta RegisterWorkflowType nella documentazione di riferimento delle API di Amazon Simple Storage Service.

  • Per informazioni dettagliate sull’API, consulta RegisterWorkflowType in AWS CLI Command Reference.