💭

AWS Step Functionsの超詳細解説

2023/11/19に公開

はじめに

この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧はこちら

この記事ではStep Functionsに関連する内容を超詳細にまとめています。

具体的には以下流れで説明します。

  • AWS Step Functionsとは
  • AWS Step Functionsの仕組み
  • AWS Step Functionsのセキュリティ
  • AWS Step Functions for Advance

AWSの区分でいう「Level 200:トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

この記事を読んでほしい人

  • Step Functionsがどういうサービスか説明できるようになりたい人
  • Step Functionsを採用するときのベストプラクティスを説明できるようになりたい人
  • AWS Certified DevOps Engineer Professionalを目指している人

AWS Step Functionsとは

AWS Step Functionsは、クラウド上で分散型および非同期的なアプリケーションワークフローを構築するためのマネージドサービスです。
異なるAWSサービスやAPI呼び出しを含むアプリケーションのステップを組み合わせ、実行することができるツールであり、その柔軟性と効率性により、開発者はビジネスロジックの実装に専念できるようになります。

AWS Step Functionsの仕組み

ステート

Step Functionsの基本的な構成要素は「ステート」です。
ステートは単一のタスクや処理を表し、それが成功した場合、次にどのステートに進むかを定義します。
ステートはAWS Lambda関数、Amazon ECSタスク、Amazon SNS通知など、様々なAWSサービスを実行することができ、異なるサービスの統合が容易になり、柔軟性が向上します。

ステートマシン

ステートはステートマシンによって組み合わせられ、ワークフロー全体を形成します。
ステートマシンはステートの継続フローを制御し、成功や失敗などのイベントに基づいて次に実行するステートを決定します。
これにより、複雑なワークフローを階層的かつ柔軟に構築できます。

フロー制御

Step Functionsは条件分岐、反復処理、パラレル処理など、様々なフロー制御の機能を提供します。
これにより、複雑なビジネスロジックを柔軟かつ効果的にモデル化することができます。
例えば、特定の条件が満たされた場合に異なるステートに進むような条件分岐や、複数のステートを同時に実行するパラレル処理などが可能です。

具体的なフロー制御の機能はState Typeとして7種類定義されているので以下にまとめています。

State Type 説明
Task 単一の処理を行う
Wait 指定した時間の間、処理をストップする
Pass 入力をそのまま出力へ渡す
Parallel 並列に処理を実行する
Choice 一定の条件により分岐する
Fail 実行結果を失敗として終了する
Succeed 実行結果を成功として終了する

ロギングとトレーシング

Step Functionsは実行中のワークフローに関する詳細なログを提供し、デバッグやトラブルシューティングをサポートします。
CloudWatch LogsやX-RayなどのAWSサービスと統合されており、実行中のステートやデータのフローを視覚化することができます。
これにより、ワークフロー全体の可視性を向上させ、問題の特定や解決が容易になります。

AWS Step Functionsのセキュリティ

Step Functionsはセキュリティを確保するためにIAMを活用しています。
適切なIAMロールを定義し、各ステートやLambda関数に与える権限を制御することで、アクセスを管理し、セキュアなワークフローを構築できます。
これにより、機密データへのアクセスを制限し、アプリケーション全体のセキュリティを確保します。

AWS Step Functions for Advance

ベストプラクティス

Step Functionsを効果的に活用するためのベストプラクティスにはいくつかの重要なポイントがあります。

まず、スモールステップの利用が挙げられます。
各ステートを単純で小さなタスクに分割することで、可読性とメンテナンス性が向上し、ワークフローの理解が容易になります。

また、トランザクショナルなパターンを採用し、ステートの実行中にエラーが発生した場合のリトライやエラーハンドリングを適切に設定することで、データの整合性を確保します。

補足です。
つい先日まではフローが失敗しても失敗時点からフロー実行することができなかったため冪等性の担保が非常に重要でした。
しかし、2023/11/15のアップデートでredriveと呼ばれる機能が追加され失敗時点からフローを再開できるようなったため、冪等性の担保の重要度はやや低下したといえるでしょう。

これまで、失敗時点からの再開ができないためにAirFlowを選んでいた人はまず、StepFunctionsを検討してみるとAWSコストも管理コストも下がる可能性が高いです。

まとめ

この記事ではStep Functionsに関連する内容を超詳細にまとめました。

  • AWS Step Functionsとは
  • AWS Step Functionsの仕組み
  • AWS Step Functionsのセキュリティ
  • AWS Step Functions for Advance

次回はAWS System Managerについて超詳細解説します。

Discussion