AWS Step Functions とは? - AWS Step Functions

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

AWS Step Functions とは?

Step Functions は、AWS Lambda 関数およびその他のビジネスクリティカルなアプリケーションを構築するための AWS のサービスを組み合わせることができるサーバーレスオーケストレーションサービスです。Step Functions のグラフィカルコンソールでは、アプリケーションのワークフローを一連のイベント駆動型ステップとして確認できます。

Step Functions はステートマシンとタスクに基づいています。ステートマシンはワークフローです。タスクとは、ワークフロー内の状態で、別の AWS のサービスが実行する1 つの作業単位を表します。ワークフローの各ステップは状態です。

Step Functions の組み込みコントロールを使用して、ワークフロー内の各ステップの状態を調べて、アプリケーションが期待どおりに実行されていることを確認します。ユースケースによっては、タスクを実行するため、Step Functions で、Lambda など、AWS のサービスを呼び出すことができます。機械学習モデルを処理してパブリッシュするワークフローを作成できます。抽出、変換、ロード (ETL) ワークフローを作成するため、AWS Glue など、Step Functions コントロール AWS のサービスを利用できます。また、手動による介入が必要なアプリケーション用に実行時間が長い自動化されたワークフローを作成することもできます。

AWS SDK と最適化された統合

他の AWS のサービスに電話するため、Step Functions の AWS SDK 統合を使用するか、Step Functions の最適化された統合のいずれかを使用できます。

  • [AWS SDK integrations] (SDK 統合) を使用すると、200 を超える AWS のサービスをステートマシンから直接呼び出して、9,000 を超える API アクションにアクセスできます。

  • Step Functions の最適化された統合は、カスタマイズされており、ステートマシンでの使いやすくなっています。

Standard ワークフローと Express ワークフロー

Step Functions には 2 つのワークフロータイプがあります。Standard ワークフローでは 1 度だけワークフローが実行され、最大 1 年間実行できます。Express ワークフローは、ワークフローを 1 度以上実行し、最大 5 分間実行できます。実行は、ワークフローを実行してタスクを実施するインスタンスです。Standard ワークフローは、実行履歴と視覚的なデバッグを示すため、実行時間が長い監査可能なワークフローに最適です。Express ワークフローは、ストリーミングデータ処理や IoT データの取り込みなど、イベントレートの高いワークロードに最適です。

Standard ワークフロー

  • 2,000/秒実行レート

  • 毎秒 4,000 の状態遷移レート

  • 状態移行ごとの価格設定。

  • 実行履歴と視覚的なデバッグを表示します

  • すべてのサービス統合とパターンをサポートします。

Express ワークフロー

  • 100,000/秒実行レート

  • ほぼ無制限の状態遷移レート

  • 実行回数および実行期間ごとの価格

  • Amazon CloudWatch に実行履歴を送信

  • すべてのサービス統合とパターンをサポート

Step Functions 料金など、Standard ワークフローと Express ワークフローの詳細については、次を参照してください。

ユースケース

Step Functions はアプリケーションのコンポーネントとロジックを管理するため、コードの書き込みを減らし、アプリケーションの迅速な構築と更新に集中することができます。このセクションでは、Step Functions を使用する一般的なユースケースについて説明します。

ユースケース #1: 関数オーケストレーション


          チェーン

特定の順序で Lambda 関数 (ステップ) のグループを実行するワークフローを作成します。1 つの Lambda 関数の出力が次の Lambda 関数の入力に渡されます。ワークフローの最後のステップで結果が得られます。Step Functions を使用すると、ワークフローの各ステップがどのように相互作用するかを確認できるため、各ステップが意図通りの機能を確実に実行できるようになります。

関数のグループを含むステートマシンを作成する方法を示すチュートリアルについては、以下を参照してください。

ユースケース #2: 分岐


          分岐

顧客が与信限度額の増加を要求します。Choice 状態を使って、Choice 状態の入力に基づいた判断を Step Functions にさせることができます。リクエストが事前承認した顧客のクレジット上限を超える場合は、Step Functions から顧客のリクエストをマネージャーに送信してサインオフを求めることができます。リクエストが事前承認した顧客のクレジット上限を下回っている場合は、Step Functions でリクエストを自動的に承認することができます。

ユースケース #3: エラー処理


          再試行/キャッチ

Retry

