開発オプション - AWS Step Functions

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

開発オプション

AWS Step Functions ステートマシンは、テストや開発にコンソール、SDK、ローカルバージョンの Step Functions を使用するなど、いくつかの方法で実装できます。

Step Functions コンソール

ステートマシンは Step Functions コンソールを使用して定義できます。を使用してタスク用のコードを提供することで、 AWS Lambda ローカルの開発環境を使わずにクラウドで複雑なステートマシンを作成できます。作成が終わったら、Step Functions コンソールで Amazon States Language を使用してステートマシンを定義できます。

Lambda ステートマシンの作成チュートリアルでは、この方法を使用してシンプルなステートマシンを作成し、それを実行して結果を確認します。

データフローシミュレータ

Step Functions コンソールでワークフローを設計、実装、およびデバッグできます。JsonPath の入出力データ処理を使用して、ワークフロー内のデータの流れを制御することもできます。Step Functions コンソールのデータフローシミュレータを使用して、ステートからステートへの情報の流れを学び、複数のデータをフィルタリングして操作する方法を理解します。このツールを使用すると、Step Functions が 使用して、InputPathParametersResultSelectorOutputPathResultPathなどのデータを処理する各フィールドをシミュレーションします。

詳細については、「データフローシミュレータ」を参照してください。

AWS SDK

Step Functions は Java、.NET、Ruby、PHP、Python (Boto 3)、Go JavaScript、C++ の AWS SDK でサポートされています。これらの SDK は、複数のプログラミング言語で Step Functions HTTPS API アクションを使用する便利な方法を提供します。

これらの SDK ライブラリで公開されている API アクションを使用して、ステートマシン、アクティビティ、ステートマシンスターターを開発できます。また、これらのライブラリを使用して可視性オペレーションにアクセスし、独自の Step Functions のモニタリングおよびレポートツールを開発できます。

Step Functions AWS を他のサービスで使用するには、Amazon Web Services 最新の AWS SDK とツールのリファレンスドキュメントを参照してください

注記

Step Functions は HTTPS エンドポイントのみをサポートしています。

標準ワークフローと Express ワークフロー

新しいステートマシンを作成するときは、Type標準または Express のいずれかを選択する必要があります。どちらの場合も、Amazon ステートメント言語を使用してステートマシンを定義します。ステートマシンの実行の動作は、選択したタイプによって異なります。ステートマシンが作成された後は、選択したタイプを変更することはできません。

詳細については、CloudWatch Logs を使用したログ記録 を参照してください。

HTTPS サービス API

Step Functions は HTTPS リクエスト経由でアクセス可能なサービスオペレーションを提供します。これらのオペレーションを使用して Step Functions と直接通信したり、HTTPS を介して Step Functions と通信できる任意の言語で独自のライブラリを開発したりできます。

サービス API アクションを使用するステートマシン、ワーカー、ステートマシンスターターを開発できます。また、API アクションを介して可視性オペレーションにアクセスし、独自のモニタリングおよびレポートツールを開発できます。

API アクションの詳細については、AWS Step Functions API リファレンスを参照してください。

[Development environments](開発環境)

使用する予定のプログラミング言語に適した開発環境を設定する必要があります。

たとえば、Step Functions を Java を使用して開発するには、各開発ワークステーションに AWS SDK for Java、などの Java 開発環境をインストールする必要があります。Java 開発者が Eclipse IDE を使用する場合は、 AWS Toolkit for Eclipseもインストールする必要があります。この Eclipse プラグインによって AWSの開発に役立つ機能が追加されます。

プログラミング言語にランタイム環境が必要な場合は、これらのプロセスを実行する各コンピュータに環境を設定する必要があります。

エンドポイント

レイテンシーを短縮し、要件を満たす場所にデータを保存するために、Step Functions AWS は異なるリージョンのエンドポイントを提供しています。

