Step Functions を使用したワークフローの開発 - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions を使用したワークフローの開発

Step Functions コンソールと Workflow Studio ビジュアルエディタでワークフローの構築を開始することをお勧めします。空白のキャンバスから開始することも、一般的なシナリオではスターターテンプレートを選択することもできます。

ワークフローを構築するには、次のタスクが必要です。

  • ワークフローの定義

  • ワークフローの実行とデバッグ

  • ワークフローのデプロイ

Amazon States Language でステートマシンを定義します。Amazon States Language 定義は手動で作成できますが、Workflow Studio はチュートリアルで紹介されます。Workflow Studio を使用すると、マシン定義の定義、ステップの視覚化と編集、ワークフローの実行とデバッグ、Step Functions コンソール内からのすべての結果の表示を行うことができます。

から多くの Step Functions 機能を使用することもできます。 AWS Command Line Interface (AWS CLI)。 例えば、ステートマシンを作成し、既存のステートマシンを一覧表示できます。Step Functions コマンドは、 AWS CLI は、実行の開始と管理、アクティビティのポーリング、タスクハートビートの記録などを行います。Step Functions コマンドの完全なリスト、使用可能な引数の説明、およびそれらの使用例については、「」を参照してください。 AWS CLI コマンドリファレンス AWS CLI コマンドリファレンス

AWS CLI コマンドは Amazon States Language に厳密に従うため、 AWS CLI Step Functions APIアクションについて説明します。既存のAPI知識を使用してコードをプロトタイプ化したり、コマンドラインから Step Functions アクションを実行したりすることもできます。

ステートマシン定義の検証

を使用してステートマシンAPIを検証し、ワークフローを作成する前に潜在的な問題を見つけることができます。

ワークフローの検証の詳細については、Step Functions APIリファレンスValidateStateMachineDefinitionの「」を参照してください。

最小限のセットアップを開始するには、Lambda ステートマシンの作成チュートリアルに従います。このチュートリアルでは、Lambda 関数を呼び出す 1 つのステップでワークフローを定義し、ワークフローを実行して結果を表示する方法を示します。

ワークフローの定義

ワークフロー開発の最初のステップは、Amazon States Language でステップを定義することです。設定とツールに応じて、JSON、、YAMLまたは で Step Functions ステートマシンを文字列化された Amazon States Language (ASL) 定義として定義できます。

次の表は、ツールによる ASLベースの定義形式のサポートを示しています。

AWS ツール サポートされている形式 (複数可)
Step Functions コンソール JSON
HTTPS サービス API 文字列 ASL
AWS CLI 文字列 ASL
Step Functions Local 文字列 ASL
AWS Toolkit for Visual Studio Code JSON, YAML
AWS SAM JSON, YAML
AWS CloudFormation JSON、YAML、文字列 ASL

YAML テンプレートのステートマシン定義の 1 行のコメントは、作成されたリソースの定義には転送されません。コメントを保持する必要がある場合は、ステートマシン定義内で Commentプロパティを使用する必要があります。詳細については、ステートマシン構造 を参照してください。

で AWS CloudFormation また、 AWS SAMでは、ステートマシンの定義を Amazon S3 (JSON または YAML形式) にアップロードし、テンプレートに定義の Amazon S3 の場所を指定できます。詳細については、AWS:::StepFunctions:StateMachine S3Location ページを参照してください。

次の例 AWS CloudFormation テンプレートは、異なる入力形式を使用して同じステートマシン定義を提供する方法を示しています。

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
を使用してワークフローを開発する AWS SDKs

Step Functions は でサポートされています。 AWS SDKs for Java、.NET、Ruby、PHP、Python (Boto 3) JavaScript、、Go、C++。これらは、複数のプログラミング言語で Step Functions HTTPSAPIアクションを使用する便利な方法SDKsを提供します。これらのSDKライブラリによって公開されるAPIアクションを使用して、ステートマシン、アクティビティ、またはステートマシンスターターを開発できます。また、これらのライブラリを使用して可視性オペレーションにアクセスし、独自の Step Functions のモニタリングおよびレポートツールを開発できます。現在の のリファレンスドキュメントを参照してください。 AWS SDKs および Tools for Amazon Web Services

HTTPS リクエストによるワークフローの開発

Step Functions は、HTTPSリクエストを通じてアクセス可能なサービスオペレーションを提供します。これらのオペレーションを使用して、独自のライブラリから Step Functions と直接通信できます。サービスAPIアクションを使用して、ステートマシン、ワーカー、またはステートマシンスターターを開発できます。API アクションを通じて可視性オペレーションにアクセスして、独自のモニタリングおよびレポートツールを開発することもできます。詳細については、「」を参照してください。 AWS Step Functions API リファレンス

を使用してワークフローを開発する AWS Step Functions データサイエンス SDK

データサイエンティストは、 と Step Functions を使用して機械学習モデルを処理 SageMaker および公開するワークフローを作成できます。また、Python でオーケストレーションする複数ステップの機械学習ワークフローを作成することもできます。 AWS インフラストラクチャを大規模に。- AWS Step Functions データサイエンスは、Step Functions ワークフローを作成して呼び出すAPIことができる Python SDKを提供します。これらのワークフローは、Python および Jupyter ノートブックで直接管理および実行できます。詳細については、以下を参照してください。 AWS Github での Step Functions データサイエンスプロジェクトデータサイエンスSDKドキュメント、および での Jupyter Notebook SageMaker サンプル GitHub

