Amazon Web Services ブログ
新機能 – AWS Step Functions ワークフロースタジオ – ステートマシンを構築するためのローコードのビジュアルツール
AWS Step Functions を使用することで、ステートマシンを使用してスケーラブルな分散アプリケーションを構築できます。今までは、 Step Functions でワークフローを構築するには、Amazon State Language (ASL) を学び、理解する必要がありました。本日、ガイド付きインタラクティブインターフェイスを通じて Step Functions を学習し、ワークフローのプロトタイプ作成および構築を迅速にできるローコードのビジュアルツールである Workflow Studio をリリースします。
2016年12月、 Step Functionsがリリースされたとき、サーバーレスへの移行の最中でした。私のチームは、すべてのビジネスロジックを従来の環境向けに構築されたアプリケーションからサーバーレスアーキテクチャに移行しました。単一のことしかできない機能を目指していましたが、アプリケーションのすべてのステート管理を機能に入れると、それらは非常に複雑になりました。 Step Functions がリリースされたのを知って、構築していたサーバーレスアプリケーションの複雑さを軽減できる事に気付きました。大変だった点は、ASL を使用してステートマシンの学習と書き込み、さまざまな AWS サービスを呼び出す方法を学び、ステートマシンが必要とするフローオペレーションを実行するのに多くの時間を費やしたことでした。何週間もかけて、何度もテストを繰り返して完成させました。
Step Functions は、分散アプリケーション内のプロセスを視覚化するのに素晴らしいものですが、これらのステートマシンの開発は視覚的なプロセスではありません。 Workflow Studio を使用することで、デベロッパーはサーバーレスワークフローを簡単に構築できます。これにより、デベロッパーは価値の高いビジネスロジックに集中できると同時に、ワークフロー定義の設定コードの記述やデータ変換の構築に要する時間を短縮できます。
Workflow Studio は、最初のワークフローを構築する時間を短縮し、デベロッパーが実際に作業をすることで学習するラーニングパスを加速することを提供するため、 Step Functionsを初めて使用するデベロッパーに最適です。 Workflow Studioは、ビジュアルツールを使用してワークフローをより迅速に開発できるようになったため、ワークフロー構築の経験豊富なデベロッパーにも役立ちます。例えば、 Workflow Studio を使用してワークフローのプロトタイプを作成し、ステークホルダーとすばやく共有できます。または、 Workflow Studio を使用してステートマシンのボイラープレートを設計することもできます。 Workflow Studio を使用する場合、AWS アカウントにすべてのリソースをデプロイする必要はありません。ステートマシンを構築し、準備が整った段階で、さまざまなアクションを実行して完成させることができます。
Workflow Studio は、e コマースプラットフォーム、金融トランザクション処理システム、電子ヘルスサービスなどのエンタープライズアプリケーションの構築を簡素化します。AWS サービスをワークフローに組み込むことで、耐障害性でスケーラブルなアプリケーション構築の複雑さを解消してくれます。 Workflow Studio では、AWS サービスの機能の多くをビジュアルワークフローで公開しているため、AWS のサービスと API への呼び出しの順序付けと設定、そしてワークフローを通過するデータを変換するのが容易です。
Workflow Studio を使ってワークフローを構築する
アカウント作成時にデータを検証するシステムを構築する必要があるとします。入力データが正しければ、システムはレコードを永続的ストレージに保存し、アカウントが正常に作成されたことを確認する E メールが管理者に送信されます。検証エラーのためにアカウントを作成できない場合、データは保存されず、アカウントの作成に問題があったことを管理者に通知する E メールが送信されます。
この問題を解決するにはさまざまな方法がありますが、アプリケーションを最小限のコードで作成し、AWS が提供するすべてのマネージドサービスを活用したい場合は、 Workflow Studio を使用してステートマシンを設計し、すべてのマネージドサービスと統合してください。
Workflow Studio を使用してステートマシンを作るのがどれだけ簡単かお見せしましょう。開始するには、 Step Functions コンソールに移動し、ステートマシンを作成します。 Workflow Studio で新しいステートマシンの設計を視覚的に開始するオプションが表示されます。
Workflow Studio でステートマシンの作成を開始できます。左側の枠の [States Browser] で、使用可能なアクションとフロー状態を表示および検索ができます。アクションは、 AWS Lambda 関数の呼び出し、 Amazon API Gateway でのリクエストの実行、およびAmazon Simple Notification Service (SNS) のトピックへのメッセージの送信など、AWS のサービスを使用して実行できるオペレーションです。フローは、ワークフローをユースケースに適した状態にするために使用できる状態タイプです。
使用可能なフローの状態をいくつか紹介します:
- Choice: if-then-else ロジックを追加。
- Parallel: パラレルブランチを追加。
- Map: for-each ループを追加。
- Wait: 特定の時間の遅れ。
ページの中央には、現在作業中のステートマシンが表示されます。
アカウントバリデータのワークフローを構築するには、次のものが必要です。
- アカウントを作成するために提供されたデータを検証する Lambda 関数を呼び出す 1 つのタスク。
- DynamoDB テーブルに項目を配置する 1 つのタスク。
- SNS トピックにメッセージを送る 2 つのタスク。
- Lambda 関数の結果に応じて、実行するアクションを決定する 1 つの選択フロー状態。
ワークフローを作成するときに、ステートマシンでの作業をスタートするのに先立ち、すべての AWS リソースを事前に用意する必要はありません。ステートマシンを構築し、後からその定義をリソースに追加できます。または、このブログ記事で行うように、ステートマシンでの作業をスタートする前に、すべての AWS リソースを AWS アカウントにデプロイする事もできます。この サーバーレスアプリケーションモデルテンプレートから、必要なリソースを AWS アカウントにデプロイできます。これらのリソースを作成してデプロイしたら、この記事の他のステップに進むことができます。
Lambda関数を設定する
ワークフローの最初のステップは Lambda 関数です。ステートマシンに追加するには、ステップ 1 に示されているように、[アクション] リストからアクションを呼び出し Workflow Studio の中央にドラッグします。右ペインで関数の構成を編集できます。例えば、名前を変更できます (ステップ 2 を参照)。ステップ 3 に示されているように、このアカウントにデプロイされた関数のリストから、どの Lambda 関数を呼び出すかを編集することもできます。完了したら、ステップ 4 に示されているように、このタスクの出力を編集できます。
タスクの出力を設定することは非常に重要です。これらの値は入力のために次のステートに渡されるからです。必要な情報 (この場合は、アカウントが有効な場合) のみを使用して、結果オブジェクトを作成します。まず、手順 1 に示されているように、OutputPath で出力をフィルターします。次に、結果セレクタで結果を変換を選択し、ステップ 2 に示されている JSON を追加できます。次に、この現在の状態の入力を出力と組み合わせて、それを入力として次の状態に送信するには、ステップ 3 に示されているように、入力と結果を ResultPath で結合を選択します。入力はアカウント情報であるため、この状態の入力が必要です。検証が成功した場合は、そのデータを DynamoDB テーブルに格納する必要があります。
各変換が何をするのかを知りたい場合は、各変換の情報リンクを選択します。
選択状態を設定する
Lambda 関数を設定したら、選択状態を追加する必要があります。選択肢は、選択肢ルールをもとに入力を検証します。これらのルールを適用した結果に基づいて、ステートマシンはそれぞれのパスへの実行を指示します。
次の図は、選択状態を追加するためのワークフローを示しています。ステップ 1 で、フローメニューからドラッグします。ステップ 2 で、名前を入力します。ステップ 3 で、ルールを定義できます。このユースケースでは、特定の条件を持つ 1 つのルールがあります。
このルールの条件は、前の状態の出力の結果をブール値と比較します。前の状態オペレーションが true の値になった場合は、ルールが実行されます。これはハッピーパスです。この例では、 Lambda 関数の結果を検証します。関数が入力データを検証する場合、次に示すように validated は true と同等と返します。
ルールが適用されない場合、選択状態はデフォルトのブランチを実行します。これはエラーパスです。
エラーパスを設定する
エラーが発生した場合は、アカウントを作成できなかったことを管理者に知らせる E メールを送信する必要があります。前の投稿で SNSトピックを作成しておくべきでした。 SNS トピックで設定した E メールアドレスが、このトピックのメールサブスクリプションを受け付けていることを確認してください。
メッセージを公開する SNS タスクを追加するには、ステップ 1 で示されているように、 SNS:Publish タスク を検索し、ステップ 2 で示されているように、ステートマシンにドラッグします。ステップ 3 で示されているように、フェイルステートフローをステートマシンにドラッグして、この実行ブランチが完了したときにステートマシンがフェイル状態になるようにします。
Workflow Studio の優れた特徴の 1 つは、ステートマシンでさまざまなステートをドラッグして、ワークフローのさまざまな部分に配置できることです。
これで、メッセージを公開するための SNS タスクを設定できます。まず、ステップ 4 で示されているように、状態名を変更します。ステップ 5 で示されているように、AWS アカウントにデプロイされたトピックから選択します。最後に、ステップ 6 で示されているように、E メールで送信されるメッセージを、ユースケースに適したメッセージに変更します。
ハッピーパスを設定する
ハッピーパスでは、アカウント情報を DynamoDB テーブルに保存し、先ほどデプロイした SNS トピックを使用して E メールを送信する必要があります。これを行うには、ステップ 1 で示されているように DynamoDB:putItem タスクを追加し、ステップ 2 で示されているように SNS:Publish タスクをステートマシンに追加します。SNS:Publish タスクは、エラーパスと同様の方法で設定します。別のメッセージを送るだけです。そのためには、エラーパスから状態を複製し、適切な場所にドラッグして、新しいメッセージで修正することができます。
DynamoDB:putItem タスクは項目を DynamoDB テーブルに配置します。この操作は Lambda 関数内で実行する必要がないため、非常に便利なタスクです。このタスクを設定するには、ステップ 3 で示されているように、まずタスクの名前を変更します。次に、ステップ 4 で示されているように API パラメータを設定して、 DynamoDB テーブルに適切なデータを配置する必要があります。
この特定の項目 (アカウント) に使用する API パラメータは次のとおりです:
{
"TableName": "<THE NAME OF YOUR TABLE>",
"Item": {
"id": {
"S.$": "$.Name"
},
"mail": {
"S.$": "$.Mail"
},
"work": {
"S.$": "$.Work"
}
}
}
ステートマシンを保存して実行する
Workflow Studio はステートマシンの ASL 定義を作成しましたが、ステートマシンを編集したいときはいつでもビジュアルエディタに戻り ASL 定義を編集することができます。
ステートマシンの準備ができたので、最初の実行を行えます。保存して、新しい実行を開始します。新しい実行を開始すると、ステートマシンへの入力イベントを尋ねるメッセージが表示されます。ステートマシンの実行はそれらに依存するため、このイベントの属性がName、Mail、Work という名前があることを確認します。
。ステートマシンを実行すると実行のビジュアル化が表示されます。実行したすべてのステップが表示されます。各ステップには、ステップ入力とステップ出力が表示されます。これは、ステートマシンのデバッグと微調整に非常に役立ちます。
今すぐ利用可能
Workflow Studio のロードマップには、多くの優れた機能があります。詳細は変わる可能性がありますが、現在、ワークフローの実行を視覚的に作成、実行、デバッグできる機能を提供するよう取り組んでいます。詳細をご期待ください。お気軽にフィードバックをお送りください。
Workflow Studio は、 Step Functions が使用できるすべての AWS リージョンで利用可能になりました。
– Marcia