AWS Step Functions が一般公開されました

AWS Step Functions を無料で試す

AWS Step Functions の無料利用枠には、毎月 4,000 の状態遷移が含まれています。 

AWS 無料利用枠の詳細はこちら »


Q: AWS Step Functions とは何ですか?

AWS Step Functions は完全マネージド型のサービスで、視覚的ワークフローを使用して分散アプリケーションやマイクロサービスのコンポーネントを容易にコーディネートできます。それぞれ別個の機能を実行する個々のコンポーネントからアプリケーションを構築することで、簡単にアプリケーションをスケールおよび変更できるようになります。Step Functions を使えば、安心してアプリケーションのコンポーネントを調整し、機能を配置できます。グラフィカルコンソールを使用して、アプリケーションのコンポーネントを一連のステップとして配置し、可視化できます。これにより、複数のステップからなるアプリケーションをシンプルに構築および実行できるようになります。Step Functions では、各ステップが自動的にトリガーおよび追跡され、エラーが発生した場合は再試行されるため、アプリケーションが意図したとおりに整然と実行されます。また、各ステップの状態が記録されるため、問題が発生した場合は、問題を簡単に診断およびデバッグできます。コードを記述することなくステップを変更および追加できるため、アプリケーションを簡単に進化させ、短期間でイノベーションを実現できます。

AWS Step Functions ではオペレーションや基盤となるインフラストラクチャが自動的に管理されるため、どのような規模でもアプリケーションを確実に提供できます。

Q: アプリケーションを設計して、サービスオーケストレーションを使用してタスクを調整することにおける利点は何ですか?

アプリケーションをサービスコンポーネント (またはステップ) に分割することで、1 つのコンポーネントで障害が発生した場合もシステム全体がダウンすることなく、各コンポーネントが独立してスケーリングされ、そして各変更後にシステム全体を再デプロイすることなくそのコンポーネントを更新できるという利点があります。サービスコンポーネントのコーディネートとは、具体的には実行従属関係、スケジューリング、および同時実行を、アプリケーションの論理的フローに従って管理することです。このようなアプリケーションでは、開発者がサービスオーケストレーションを使用してこれを実行し、障害を処理できます。

Q: AWS Step Functions で解決できるユースケースには、どのようなものがありますか?

AWS Step Functions は、一連のステップに細分できる計算上の問題やビジネスプロセスに役立ちます。一般的ユースケースには、以下のようなものがあります。

  • ドキュメントとデータ処理 – 複数のデータベースのデータを統一されたレポートに統合する。大規模なデータセットを細かく調整し、有用なフォーマットにする。
  • DevOps – 継続的な統合と継続的なデプロイのためのツールを構築する。インフラストラクチャの変化に自動的に対応するイベント駆動型アプリケーションを作成する。
  • e コマース – 注文のフルフィルメントや在庫追跡など、ミッションクリティカルなビジネスプロセスを自動化する。
  • ウェブアプリケーション – 強力なユーザー登録プロセスとサインオン認証を実装する。

Q: AWS Step Functions はどのようなしくみになっていますか?

AWS Step Functions により、アプリケーションをステートマシン (アプリケーションの動作を一緒にキャプチャする一連のステップ) として定義できます。ステートマシンの状態として、タスク、シーケンシャルステップ、パラレルステップ、分岐パス (選択)、タイマー (待機) などが挙げられます。タスクとは作業の単位です。この作業は、AWS Lambda 関数、任意のタイプの Amazon EC2 インスタンス、コンテナ、またはオンプレミスのサーバーで実行できます。Step Functions API と通信できるものにはすべて、タスクを割り当てることができます。視覚的なコンソールで各状態を実行順に自動的にグラフ化できるため、複数ステップのアプリケーションを簡単に設計できます。コンソールでは各ステップのリアルタイムステータスが強調表示され、すべての実行の詳細な履歴が提供されます。Step Functions により、アプリケーションおよび基礎となるコンピューティングのステップが操作および拡張されるため、需要の増加に合わせて確実にアプリケーションを実行できます。

Q: AWS Step Functions と Amazon SQS はどのように使い分けますか?