ワークフローの実行とデバッグ

ワークフローは、コンソール、 API呼び出し (Lambda 関数など)、Amazon EventBridge やス EventBridge ケジューラ、別の Step Functions ステートマシンからの呼び出しなど、さまざまな方法で開始できます。ワークフローを実行すると、サードパーティーのサービスに接続して、 AWS SDKs、および実行中のデータを操作します。ステートマシンを通過する実行ステップとデータフローを実行およびデバッグするには、さまざまなツールがあります。以下のセクションでは、ワークフローを実行およびデバッグするための追加のリソースを提供します。

ステートマシンの実行を開始する方法の詳細については、「」を参照してくださいStep Functions でステートマシンの実行を開始する

ワークフローを実行するエンドポイントを選択する

レイテンシーを減らし、要件を満たす場所にデータを保存するために、Step Functions はさまざまな のエンドポイントを提供します。 AWS リージョン。Step Functions の各エンドポイントは完全に独立しています。ステートマシンまたはアクティビティは、それが作成されたリージョン内にのみ存在します。あるリージョンで作成したステートマシンやアクティビティは、別のリージョンで作成されたステートマシンやアクティビティとデータや属性を共有しません。例えば、2 つの異なるリージョンに STATES-Flows-1 というステートマシンを登録できます。一方のリージョンの STATES-Flows-1 ステートマシンは、もう一方のリージョンの STATES-Flow-1 ステートマシンとはデータや属性を共有しません。Step Functions エンドポイントのリストについては、「」を参照してください。 AWS Step Functions のリージョンとエンドポイント AWS 全般のリファレンス.

ワークフロー内のデータフローを制御する

Step Functions コンソールのデータフローシミュレーターを使用して、情報が状態から状態にどのように流れるかを確認し、データのフィルタリングと操作の方法を理解できます。データフローシミュレーターを使用すると、Step Functions が InputPath、、、Parameters、 などのデータの処理に使用する各フィールドをシミュレートできますResultSelectorOutputPathResultPath。詳細については、データフローシミュレーターを使用して Step Functions でデータフローをテストする を参照してください。

Step Functions のローカル開発バージョン

テストと開発の目的で、ローカルマシンに Step Functions をインストールして実行するオプションがあります。Step Functions のローカルバージョンは を呼び出すことができます AWS Lambda 関数、両方 AWS ローカルで実行する場合は、 および 。サポートされている他の を調整することもできます。 AWS のサービス。詳細については、「Step Functions でステートマシンをローカルでテストする」を参照してください。

VS Code によるローカルおよびリモート開発

VS Code を使用してリモートステートマシンとやり取りし、ステートマシンをローカルで開発することもできます。ステートマシンの作成や更新、既存のステートマシンの一覧表示、ステートマシンの実行およびダウンロードを行うことができます。VS Code を使用して、テンプレートから新しいステートマシンを作成したり、ステートマシンを可視化したり、コードスニペット、コード補完、コード検証を行ったりすることもできます。詳細については、「」を参照してください。 AWS Toolkit for Visual Studio Code ユーザーガイド

ワークフローのデプロイ

ワークフローを定義してデバッグしたら、Infrastructure as Code フレームワークを使用してデプロイすることをお勧めします。ステートマシンは、次のようなさまざまな IaC オプションを使用してデプロイできます。 AWS Serverless Application Model, AWS CloudFormation, AWS CDK、、Terraform。

AWS Serverless Application Model

以下を使用できます..。 AWS Serverless Application Model Step Functions を使用してワークフローを構築し、Lambda 関数APIsやイベントなど、サーバーレスアプリケーションを作成するために必要なインフラストラクチャをデプロイします。を使用することもできます。 AWS SAM CLI と を併用する AWS Toolkit for Visual Studio Code 統合エクスペリエンスの一部として。

詳細については、「AWS SAM を使用して Step Functions ワークフローを構築する」を参照してください。

AWS CloudFormation

ステートマシンの定義は、 で直接使用できます。 AWS CloudFormation テンプレート。

詳細については、「使用 AWS CloudFormation Step Functions でワークフローを作成する」を参照してください。

AWS CDK

Standard ステートマシンと Express ステートマシンは、 を使用して構築できます。 AWS CDK.

標準ワークフローを構築するには、「」を参照してくださいCDK を使用して標準ワークフローを作成する

Express ワークフローを構築するには、「」を参照してくださいCDK を使用して Express ワークフローを作成する

Terraform

Terraform by HashiCorp は、Infrastructure as Code (IaC) を使用してアプリケーションを構築するためのフレームワークです。Terraform では、ステートマシンを作成したり、インフラストラクチャデプロイのプレビューや再利用可能なテンプレートの作成などの機能を使用したりできます。Terraform テンプレートを使用すると、コードが小さなチャンクに分割されるため、コードを保守して再利用しやすくなります。

詳細については、「Terraform を使用して Step Functions にステートマシンをデプロイする」を参照してください。