Open10

AWS Step Functions キャッチアップ

M.K Tech k.masachikaM.K Tech k.masachika

AWS Step Functionsとは

  • ローコード
  • ビジュアルワークフローサービス
  • AWSサービスのオーケストレーション
  • 基本的なワークフローパターン

ワークフロー

  • Amazon State Langage(ASL)で記載
  • ステートマシンとして定義
  • ステートと呼ばれるステップで構成
  • 複数のAWSサービスのオーケストレーションに利用可能

Step Functionsのステート

  • Choice
  • Parallel
  • Map
  • Pass
  • Wait
  • Success
  • Fail

ワークフローの種類

  • 標準ワークフロー
  • Expressワークフロー
    作成後に変更することはできない
M.K Tech k.masachikaM.K Tech k.masachika

タスク

リクエストレスポンス

Step Functionsがサービスを呼び出し、すぐに次のステートに進む。基礎となるジョブ完了を待たない。

ジョブ実行(.sync)

AWS BatchやAmazon ECSなど特定の統合サービスの場合、タスク完了を待機して次のステートに進むことができる。(.sync)

最適化されたインテグレーションドキュメント

https://docs.aws.amazon.com/step-functions/latest/dg/integrate-optimized.html

ジョブ実行のハイパフォーマンス参考ブログ

https://aws.amazon.com/jp/blogs/compute/orchestrating-high-performance-computing-with-aws-step-functions-and-aws-batch/

タスクトークンによるコールバック(.waitForTaskToken)

タスクトークンが返されるまでワークフローを無期限に一時停止できる。例えば人間が承認するタスクが必要な場合など。
https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token

AWS SDKサービスの統合

Step Functionsは多くのサービスをSDKで統合できる。インテグレーションを利用sルウにはサービス名とAPIコールを指定する。ARMで指定

arn:aws:states:::aws-sdk:serviceName:apiAction.[serviceIntegrationPattern]

EC2インスタンス
arn:aws:states:::aws-sdk:ec2:describeInstances
S3バケット一覧
arn:aws:states:::aws-sdk:s3:listBuckets
M.K Tech k.masachikaM.K Tech k.masachika

入出力

Step Functionsでは入出力はJsonでやり取りされる。ステートからステートへのやり取りはフィルタリングできる。

  • InputPath
  • OutputPath
  • ResultPath
  • Parameters
  • ResultSelector

ドキュメント

https://docs.aws.amazon.com/step-functions/latest/dg/concepts-input-output-filtering.html

フィルタしている内容を可視化できるデータフローシュミレーターもある
https://aws.amazon.com/jp/blogs/compute/modeling-workflow-input-output-path-processing-with-data-flow-simulator/

M.K Tech k.masachikaM.K Tech k.masachika

エラー処理

Step Functionsはデフォルトではエラーを完全に失敗させる。エラーハンドリングを行うことでリトライなどの処理が可能となる。

Retry

      "Retry": [
        {
          "ErrorEquals": [
            "CustomError" // エラー名と一致する空白でないの時列の配列
          ],
          "IntervalSeconds": 1, // 再試行までの時間
          "MaxAttempts": 2, // 再志向の最大数
          "BackoffRate": 2 // 志向ごとに再試行期間が増加する乗数
        }
      ],

Catch

特定のエラーをキャッチすることができる。組み込みキャッチャーもある。

組み込みキャッチャー

  • States.ALL - 既知のエラー名と一致するワイルドカード
  • States.DataLimitExceeded - 出力がクォータを超えている
  • States.Runtime - 実行時例外を処理できなかった
  • States.HeartbeatTimeout - タスクステートがハートビートの送信に失敗した
  • States.Timeout - タスクステートがタイムアウトした
  • States.TaskFailed - 実行中にタスクステートが失敗した
    States.Permissions - タスクステートの権限が不十分

RetryとCatchの両方がある場合はRetryをしてからCatchの制御となる。
https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html