高度にスケーラブルで監査可能なアプリケーションの開発においてサービスコンポーネントを調整する必要がある場合は、AWS Step Functions を使用してください。サービス間でメッセージを送信、保存、および受信するために、信頼性が高く、高度にスケーラブルなホストキューが必要な場合は、Amazon Simple Queue Service (SQS) を使用することをお勧めします。Step Functions では、アプリケーション内のすべてのタスクとイベントのトラッキングが行われます。Amazon SQS では、アプリケーションレベルのトラッキングを独自に実装する必要があります。特に、アプリケーションで複数のキューを使用する場合です。Step Functions コンソールと可視化 API によって、アプリケーションを中心としたビューが提供され、そこで、実行の検索、実行の詳細情報へのドリルダウン、および実行の管理を行うことができます。Amazon SQS では、そのような追加の機能を実装する必要があります。Step Functions には、タスク間のデータ受け渡しや柔軟なタスク分散など、アプリケーション開発に役立つ機能が多数用意されています。Amazon SQS では、一部のアプリケーションレベルの機能を実装する必要があります。分散アプリケーションの調整のための基本的なワークフローを Amazon SQS を使用して構築することもできますが、Step Functions はこのような機能を初期状態で使えるように設定されており、アプリケーションレベルのその他の機能も追加されています。

Q: AWS Step Functions と AWS Batch はどのように使い分けますか?

AWS Batch は、AWS クラウドにおけるあらゆる規模のバッチ処理ワークフローを簡単に実行できるようにするサービスです。シーケンシャル、パラレル、または分岐ロジック (選択) など、一連のステップとして分散アプリケーションを構築する場合は、AWS Step Functions を使用してください。AWS Batch を使用してアプリケーションでジョブを実行し、Step Functions を使用して相互依存関係を持つ複数のバッチジョブを送信できます。必要なバッチ処理の量をスケールするために、コンピューティングインフラストラクチャを自動的に管理する場合は、AWS Batch を使用します。

Q: AWS Step Functions と Amazon Simple Workflow Service (SWF) はどのように使い分けますか?

AWS Step Functions では、より生産的かつ機敏なアプローチにより、視覚的ワークフローを使用してアプリケーションコンポーネントを調整できるため、新しいアプリケーションには AWS Step Functions を使用することをお勧めします。プロセスにおいて介入する外部信号が必要な場合、または結果を親に返す子プロセスを起動する場合は、Amazon Simple Workflow Service (SWF) を使用してください。Amazon SWF では、宣言型の JSON にステートマシンを記述するのではなく、ディサイダープログラムを書いて決定ステップからアクティビティステップを分離します。Amazon SWF では、連携ロジックを完全に制御することが可能ですが、アプリケーションの開発はより複雑になります。選択したプログラミング言語でディサイダープログラムを記述することも、Flow Framework を使用して、自動的に非同期の相互作用を構造化するプログラミングコンストラクトを利用することもできます。

Q: 既存の Amazon Simple Workflow Service (SWF) はどうなりますか?

AWS では引き続き Amazon Simple Workflow (SWF) を提供し、Amazon SWF のお客様すべてをサポートします。

Q: AWS Step Functions は他の AWS のサービスと一緒に使用できますか?

AWS Step Functions は、AWS CloudFormation、AWS Lambda、Amazon EC2、Amazon EC2 Container Service (ECS)、Amazon API Gateway、Amazon CloudWatch、AWS CloudTrail、Auto Scaling など AWS の他のいくつかのサービスと連携して動作します。

AWS のさまざまなサービスを使用して実現できることの例を以下に示します。

  • AWS CloudFormation を使用して、AWS Step Functions のステートマシンやアクティビティに必要な複数の関連リソースを起動する。
  • Lambda 関数を使用して、または EC2 や ECS コンテナで実行されているプログラムを使用してタスクを実装する。
  • Step Functions API を API Gateway API 内のメソッドに関連付けます。
  • EC2 タスク群を、CloudWatch メトリクスに応答する AWS Step Functions アクティビティに合わせてスケールする。

Q: AWS Step Functions は AWS Lambda と一緒に使用できますか?

AWS Lambda 関数を使用して、ステートマシン内でタスクを実行できます。AWS Step Function では、指定された Lambda 関数に入力情報が渡され、Lambda 関数から結果が返されるのを待機します。Lambda を使用すると、サーバーのプロビジョニングや管理をすることなく、Lambda でサポートされているすべての言語でタスクを作成できます。AWS Step Functions と AWS Lambda を一緒に使用する方法の詳細については、Step Functions のドキュメントを参照してください。

Q: AWS Step Functions は Amazon EC2 や他のコンピューティングリソースと一緒に使用できますか?

