iRobot deploys firmware updates with a state machine to progressively roll out updates incrementally. Their state machine queries for the robots that need the update, tells the robots the update is ready for them, and then watches what happens
b/c it's possible the CW event/Lambda fails, there's also a scheduled func that makes sure there's always one machine running
You might have used SQS -> Lambda for this before. The Lambda would do a checklist of things, but if one of those things failed, the entire function failed, and the entire list had to be redone (because the message would be redriven).
tl;dr: Write less code. Use services like SF
Step Functions is the new business process engine.
EventBridge is the new event messaging bus.
They're really-well integrated into the AWS ecosystem and fit well with modern architecture patterns.