理論
ステップ関数とは何ですか?
AWS Docsから:Step Functionsは、AWS Lambda関数と他のAWSサービスを組み合わせて、ビジネスクリティカルなアプリケーションを作成できるサーバーレスオーケストレーションサービスです。ステップ関数グラフィカルコンソールを使用すると、アプリケーションワークフローを一連のイベント駆動型ステップとして表示できます。ステップ関数は、ステートマシンとタスクに基づいています。ステートマシンはワークフローです。タスクは、別のAWSサービスによって実行されている作業の単位であるワークフロー内の状態です。ワークフローの各ステップは状態です。
組み込みのステップ関数コントロールを使用して、各ワークフローステップのステータスをチェックし、アプリケーションが正しい順序で期待どおりに実行されていることを確認します。ユースケースに応じて、StepFunctionsはLambdaなどのAWSサービスを呼び出してタスクを実行できます。機械学習モデルを処理および公開するためのワークフローを作成できます。ステップ関数を使用して、AWS GlueなどのAWSサービスを管理し、抽出、変換、およびロード(ETL)ワークフローを作成できます。また、人間の操作を必要とするアプリケーション用に、長い自動ワークフローを作成することもできます。
または、簡単に言えば、プロセスを管理するためのサービスです。
ステップ関数の可能な使用例は何ですか?
- オーケストレーションラムダ機能
- 分岐
- 例外処理(再試行またはキャッチ)
- プロセスへの人間の参加
- 並列処理
ステップ関数のプロセスタイプ
- 標準-長時間実行されるプロセスに必要であり、サービスと対話オプションを幅広くサポートしています
- Express-高速実行プロセス(5分)に必要で、実行されたプロセス100万あたり最大20回節約できます。AWSサービスとの統合が少ない
AWSサービスとの統合の種類
応答の要求(デフォルト)-サービスを呼び出し、HTTP応答を受信した後、ステップ関数が次の状態に移行できるようにします。
ジョブの実行(.sync)-サービスを呼び出し、ジョブが完了するのを待ちます。
タスクトークン(.waitForTaskToken)を使用してコールバックを待機します-タスクトークンを使用してサービスを呼び出し、コールバックを使用してタスクトークンが戻るのを待ちます。
標準タイプとエクスプレスタイプでのAWSサービスとの統合の比較
標準でサポートされているサービス統合
サービス | 応答を要求する | ジョブの実行(.sync) | コールバックを待つ(.waitForTaskToken) |
---|---|---|---|
ラムダ | ✓✓ | ✓✓ | |
AWSバッチ | ✓✓ | ✓✓ | |
DynamoDB | ✓✓ | ||
Amazon ECS / AWS Fargate | ✓✓ | ✓✓ | ✓✓ |
アマゾンSNS | ✓✓ | ✓✓ | |
アマゾンSQS | ✓✓ | ✓✓ | |
AWS Glue | ✓✓ | ✓✓ | |
SageMaker | ✓✓ | ✓✓ | |
アマゾンEMR | ✓✓ | ✓✓ | |
CodeBuild | ✓✓ | ✓✓ | |
AWSステップ関数 | ✓✓ | ✓✓ | ✓✓ |
Expressでサポートされているサービス統合
サービス | 応答を要求する | ジョブの実行(.sync) | コールバックを待つ(.waitForTaskToken) |
---|---|---|---|
ラムダ | ✓✓ | ||
AWSバッチ | ✓✓ | ||
DynamoDB | ✓✓ | ||
Amazon ECS / AWS Fargate | ✓✓ | ||
アマゾンSNS | ✓✓ | ||
アマゾンSQS | ✓✓ | ||
AWS Glue | ✓✓ | ||
SageMaker | ✓✓ | ||
アマゾンEMR | ✓✓ | ||
CodeBuild | ✓✓ | ||
ステップ機能 | ✓✓ | ✓✓ |
十分な理論、例えば行きましょう。
理論例
サービスがどのように見えるかについて少なくともある程度のアイデアを得るために、Helloworldの例を検討してください。
前提条件
- AWSアカウント
- AWSアカウントのStepFunctionsサービスに移動します
したがって、以下は私たちが行うことです:
- 「ステップ関数の作成」に移動します
- ステートマシンの定義=コードスニペットを使用した作成
- タイプ=標準
- 定義=
{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "Type": "Pass", "Result": "World", "End": true } } }
[実行の開始]をクリックします。挿入は省略できます。次のような図が表示されます。
おめでとうございます。最も単純なステップ関数を作成しました。
結論の代わりに
このトピックが興味深い場合は、次のパートで、図に示すように、AWS Lambda + SQS + SNS統合を使用してステップ関数を作成します。
ソースへのリンク:
https://docs.aws.amazon.com/step-functions/