Step Functions の各エンドポイントは完全に独立しています。ステートマシンまたはアクティビティは、それが作成されたリージョン内にのみ存在します。あるリージョンで作成されたステートマシンおよびアクティビティは、別のリージョンで作成されたものとデータや属性を共有しません。例えば、2 つの異なるリージョンに STATES-Flows-1 というステートマシンを登録できます。一方のリージョンの STATES-Flows-1 ステートマシンは、もう一方のリージョンの STATES-Flow-1 ステートマシンとはデータや属性を共有しません。

Step Functions エンドポイントのリストについては、「AWS 全般のリファレンス」の「AWS Step Functions のリージョンとエンドポイント」を参照してください。

AWS CLI

AWS Command Line Interface (AWS CLI) から多くのStep Functions 機能にアクセスできます。 AWS CLI は、Step Functions コンソールを使用したり、場合によっては Step Functions API アクションを使用してプログラミングしたりする代わりに使用できます。例えば、 AWS CLI を使用してステートマシンを作成し、その後、既存のステートマシンを一覧表示できます。

AWS CLI で Step Functions コマンドを使用して、実行、アクティビティのポーリング、タスクハートビートの記録などを開始および管理できます。Step Functions コマンドがすべて記載されたリスト、使用可能な引数、および、使用方法を示す例については、「AWS CLI コマンドリファレンス」を参照してください。

AWS CLI コマンドは Amazon ステート言語に厳密に従うため、を使用してStep AWS CLI Functions API アクションについて学習できます。また、既存の API の知識を使用して、コマンドラインからコードのプロトタイプを作成したり Step Functions アクションを実行したりできます。

Step Functions Local

テストと開発のため、ローカルマシンで Step Functions をインストールおよび実行できます。Step Functions Local を使って、任意のマシンで実行をスタートできます。

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

注記

Step Functions Local はダミーアカウントを使用して動作します。

AWS Toolkit for Visual Studio Code

VS コードを使用して、リモートステートマシンとやり取りし、ローカルでステートマシンを開発できます。ステートマシンの作成や更新、既存のステートマシンの一覧表示、ステートマシンの実行およびダウンロードを行うことができます。VS Code を使用して、テンプレートから新しいステートマシンを作成したり、ステートマシンを可視化したり、コードスニペット、コード補完、コード検証を行ったりすることもできます。

詳細については、『 AWS Toolkit for Visual Studio Code ユーザーガイド』を参照してください。

AWS Serverless Application Model とStep Functions

Step Functions はと統合されているため AWS Serverless Application Model、ワークフローを Lambda 関数、API、イベントと統合して、サーバーレスアプリケーションを作成できます。

AWS Toolkit for Visual Studio Code 統合エクスペリエンスの一部として AWS SAM CLI をと組み合わせて使用することもできます。

詳細については、「AWS Step Functions 」および「 AWS SAM」を参照してください。

Terraform と Step Functions

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

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

定義形式のサポート

Step Functions には、さまざまな形式でステートマシン定義を提供できるさまざまなツールが用意されています。ステートマシンの詳細を指定する Amazon ステートメント言語 (ASL) 定義は、文字列で、または JSON または YAML を使用してシリアル化されたオブジェクトとして提供できます。

注記

YAML は単一行のコメントを許可します。テンプレートのステートマシン定義部分で提供される YAML コメントは、作成されたリソースの定義には転送されません。代わりに、ステートマシン定義内の Comment プロパティを使用できます。詳細については、ステートマシン構造 のページを参照してください。

次の表で、どのツールが ASL ベースの定義をサポートしているかを示します。

ツールによる定義フォーマットのサポート
JSON YAML Amazon ステートメント言語の文字列
Step Functions コンソール
HTTPS サービス API
AWS CLI
Step Functions Local
AWS Toolkit for Visual Studio Code
AWS SAM
AWS CloudFormation
注記

AWS CloudFormation AWS SAM また、ステートマシン定義を JSON または YAML 形式で Amazon S3 にアップロードしたり、定義の Amazon S3 ロケーションをテンプレートに指定したりすることもできます。これにより、ステートマシンの定義が複雑な場合に、テンプレートの読みやすさを向上できます。詳細については、S3 ロケーションページを参照してください。AWS::StepFunctions::StateMachine

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: MyStateMachine