このユースケースでは、顧客はユーザーネームをリクエストしています。初めて、顧客のリクエストは正常に行われません。Retry ステートメントを使って、Step Functions で顧客のリクエストを再試行することができます。2 回目に、顧客のリクエストは正常に終了します。

Catch

同じようなユースケースでは、顧客は利用できないユーザーネームをリクエストしてします。Catch ステートメントを使って、Step Functions より利用可能なユーザーネームを提案します。顧客が利用可能なユーザーネームを使用する場合、Step Functions でワークフローの次のステップに進み、確認メールを送信します。顧客が利用可能なユーザーネームを使用しない場合、Step Functions はワークフローの別のステップに進み、サインアッププロセスを最初からやり直します。

Retry そして Catch ステートメントの詳細な例については、以下を参照してください。

ユースケース #4: ループの中の人間


          チェーン

バンキングアプリケーションを使用して、顧客の一人が友達に送金します。カスタマーは確認メールを待ちます。コールバックとタスクトークンを使って、Step Functions より、顧客の金を送金して、顧客の友人が送金を受領した時に報告するように Lambda に指示します。Lambda から、顧客の友だちが送金を受領したと報告を受けた後、Step Functions をワークフローの次のステップに進み、顧客に確認メールを送信します。

タスクトークンを使ってコールバックを表示するサンプルプロジェクトを表示するには、以下を参照してください。

ユースケース #5: 並列処理


          並列処理

顧客がビデオファイルを 5 つの異なる表示解像度に変換するため、ビューワーは複数のデバイスで動画を視聴できます。Parallel 状態を使用して、Step Functions はビデオファイルを入力するので、Lambda は同時に 5 つの表示解像度に処理できます。

ユースケース #6: 動的並列処理


          チェーン

顧客から 3 つの商品の注文を受けると、各商品の発送準備が必要となります。各商品の在庫状況をチェック、各商品を収集、各商品を梱包した後で配送します。Map 状態を使用して、Step Functions は、Lambda に顧客の各商品を並列で処理させます。顧客が選んだ全商品を配送用に梱包すると、Step Functions はワークフローの次のステップに進み、追跡情報を記載した確認メールを顧客に送信します。

Map を使用した動的並列処理を示すサンプルプロジェクトを表示するには、以下を参照してください。

サービス統合

Step Functions は、複数の AWS のサービスと統合されます。Step Functions とこれらのサービスを組み合わせるには、次のサービス統合パターンを使用します。

レスポンスをリクエスト (デフォルト)

  • サービスを呼び出し、Step Functions が HTTP レスポンスを取得した直後に次のステップに進むことができるようにします。

ジョブの実行 (.sync)

  • サービスを呼び出し、ジョブが完了するまで Step Functions が待機するようにします。

タスクトークンを使用してコールバックを待機 (.waitForTaskToken)

  • タスクトークンでサービスを呼び出し、タスクトークンがコールバックとともに返されるまで Step Functions を待機させます。

次の表に、Step Functions で使用可能なサービス統合とサービス統合パターンを示します。

Standard ワークフロー と Express ワークフロー は、同じ統合をサポートしますが、同じ統合パターンはサポートしていません。Express ワークフローは、ジョブの実行 (.sync) またはコールバックの待機 (.waitForTaskToken) をサポートしていません。最適化された統合パターンのサポートは、各統合ごとに異なります。詳細については、「標準ワークフロー対 Express ワークフロー」を参照してください。

Standard Workflows
サポートされているサービス統合
サービス レスポンスのリクエスト ジョブの実行 (.sync) コールバックまで待機 (.waitForTaskToken)
最適化された統合 Lambda
AWS Batch
DynamoDB
Amazon ECSAWS Fargate
Amazon SNS
Amazon SQS
AWS Glue
SageMaker
Amazon EMR
Amazon EMR on EKS
CodeBuild
Athena
Amazon EKS
API Gateway
AWS Glue DataBrew
Amazon EventBridge
AWS Step Functions
AWS SDK 統合 200 以上
Express Workflows

サポートされているリージョン

ほとんどの AWS リージョンは Step Functions をサポートしています。Step Functions が利用可能な AWS リージョンの詳細なリストについては、[AWS Regional Table] (リージョン表) を参照してください。

Step Functions を使うのは今回が初めてですか?

Step Functionsを使うのは今回が初めての場合、次のトピックは、Step Functions と他の AWS のサービスの結合方法など、Step Functions の操作に関するさまざまな部分を理解するのに役立ちます。