Step Functions を使用したワークフローの開発
Step Functions コンソールと Workflow Studio ビジュアルエディタでワークフローの構築を開始することをお勧めします。空のキャンバスから開始することもできれば、一般的なシナリオの場合はスターターテンプレートを選択することもできます。
ワークフローを構築するには、次のタスクが必要です。
-
ワークフローの定義
-
ワークフローの実行とデバッグ
-
ワークフローのデプロイ
Amazon States Language でステートマシンを定義します。Amazon States Language の定義を手動で作成できますが、Workflow Studio はチュートリアルで取り上げられます。Workflow Studio を使用すると、マシン定義の定義、ステップの視覚化と編集、ワークフローの実行とデバッグ、および結果のすべてを Step Functions コンソール内で表示できます。
Visual Studio Code での Workflow Studio の使用
AWS ツールキットを使用すると、VS Code 内から Workflow Studio を使用して、ステートマシンの個々のステートを視覚化、構築、テストできます。ステートへの入力と変数を設定し、テストを開始すると、データがどのように変換されるかを確認できます。ワークフローを調整して再テストできます。完了したら、変更を適用してステートマシンを更新できます。詳細については、AWS Toolkit for Visual Studio Code の「Workflow Studio の使用」を参照してください。
また、AWS Command Line Interface (AWS CLI) で多くの Step Functions の機能を使用できます。例えば、ステートマシンを作成し、既存のステートマシンを一覧表示できます。AWS CLI で Step Functions コマンドを使用して、実行、アクティビティのポーリング、タスクハートビートの記録などを開始および管理できます。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 でステップを定義することです。設定とツールに応じて、Step Functions ステートマシンを JSON、YAML、または文字列化された 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 |
| CloudFormation | JSON、YAML、文字列化された ASL |
テンプレートのステートマシン定義にある YAML の単一行のコメントは、作成されたリソースの定義には転送されません。コメントを保持する必要がある場合は、ステートマシン定義内で Comment プロパティを使用する必要があります。詳細については、「ステートマシン構造」を参照してください。
CloudFormation と AWS SAM では、ステートマシンの定義を Amazon S3 にアップロードし (JSON または YAML 形式で)、テンプレートで定義の Amazon S3 のロケーションを提供できます。詳細については、「AWS::StepFunctions::StateMachine S3Location」ページを参照してください。
次の例 CloudFormation テンプレートは、異なる入力形式を使用して同じステートマシン定義を提供する方法を示しています。
AWS SDK を使用したワークフローの開発
Step Functions は、AWS SDKs for Java、.NET、Ruby、PHP、Python (Boto 3)、JavaScript、Go、および C++ でサポートされています。これらの SDK は、複数のプログラミング言語で Step Functions HTTPS API アクションを使用する便利な方法を提供します。これらの SDK ライブラリで公開されている API アクションを使用して、ステートマシン、アクティビティ、ステートマシンスターターを開発できます。また、これらのライブラリを使用して可視性オペレーションにアクセスし、独自の Step Functions のモニタリングおよびレポートツールを開発できます。現行の AWS SDK および Amazon Web Services のツール
HTTPS リクエストによるワークフローの開発
Step Functions は HTTPS リクエスト経由でアクセス可能なサービスオペレーションを提供します。これらのオペレーションを使用して、独自のライブラリから Step Functions と直接通信できます。サービス API アクションを使用するステートマシン、ワーカー、ステートマシンスターターを開発できます。また、API アクションを介して可視性オペレーションにアクセスし、独自のモニタリングおよびレポートツールを開発できます。詳細については、「AWS Step Functions API リファレンス」を参照してください。
AWS Step Functions データサイエンス SDK を使用したワークフローの開発
データサイエンティストは、SageMaker AI と Step Functions を使用して、機械学習モデルを処理してパブリッシュするワークフローを作成できます。AWS インフラストラクチャを大規模に調整する Python の複数ステップの機械学習ワークフローを作成することもできます。AWS Step Functions データサイエンス SDK は、Step Functions ワークフローを作成して呼び出すことができる Python API を提供します。これらのワークフローは、Python および Jupyter ノートブックで直接管理および実行できます。詳細については、「GitHub の AWS Step Functions データサイエンスプロジェクト
ワークフローの実行とデバッグ
ワークフローは、コンソールから、API コール (Lambda 関数など)、Amazon EventBridge および EventBridge スケジューラから、別の Step Functions ステートマシンからなど、さまざまな方法で開始できます。ワークフローを実行すると、サードパーティーのサービスに接続したり、AWS SDK を使用したり、実行中にデータを操作したりできます。ステートマシンを通過する実行ステップとデータの実行し、デバッグするために、さまざまなツールがあります。以下のセクションでは、ワークフローを実行およびデバッグするための追加のリソースを提供します。
ステートマシンの実行を開始する方法の詳細については、「Step Functions でステートマシンの実行を開始する」を参照してください。
ワークフローを実行するエンドポイントを選択する
レイテンシーを軽減し要件を満たす場所にデータを保存するために、Step Functions では異なる AWS リージョンのエンドポイントが用意されています。Step Functions の各エンドポイントは完全に独立しています。ステートマシンまたはアクティビティは、それが作成されたリージョン内にのみ存在します。あるリージョンで作成されたステートマシンおよびアクティビティは、別のリージョンで作成されたものとデータや属性を共有しません。例えば、2 つの異なるリージョンに STATES-Flows-1 というステートマシンを登録できます。一方のリージョンの STATES-Flows-1 ステートマシンは、もう一方のリージョンの STATES-Flow-1 ステートマシンとはデータや属性を共有しません。Step Functions エンドポイントのリストについては、「AWS 全般のリファレンス」の「AWS Step Functions のリージョンとエンドポイント」を参照してください。
VS Code での開発
AWS ツールキットを使用すると、VS Code 内から Workflow Studio を使用して、ステートマシンの個々のステートを視覚化、構築、テストできます。SAM と CloudFormation の定義置換も使用できます。ステートへの入力と変数を設定し、テストを開始すると、データがどのように変換されるかを確認できます。[ステート定義] タブでワークフローを調整して再テストできます。完了したら、変更を適用してステートマシンを更新できます。詳細については、AWS Toolkit for Visual Studio Code の「Step Functions の使用」および「Workflow Studio の使用」を参照してください。
ワークフローのデプロイ
ワークフローを定義してデバッグした後は、Infrastructure as Code フレームワークを使用してデプロイすることをお勧めします。AWS Serverless Application Model、CloudFormation、AWS CDK、Terraform など、さまざまな IaC オプションを使用してステートマシンをデプロイできます。
- AWS Serverless Application Model
Step Functions で AWS Serverless Application Model を使用すると、ワークフローを構築し、Lambda 関数、API、イベントなどの必要なインフラストラクチャをデプロイして、サーバーレスアプリケーションを作成できます。統合エクスペリエンスの一部として、AWS SAM CLI を AWS Toolkit for Visual Studio Code と組み合わせて使用することもできます。
詳細については、「AWS SAM を使用して Step Functions ワークフローを構築する」を参照してください。
- CloudFormation
ステートマシン定義は、CloudFormation テンプレートで直接使用できます。
詳細については、「CloudFormation を使用して Step Functions でワークフローを作成する」を参照してください。
- AWS CDK
AWS CDK で Standard ステートマシンと Express ステートマシンを構築できます。
Standard ワークフローを構築するには、「CDK を使用して Standard ワークフローを作成する」を参照してください。
Express ワークフローを構築するには、「CDK を使用して Express ワークフローを作成する」を参照してください。
- Terraform
Terraform
by HashiCorp は、Infrastructure as Code (IaC) を使用してアプリケーションを構築するためのフレームワークです。Terraform では、ステートマシンを作成したり、インフラストラクチャデプロイのプレビューや再利用可能なテンプレートの作成などの機能を使用したりできます。Terraform テンプレートを使用すると、コードが小さなチャンクに分割されるため、コードを保守して再利用しやすくなります。 詳細については、「Terraform を使用して Step Functions でステートマシンをデプロイする」を参照してください。