View a markdown version of this page

Sviluppo di flussi di lavoro con Step Functions - 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à.

Sviluppo di flussi di lavoro con Step Functions

Consigliamo di iniziare a creare flussi di lavoro nella console Step Functions e nell'editor visuale di Workflow Studio. Puoi iniziare da un'area di lavoro vuota o scegliere modelli iniziali per scenari comuni.

La creazione dei flussi di lavoro richiede le seguenti attività:

  • Definire il flusso di lavoro

  • Esecuzione e debug del flusso di lavoro

  • Implementazione del flusso di lavoro

Definisci una macchina a stati in Amazon States Language. Puoi creare manualmente le definizioni di Amazon States Language, ma Workflow Studio sarà presente nei tutorial. Con Workflow Studio, puoi definire la tua macchina, visualizzare e modificare i passaggi, eseguire ed eseguire il debug del flusso di lavoro e visualizzare i risultati, il tutto dalla console Step Functions.

Lavorare con Workflow Studio in Visual Studio Code

Con il AWS toolkit, puoi utilizzare Workflow Studio direttamente da VS Code per visualizzare, creare e persino testare singoli stati nelle tue macchine a stati. Fornisci input di stato e imposti variabili, avvii il test, quindi puoi vedere come vengono trasformati i tuoi dati. Puoi modificare il flusso di lavoro e ripetere il test. Al termine, puoi applicare le modifiche per aggiornare la macchina a stati. Per ulteriori informazioni, vedere Lavorare con Workflow Studio in AWS Toolkit for Visual Studio Code.

È inoltre possibile utilizzare molte funzionalità di Step Functions di AWS Command Line Interface (AWS CLI). Ad esempio, è possibile creare una macchina a stati ed elencare le macchine a stati esistenti. È possibile utilizzare i comandi Step Functions AWS CLI per avviare e gestire le esecuzioni, eseguire il polling delle attività, registrare il battito cardiaco delle attività e altro ancora. Per un elenco completo dei comandi Step Functions, le descrizioni degli argomenti disponibili e gli esempi che ne illustrano l'utilizzo, consultate il Command Reference. AWS CLI AWS CLI Riferimento ai comandi

AWS CLI i comandi seguono da vicino l'Amazon States Language, quindi puoi utilizzare il AWS CLI per conoscere le azioni dell'API Step Functions. Puoi anche utilizzare le tue conoscenze API esistenti per prototipare codice o eseguire azioni Step Functions dalla riga di comando.

Convalida delle definizioni delle macchine a stati

È possibile utilizzare l'API per convalidare le macchine a stati e individuare potenziali problemi prima di creare il flusso di lavoro.

Per saperne di più sulla convalida dei flussi di lavoro, consulta la Guida di riferimento alle ValidateStateMachineDefinition API di Step Functions.

Per iniziare con una configurazione minima, puoi seguire il tutorial Creating a Lambda State Machine, che mostra come definire un flusso di lavoro con un solo passaggio che richiama una funzione Lambda, quindi eseguire il flusso di lavoro e visualizzare i risultati.

Definizione del flusso di lavoro

Il primo passo per sviluppare il flusso di lavoro è definire i passaggi in Amazon States Language. A seconda delle preferenze e dello strumento, puoi definire le tue macchine a stati Step Functions in JSON, YAML o come definizione stringata di Amazon States Language (ASL).

La tabella seguente mostra il supporto del formato di definizione per strumento. ASL-based

AWS Strumento Formati supportati
Console Step Functions JSON
API di servizio HTTPS ASL stringato
AWS CLI ASL stringato
Step Functions Local ASL stringato
AWS Toolkit for Visual Studio Code JSON, YAML
AWS SAM JSON, YAML
CloudFormation JSON, YAML, ASL stringato

I commenti YAML a riga singola nella definizione della macchina a stati di un modello non verranno riportati nella definizione della risorsa creata. Se è necessario mantenere un commento, è necessario utilizzare la Comment proprietà all'interno della definizione della macchina a stati. Per informazioni, consulta Struttura della macchina a stati.

Con CloudFormation e AWS SAM, puoi caricare le definizioni delle tue macchine a stati su Amazon S3 (formato JSON o YAML) e fornire la posizione Amazon S3 della definizione nel modello. Per informazioni, consulta la pagina:: S3Location. AWS::StepFunctions StateMachine

I seguenti CloudFormation modelli di esempio mostrano come è possibile fornire la stessa definizione di macchina a stati utilizzando diversi formati di input.

