複雑なワークフローのオーケストレーション
Step Functionsを使い、条件分岐、並列実行、エラー処理を含む高度なサーバーレスワークフローを構築します。
「複雑なワークフローのオーケストレーション」はCoddyKit上の無料Serverless Backend with AWS Lambda & API Gatewayレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはServerless Backend with AWS Lambda & API Gateway学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Serverless Backend with AWS Lambda & API Gatewayコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
Orchestrating Complex Workflows
Welcome! In this lesson, we'll dive into building sophisticated serverless workflows with AWS Step Functions.
We'll explore how to add decision-making, run tasks concurrently, and make your workflows resilient to errors.
Decision Making with Choice
The Choice state is your workflow's "if/else" statement. It allows your state machine to make decisions based on the input it receives.
- Each choice rule has a condition (e.g., input value equals "X").
- If a condition is met, the workflow transitions to a specified state.
- A default state handles cases where no conditions match.
Choice State Example
Here's how a Choice state looks in your Step Functions definition. It checks an orderStatus field to decide the next step.
{ "StartAt": "CheckOrderStatus", "States": { "CheckOrderStatus": { "Type": "Choice", "Choices": [ { "Variable": "$.orderStatus", "StringEquals": "PENDING", "Next": "ProcessPendingOrder" }, { "Variable": "$.orderStatus", "StringEquals": "SHIPPED", "Next": "NotifyShipping" } ], "Default": "HandleUnknownStatus" }, "ProcessPendingOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPending", "End": true }, "NotifyShipping": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:notifyShipping", "End": true }, "HandleUnknownStatus": { "Type": "Fail", "Cause": "Unknown order status", "Error": "InvalidOrderStatus" } }}Running Tasks in Parallel
The Parallel state allows you to execute multiple branches of your workflow concurrently. This is great for tasks that don't depend on each other and can run at the same time.
- Each branch runs independently.
- The Parallel state waits for all branches to complete.
- Outputs from all branches are combined into an array.
Parallel State Example
This Parallel state simultaneously processes an order and updates inventory, then combines their results.
{ "StartAt": "ProcessOrderAndInventory", "States": { "ProcessOrderAndInventory": { "Type": "Parallel", "Branches": [ { "StartAt": "ProcessOrder", "States": { "ProcessOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processOrder", "End": true } } }, { "StartAt": "UpdateInventory", "States": { "UpdateInventory": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:updateInventory", "End": true } } } ], "Next": "CombineResults" }, "CombineResults": { "Type": "Pass", "End": true } }}Handling Errors Gracefully
Things can go wrong! Step Functions provides robust error handling with the Catch field. You can specify what errors to catch and which state to transition to when an error occurs.
- Errors are identified by their type (e.g.,
States.TaskFailed). - You can catch specific errors or a generic
States.ALL. - The
ResultPathspecifies where the error output is placed.
Catch State Example
Here, if the ProcessPayment task fails, it's caught and the workflow moves to the RefundOrder state.
{ "StartAt": "ProcessPayment", "States": { "ProcessPayment": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPayment", "Catch": [ { "ErrorEquals": [ "States.TaskFailed", "PaymentFailure" ], "Next": "RefundOrder", "ResultPath": "$.errorInfo" } ], "Next": "CompleteOrder" }, "RefundOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:refundOrder", "End": true }, "CompleteOrder": { "Type": "Pass", "End": true } }}Retrying Failed Tasks
For transient errors (like network timeouts), it's often better to retry the task a few times before failing. The Retry field lets you define retry policies.
- Specify which errors to retry.
- Configure
IntervalSeconds,MaxAttempts, andBackoffRate. - Exponential backoff (
BackoffRate > 1) is highly recommended.
Retry State Example
This task will retry up to 3 times with exponential backoff if a Timeout or NetworkError occurs.
{ "StartAt": "CallExternalService", "States": { "CallExternalService": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:callExternalService", "Retry": [ { "ErrorEquals": [ "States.Timeout", "NetworkError" ], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 1.5 } ], "End": true } }}Orchestrating It All
The real power of Step Functions comes from combining these states. You can build highly sophisticated workflows by nesting Parallel states within Choices, adding Retries to Tasks, and Catching errors at various levels.
This allows you to model almost any business process, making your serverless applications robust and adaptable.
Workflow Logic Check
Consider a workflow that needs to:
- Check if a user is premium.
- If premium, send a personalized email AND update their loyalty points simultaneously.
- If not premium, send a standard email.
- Handle any email sending failures by logging them without stopping the workflow.
Which Step Functions states would be essential to implement this logic?
Recap: Complex Workflows
You've mastered advanced Step Functions concepts!
- We used Choice states for conditional logic.
- We leveraged Parallel states for concurrent execution.
- We implemented robust error handling with Catch blocks.
- And we learned about Retry policies for transient failures.
These tools allow you to build incredibly powerful and resilient event-driven serverless applications!
よくある質問
「複雑なワークフローのオーケストレーション」レッスンは無料ですか?
はい。「複雑なワークフローのオーケストレーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Serverless Backend with AWS Lambda & API Gatewayコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Serverless Backend with AWS Lambda & API Gatewayコースには全4レッスンが含まれています。
「複雑なワークフローのオーケストレーション」で何を学びますか?
Step Functionsを使い、条件分岐、並列実行、エラー処理を含む高度なサーバーレスワークフローを構築します。 ブラウザで直接実行するハンズオンコードでServerless Backend with AWS Lambda & API Gatewayを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Serverless Backend with AWS Lambda & API Gatewayを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのServerless Backend with AWS Lambda & API Gatewayは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「複雑なワークフローのオーケストレーション」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このServerless Backend with AWS Lambda & API Gatewayレッスンでコードを書いて実行できますか?
はい。すべてのServerless Backend with AWS Lambda & API Gatewayレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- AWS Step Functions入門
- ステートマシンの構築
- 複雑なワークフローのオーケストレーション
- ステートマシンのエラー処理とリトライ