A development team is building a serverless image processing application. When a user uploads an image to Amazon S3, the application must perform three sequential steps: first, resize the image; second, generate a thumbnail; third, store metadata in Amazon DynamoDB. The team wants to define this workflow as a visual state machine, handle errors with retries, and manage the execution flow without writing custom orchestration code. Which AWS service should the team use?
Correct. AWS Step Functions allows you to define workflows as state machines that can orchestrate multiple AWS services, manage sequencing, error handling, and retries without custom code.
Why this answer
AWS Step Functions is the correct choice because it allows you to define a visual state machine that orchestrates three sequential steps (resize, thumbnail, metadata storage) without writing custom orchestration code. It natively supports error handling with retries and manages execution flow, making it ideal for serverless workflows that require coordination across multiple AWS services like Lambda and DynamoDB.
Exam trap
AWS often tests the distinction between orchestration and messaging services, and the trap here is that candidates confuse Amazon SQS or EventBridge as workflow orchestrators because they handle events, but they lack the sequential state management and retry logic that Step Functions provides.
How to eliminate wrong answers
Option B (Amazon SQS) is wrong because SQS is a message queuing service for decoupling components and does not provide a visual state machine or built-in orchestration for sequential steps with error handling and retries. Option C (Amazon EventBridge) is wrong because EventBridge is an event bus for routing events between services, not a workflow orchestrator that can define sequential steps or manage retries. Option D (AWS Lambda) is wrong because Lambda is a compute service for running code in response to events, but it lacks native orchestration capabilities for multi-step workflows and would require custom code to manage sequencing, error handling, and retries.