2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Step Functionsのオンラインセミナー受けてみた

Last updated at Posted at 2019-05-30

AWS Black Belt Online Seminar AWS Step Functions」の自分向けメモ
Step Functions使ったことあるレベルの人向け

Step Functions概要

  • マイクロサービスをオーケストレートするサービス
    • 各サービスをステートマシンと呼ばれる仕組みでつなぐ
  • 実行履歴のログトレースが可能

ステートマシン

  • ASL(Amazon States Language)と呼ばれるJSON形式の言語で定義されるワークフロー
  • ASLチェックツールがある
  • 作成したステートマシンは複数種類の同時実行が可能

ステートマシンの起動方法は以下

  • Amazon CloudWatch Events
  • Amazon API Gateway
  • AWSコンソール
  • AWS CLI
  • AWS Lambda
  • EC2に実装したアプリ

ステートマシンから実行可能なサービスは以下

  • AWS Lambda
  • Amazon DynamoDB
  • AWS Batch
  • Amazon ECS
  • Amazon SNS
  • Amazon SQS
  • AWS Glue
  • Amazon SageMaker

Activity

  • サーバー等のアプリからポーリングが可能
  • アプリから死活監視を行うことが可能

データの入出力

InputPath

  • 渡された入力データを取捨選択し、State内で利用する
  • 取得しなかった情報は後続のStateに渡らない?

Parameters

  • 入力データを生成し、State内で利用する
  • JSON形式で生成可能

ResultPath

  • Stateの実行結果を受け取るキーを指定する
  • 入力データと実行結果をマージして後続のStateに渡す
  • Stateの実行結果を受け取るキーを指定しなかった場合、実行結果のみを後続のStateに渡す
  • InputPathで取得しなかった情報でも、指定すれば後続のStateに渡せる?

OutputPath

  • 後続のStateに渡す情報を取捨選択する
  • 未指定の場合はResultPathが全て後続のStateに渡る

その他

  • Comment:任意のコメントを記述できる
  • StartAt:最初に実行するStateを指定する
  • TimeoutSeconds:ステートマシン全体のタイムアウト秒を指定する
  • Version:ASLのバージョン
  • States:Stateを記述する

Stateの記述

Stateの種類

Task

  • 基本的なStateでLambdaやDynamoDB、SNSを呼び出す
  • Parametersで呼び出すサービスに渡す情報をセットする

Wait

  • 指定された時間待機した後、次のStateに移る
  • 待機時間秒や待機期限日時などで指定できる

Pass

  • 何もせずに次のStateに移る

Parallel

  • 並列にStateを実行する
  • 並列実行したStateが1つでも失敗になるとParallel配下のStateが全て失敗扱いになる
  • Branches内にStartAtとStatesを複数記述する

Choice

  • 指定した条件にマッチするか、それ以外(Default)かで分岐させる
  • 条件指定は複数可能
  • 多くの比較演算子が利用可能
  • 異なる型(数値と文字列)の比較はできない
  • StringEqualsで文字列としての数値の比較はできない(NumericEqualsを使う)

Fail

  • ステートマシンの実行を失敗として終了させる

Succeed

  • ステートマシンの実行を成功として終了させる

エラー判定

  • タイムアウトやState失敗などエラー内容を区別できる
  • 呼び出したLambadaのエラー内容を区別することも可能

Retry

  • Task、ParallelではRetryが指定でき、エラー時に再試行が可能

Catch

  • Task、ParallelではCatchが指定でき、エラー時に遷移させるStateを指定可能

実行状況の確認

  • AWSコンソールからStateごとの実行結果の確認が可能(エラー内容も確認できる)
  • 実行結果の変化をトリガーにCloudWatch Eventにイベント発行が可能
  • メトリクス収集も可能
    • ExecutionTime:実行時間
    • ExecutionThrottled:スロットリングされた実行数
    • ExecutionAborted:中断された実行数
    • ExecutionFailed:失敗した実行数
    • ExecutionStarted:開始された実行数
    • ExecutionSucceeded:正常終了した実行数
    • ExecutionTimedOut:タイムアウトした実行数

補足や料金

料金

  • 状態遷移回数での従量課金
  • 状態遷移:Start⇒State、State⇒State、State⇒Endをそれぞれ1回とカウント
  • 4000回/月は無料

AWS Step Functions Local

  • ローカル環境でStep Functionsのテストができる

他サービスとの使い分け

SQS

  • サービス間のメッセージを受け渡す点は同じ
  • スケーラブルな要求ならSQS
  • 処理の追跡が必要であればStep Functions

SWF

  • ワークフロー制御する点は同じ
  • 高機能なことをするならSWF
  • 新規開発するならStep Functions

まとめ

  • アプリの構築が容易、構成を可視化
  • 余分なコーディングなしでアプリの構成できる
  • エラー処理も構築できかつトレース可能
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?