JSON with Definition
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Step Functions sample template.", "Resources": { "MyStateMachine": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { "RoleArn": { "Fn::GetAtt": [ "StateMachineRole", "Arn" ] }, "TracingConfiguration": { "Enabled": true }, "Definition": { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "End": true } } } } }, "StateMachineRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "states.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [], "Policies": [ { "PolicyName": "StateMachineRolePolicy", "PolicyDocument": { "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "*", "Effect": "Allow" } ] } } ] } } }, "Outputs": { "StateMachineArn": { "Value": { "Ref": "MyStateMachine" } } } }
JSON with DefinitionString
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Step Functions sample template.", "Resources": { "MyStateMachine": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { "RoleArn": { "Fn::GetAtt": [ "StateMachineRole", "Arn" ] }, "TracingConfiguration": { "Enabled": true }, "DefinitionString": "{\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Pass\",\n \"End\": true\n }\n }\n}" } }, "StateMachineRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "states.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [], "Policies": [ { "PolicyName": "StateMachineRolePolicy", "PolicyDocument": { "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "*", "Effect": "Allow" } ] } } ] } } }, "Outputs": { "StateMachineArn": { "Value": { "Ref": "MyStateMachine" } } } }
YAML with Definition
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Step Functions sample template. Resources: MyStateMachine: Type: 'AWS::StepFunctions::StateMachine' Properties: RoleArn: !GetAtt - StateMachineRole - Arn TracingConfiguration: Enabled: true Definition: # This is a YAML comment. This will not be preserved in the state machine resource's definition. Comment: This is an ASL comment. This will be preserved in the state machine resource's definition. StartAt: HelloWorld States: HelloWorld: Type: Pass End: true StateMachineRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: Service: - states.amazonaws.com ManagedPolicyArns: [] Policies: - PolicyName: StateMachineRolePolicy PolicyDocument: Statement: - Action: - 'lambda:InvokeFunction' Resource: "*" Effect: Allow Outputs: StateMachineArn: Value: Ref: MyStateMachine
YAML with DefinitionString
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Step Functions sample template. Resources: MyStateMachine: Type: 'AWS::StepFunctions::StateMachine' Properties: RoleArn: !GetAtt - StateMachineRole - Arn TracingConfiguration: Enabled: true DefinitionString: | { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "End": true } } } StateMachineRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: Service: - states.amazonaws.com ManagedPolicyArns: [] Policies: - PolicyName: StateMachineRolePolicy PolicyDocument: Statement: - Action: - 'lambda:InvokeFunction' Resource: "*" Effect: Allow Outputs: StateMachineArn: Value: Ref: MyStateMachinele
Sviluppa flussi di lavoro con AWS SDK

Step Functions è supportato dagli AWS SDK per Java, .NET, Ruby, PHP, Python (Boto 3) JavaScript, Go e C++. Questi SDK forniscono un modo conveniente per utilizzare le azioni dell'API HTTPS di Step Functions in più linguaggi di programmazione. Puoi sviluppare macchine a stati, attività o starter di macchine a stati utilizzando le operazioni API esposte da queste librerie SDK, Puoi anche accedere alle operazioni di visibilità utilizzando queste librerie per sviluppare i tuoi strumenti di monitoraggio e reporting di Step Functions. Consulta la documentazione di riferimento per gli AWS SDK e gli strumenti attuali per Amazon Web Services.

Sviluppa flussi di lavoro tramite richieste HTTPS

Step Functions fornisce operazioni di servizio accessibili tramite richieste HTTPS. È possibile utilizzare queste operazioni per comunicare direttamente con Step Functions dalle proprie librerie. Puoi sviluppare macchine a stati, lavoratori o starter di macchine a stati utilizzando le operazioni API di servizio. Puoi inoltre accedere a operazioni di visibilità mediante operazioni API per sviluppare strumenti di monitoraggio e reporting personalizzati. Per i dettagli, consulta l'AWS Step Functions API Reference.

Sviluppa flussi di lavoro con AWS Step Functions Data Science SDK

I data scientist possono creare flussi di lavoro che elaborano e pubblicano modelli di machine learning utilizzando SageMaker AI e Step Functions. Puoi anche creare flussi di lavoro di machine learning in più fasi in Python che AWS orchestrano l'infrastruttura su larga scala. Il AWS Step Functions Data Science SDK fornisce un'API Python in grado di creare e richiamare flussi di lavoro Step Functions. Puoi gestire ed eseguire questi flussi di lavoro direttamente in Python e nei notebook Jupyter. Per ulteriori informazioni, consulta: AWS Step Functions Data Science Project su Github, la documentazione dell'SDK per la scienza dei dati ed esempi di notebook Jupyter ed esempi di intelligenza artificiale su. https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-nbexamples.html SageMaker GitHub

Esecuzione e debug dei flussi di lavoro

Puoi avviare i flussi di lavoro in diversi modi, tra cui dalla console, una chiamata API (ad esempio, da una funzione Lambda), da Amazon EventBridge e EventBridge Scheduler, da un'altra macchina a stati Step Functions. I flussi di lavoro in esecuzione possono connettersi a servizi di terze parti, utilizzare AWS SDK e manipolare i dati durante l'esecuzione. Esistono vari strumenti per eseguire ed eseguire il debug delle fasi di esecuzione e dei dati che fluiscono attraverso la macchina a stati. Le sezioni seguenti forniscono risorse aggiuntive per l'esecuzione e il debug dei flussi di lavoro.

Per saperne di più sui modi per avviare le esecuzioni di macchine a stati, consulta. Avvio delle esecuzioni di macchine a stati in Step Functions

Scegli un endpoint per eseguire i tuoi flussi di lavoro

Per ridurre la latenza e archiviare i dati in una posizione che soddisfi i tuoi requisiti, Step Functions fornisce endpoint in diverse regioni. AWS Ogni endpoint in Step Functions è completamente indipendente. Una macchina a stati o attività esiste solo all'interno della regione in cui è stata creata. Tutte le macchine a stati e le attività create in una regione non condividono dati o attributi con quelle create in un'altra regione. Ad esempio, è possibile registrare una macchina a stati denominata STATES-Flows-1 in due regioni diverse. La macchina a STATES-Flows-1 stati in una regione non condividerà dati o attributi con la macchina a STATES-Flow-1 stati nell'altra regione. Per un elenco degli endpoint di Step Functions, consulta AWS Step Functions Regioni ed endpoint in. Riferimenti generali di AWS

Sviluppo con VS Code

Con il AWS toolkit, puoi utilizzare Workflow Studio direttamente da VS Code per visualizzare, creare e persino testare singoli stati nelle tue macchine a stati. Puoi anche utilizzare il tuo SAM e le sostituzioni di CloudFormation definizione. Fornisci input di stato e imposti variabili, avvii il test, quindi puoi vedere come vengono trasformati i tuoi dati. Nella scheda Definizione dello stato, puoi modificare il flusso di lavoro e ripetere il test. Al termine, puoi applicare le modifiche per aggiornare la macchina a stati. Per ulteriori informazioni, vedere Lavorare con Step Functions e Lavorare con Workflow Studio in AWS Toolkit for Visual Studio Code.

Implementazione dei flussi di lavoro

Dopo aver definito ed eseguito il debug dei flussi di lavoro, probabilmente vorrai implementarli utilizzando i framework Infrastructure as Code. Puoi scegliere di distribuire le tue macchine a stato utilizzando una varietà di opzioni IaC, tra cui:, e Terraform. AWS Serverless Application Model CloudFormation AWS CDK

AWS Serverless Application Model

Puoi utilizzarlo AWS Serverless Application Model con Step Functions per creare flussi di lavoro e implementare l'infrastruttura di cui hai bisogno, comprese funzioni Lambda, API ed eventi, per creare applicazioni serverless. Puoi anche utilizzare la AWS SAM CLI insieme a The come parte di un'esperienza integrata. AWS Toolkit for Visual Studio Code

Per ulteriori informazioni, consulta Utilizzo AWS SAM per creare flussi di lavoro Step Functions.

CloudFormation

È possibile utilizzare le definizioni della macchina a stati direttamente nei CloudFormation modelli.

Per ulteriori informazioni, consulta Utilizzo CloudFormation per creare un flusso di lavoro in Step Functions.

AWS CDK

È possibile creare macchine a stati Standard ed Express con AWS CDK.

Per creare un flusso di lavoro standard, vedereUtilizzo di CDK per creare un flusso di lavoro standard.

Per creare un flusso di lavoro Express, vedereUtilizzo di CDK per creare un flusso di lavoro Express.

Terraform

Terraform by HashiCorp è un framework per la creazione di applicazioni utilizzando Infrastructure as code (IaC). Con Terraform, puoi creare macchine a stati e utilizzare funzionalità, come l'anteprima delle implementazioni dell'infrastruttura e la creazione di modelli riutilizzabili. I modelli Terraform ti aiutano a mantenere e riutilizzare il codice suddividendolo in blocchi più piccoli.

Per ulteriori informazioni, consulta Utilizzo di Terraform per distribuire macchine a stati in Step Functions.