Yuta NakataのBlog

Python / AWS / ITについて役立つ情報を発信します

StepFunctionの基礎と概要【サンプルコード付き】

StepFunctionsとは?

概要

StepFunctionsとは、AWSのサービスの一つです。

複数のAWSサービスを簡単に組み合わせ・自動化でき、計算機リソースを分散・並列化させつつ大規模計算を可能にすることができます。

個人的なお気に入りは、以下の3つです。

  • イベントドリブンで駆動させ、計算処理(Lambda)を行いつつ、DB(Aurora/Dynamo)に書き込み、その他のAWSサービス(例えば、翻訳機能を持つAmazon Translateとの連携、メール配信SNSとの連携)を簡単に組み込み、あらゆるプロセス(AWSサービスの200以上に対応)を自動化できる点。

  • IaC(Infrastrcutre as Code)の観点から、Cloudformationを用いてリソースを定義したく、マネジメントコンソールでワークフローを設定したものをベースに自動でコード化してくれるため、使いやすい

  • サーバーレスを重視し、Lambdaベースで開発しており、Lambdaの制限である15分タイムアウトやメモリ・ストレージの制限が厳しい。そのため、単一lambdaでできることは制限されるが、StepFunctionを用いて、並列化・処理の分散化を通じてスケーラビリティを持った大規模計算が可能になる。

その他、AWS公式による強みとしては、以下のものがあります。

  • 視覚的で使いやすいワークフロー設定
  • 分散アプリケーションのためのエラー処理、タイムアウト、並列処理フローが組み込まれています。
  • 220 の AWS サービスと 10,000 以上の API と直接統合
  • 分散されたコンポーネントの調整
  • 堅牢で効率的なアプリケーション開発を可能にする部品の耐久性
  • ワークフローロジックの分離による開発サイクルの短縮化
  • 組み込みの状態管理およびワークフローの進捗追跡
  • 組み込みのエラー処理
  • リアルタイムかつ監査可能なワークフローの実行履歴
  • 監視とトラブルシューティングのためのビジュアルオペレーターダッシュボード
  • 高い可用性と耐障害性のワークフロー
  • スケールするサーバーレスソリューション
  • IoT やデータインジェストなどのイベント処理ワークフローに対応した大容量オーケストレーション
  • 大規模な並列処理
  • セキュリティ
  • コンプライアンス

aws.amazon.com

ハンズオン

今回やること

マネジメントコンソールから、StepFunctionを開き、Lambdaを実行するところまでをやろうと思います。

ソースコードGithubに共有します。

github.com

Githubをクローンして来てもらえれば、

  • Lambda
  • StepFunctions

を自動で立ち上げることができます。

マネジメントコンソールでは、以下の手順になります。

1.マネジメントコンソールにおけるstepfunctionsからステートマシンの作成を選択

2.ビジュアル操作画面にて、AWS Lambda Invokeドラッグアンドドロップし、APIパラメータにおいて、指定のLambdaを選択する

3.(cloudformationで使う場合)yamlファイルとして書き出す

勉強教材

オススメの教材の紹介です。

  • AWS Hands-on for Beginners

aws.amazon.com

AWS公式のハンズオン動画です。

結局これが一番、勉強になります。

ぜひ、お手持ちのパソコンで動作させながら、勉強してみてください。