Help us understand the problem. What is going on with this article?

【AWS】Step Functions

More than 1 year has passed since last update.

はじめに

AWSのLambdaを使ったことがあるけど、このサービス(Lambda)を使っている人がStepFunctionsと連呼していたので、何者だ?と調べ、その結果をまとめたいと思います。

StepFunctionsの概要

  1. 分散アプリケーション・マイクロサービスの全体を「ステートマシン」と呼ばれる仕組みでオーケストレートできる
  2. 定義した「ステートマシン」は、AWSコンソールから「ワークフロー」という形式で見やすく可視化できる
  3. 「ステートマシン」の各ステップの実行履歴をログから追跡できる

雑記

  • 分散アプリケーション・マイクロサービス
  • ステートマシン
  • オーケストレート
  • ワークフロー

といった未知の単語がバンバン出てきますな・・・
特にオーケストレートという単語は、仮想化(VMやDocker)で散々出てきているにも関わらず、未だに具体的イメージを作れていないバズワードだから非常に難しく感じる。。。

ちなみに、「ステートマシン」というのは自動販売機のように

  1. 入金待ち
  2. ジュースの選択
  3. ジュースの払い出し+釣り銭の払い出し

という分離したプロセス遷移を持った仕組みの事のようです。
分かったような、分からないような、フワッとした感想です。
どうでもいいけど、自動販売機の例えって、オートマトンでも頻繁に用いられていました。

プログラムと自動販売機というのは相性が良いんでしょうね。
ぶっちゃけ、分かったような分からないようなというのが感想ではあるのですが。

ステートマシンの作成

Amazon States Languageと呼ばれるJSON形式の言語でワークフローを定義します。
(Amazon States Languageに限らず、AWSサービスを使う上では、JSON形式とYAML形式の記述には通じていないときついですよね…)

Amazon States Languageのチェックツール

  1. RubyベースのAmazon States Language記述チェック
  2. gem install statelintでインストール
  3. statelint で検証する

ステートマシンの作成方法

AWSオンラインマニュアルを参照

ステートマシンを作成

  • コメントを記述
make_state_01.json
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state"
}
  • StartAt(一番最初に実行するStateを指定する)を記述
make_state_02.json
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state",
  "StartAt": "HelloWorld",
}

ここで記載しているHelloWorldという文字列は任意です。

  • States(オブジェクトの一連の状態)を記述
make_state_03.json
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state",
  "StartAt": "HelloWorld",
  "States": {
  }
}
  • StartAtで定義したStatesの状態を記述
make_state.json
{
  "Comment": "A Hello World example of the Amazon States Language using a Pass state",
  "StartAt": "HelloWorld",
  "States": {
      "Type": "Pass",
      "Result": "Hello World!",
      "End": true
  }
}
パラメータ 状態 説明
Type Pass 入力を単純に出力に渡す、または一部の固定データを出力する
Result Hello World! 任意の文字列。
End true 実行が停止して結果が返される。

AWS ドキュメント » AWS Step Functions » 開発者ガイド » Step Functions の詳細 » 状態 » Amazon ステートメント言語 » ステートマシン構造
AWS ドキュメント » AWS Step Functions » 開発者ガイド » Step Functions の詳細 » 状

7種類のState Type

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

ステートマシンの実行方法

呼び出し方法 説明
Amazon CloudWatch Events S3へのファイル保存やEC2の起動といったイベントを契機に実行
Amazon API Gateway あるAPIが呼ばれた際のバックエンドとして実行
マネジメントコンソール コンソールから手動で実行
AWS CLI コマンドラインから実行
各種SDK LambdaやEC2に実装したアプリケーションから実行

最後に

理解力に乏しいために、ふんわりとしか理解できませんでした。
とはいえ、ふんわりとは理解できたので、実機で動かしてみて、内容を確認してみようと思います。
実機で動かした後に、ここに記載した内容を恥ずかしく思えてきたら、適宜書き直します。
2019年11月10日現在、執筆者が、ふんわりとしか理解できていない以上、この記事を読んでも、元記事を虫食いでまとめただけなので、分からないと思います。(ごめんなさい)

参考文献

AWS クラウドサービス活用資料集

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away