ステートマシン内のすべての作業はタスクによって行われます。タスクには、任意の言語の任意のコードで構成されているアクティビティが含まれます。アクティビティは、Amazon EC2、Amazon ECS、モバイルデバイスなど、基本的に AWS Step Functions API と通信できるすべてのコンピュータでホストできます。アクティビティでは、API コールを使用して作業をリクエストし、入力データを受信し、作業を行い、そして結果を返す Step Functions をロングポーリングします。

Q: AWS Step Functions と Amazon API Gateway はどのように連携しますか?

Amazon API Gateway は、完全マネージド型サービスで、開発者はどのスケールでも API の公開、管理、監視、保護がしやすくなります。AWS マネジメントコンソールで数回クリックすれば、Step Functions API を API Gateway API 内のメソッドに関連付けることができます。つまり、自分の定義した API メソッドに HTTPS リクエストが送信されると、API Gateway によって Step Function API のアクションが呼び出されます。

Amazon API Gateway API を使用して、Step Funcions ステートマシンを起動し、分散バックエンドアプリケーションのコンポーネントをコーディネートできます。また、リクエストの承認や応答といった人間によるアクティビティもアプリケーションのステップに統合できます。アプリケーションで使用するサービスの API に対するサーバーレス非同期呼び出しも可能です。

Amazon API Geteway では、数十万の同時 API コールを受け付け、処理することが可能です。これにはトラフィック管理、認証とアクセスコントロール、モニタリング、API バージョン管理が含まれます。

Q: AWS Step Functions と Amazon CloudWatch はどのように連携しますか?

Amazon CloudWatch は、AWS のサービスと AWS で実行されるアプリケーションのモニタリングサービスです。Amazon CloudWatch によって、メトリクスの収集と追跡、アラームの設定が実行され、AWS Step Functions の変更にも自動的に反応します。

Amazon CloudWatch と AWS Step Functions によって実現できることの例を以下に示します。

  • Step Functions ワークフローのメトリクスをモニタリングする。
  • CloudWatch Events への応答として Step Functions ワークフローを起動する。
  • Step Functions がメトリクスのしきい値を超えたときにアラームを生成する。
  • CloudWatch Events を使用して Step Functions ワークフローのスケジュールを 1 分の短い間隔に設定する。

Q: オンプレミスのリソースで AWS Step Functions を使用できますか?

はい。AWS Step Functions アプリケーションでは、データセンターで稼働しているワーカーとクラウドで稼働しているワーカーを組み合わせることができます。データセンター内のワーカーは引き続き通常どおり稼働し、並行して任意のクラウドベースのワーカーも稼働します。


Q: AWS Step Functions の使用を開始するにはどうすればよいですか?

AWS Step Functions の詳細ページで、[無料でお試しください] をクリックすると、AWS Step Functions の使用を開始できます。アマゾン ウェブ サービスのアカウントをお持ちでない場合は、画面の表示に従って作成してください。サインアップした後、AWS Step Functions コンソールでサンプルウォークスルーを実行すると、ステートマシンを作成する手順が表示されます。AWS マネジメントコンソールから AWS Step Functions に移動します。次に、[Hello World] 設計図を選択して、"HelloWorld" Lambda 関数を追加します。これで、ステートマシンをプレビューして実行できるようになります。AWS Step Functions のドキュメントを参照して、お使いのアプリケーションで AWS Step Functions を使用してください。

Q: AWS Step Functions ではどのような言語を使用できますか?

ウェブサービス API を使用して AWS Step Functions と通信している限り、どのようなプログラミング言語でもアクティビティを記述できます。ご希望の言語の AWS SDK を使用すると便利です。AWS Lambda は、Node.js (JavaScript)、Python、Java (Java 8 互換)、および C# (.NET Core ランタイムを使用) で記述されたコードをサポートしています。 ステートマシンは、Amazon States Language を使用して JSON で定義されます。


Q: ユーザーはどのように認証すればよいですか?

AWS Step Functions は AWS Identity and Access Management (IAM) に統合されています。IAM ポリシーを使用して、Step Functions API へのアクセスを制御できます。


Q: AWS Step Functions の使用料金はどのように請求されますか?

AWS Step Functions では、アプリケーションワークフローの 1 つのステップから次のステップへの移行 (これは状態遷移と呼ばれます) に対してのみの課金が発生します。1 日あたり数回の実行から 1 か月あたり数千万回の実行まで、自動的かつ容易にスケールでき、コスト効率が高くなるように、各状態がどれほど長く継続したかにかかわりなく (最長 1 年間まで)、請求額は状態遷移に基づき計算されます。詳細については、AWS Step Functions の料金ページを参照してください。