AWS Step Functions とは? - AWS Step Functions

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

AWS Step Functions とは?

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

Step Functions はステートマシンとタスクに基づいています。Step Functions では、ワークフローをステートマシンと呼びます。ステートマシンは、一連のイベント駆動型ステップです。ワークフローの各ステップはステートと呼ばれます。タスク ステートは、AWS Lambda などの別の AWS サービスが実行する作業単位を表します。タスクステートは、任意の AWS のサービス または API を呼び出すことができます。

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

ヒント

一連のインタラクティブモジュールを通じて Step Functions の主な機能に慣れるには、「ワークショップAWS Step Functions」を参照してください。または、以下の「入門チュートリアル」に従って Step Functions の使用を開始し、クレジットカード申請ワークフローを作成してください。

AWS SDK と最適化された統合

他の AWS サービスを呼び出すために、Step Functions の AWS SDK 統合を使用するか、Step Functions の最適化された統合を使用することができます。

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

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

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

Step Functions には 2 つのワークフロータイプがあります。Standard ワークフローでは 1 度だけワークフローが実行され、最大 1 年間実行できます。つまり、標準ワークフローの各ステップは 1 回だけ実行されます。ただし Express ワークフローは、ワークフローを 1 度以上実行し、最大 5 分間実行できます。つまり、Express ワークフローの 1 つ以上のステップが複数回実行される可能性があり、ワークフロー内の各ステップは少なくとも 1 回実行されます。

実行は、ワークフローを実行してタスクを実施するインスタンスです。Standard ワークフローは、実行履歴と視覚的なデバッグを示すため、実行時間が長い監査可能なワークフローに最適です。Express ワークフローは、ストリーミングデータ処理や IoT データの取り込みなど、イベントレートの高いワークロードに最適です。

標準ワークフロー仕様

  • 毎秒 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 ECS/AWS Fargate
Amazon SNS
Amazon SQS
AWS Glue
SageMaker
Amazon EMR
Amazon EMR on EKS
Amazon EMR Serverless
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 の操作に関するさまざまな部分を理解するのに役立ちます。