Search code examples
amazon-web-servicesaws-lambdaboto3amazon-cloudwatch

AWS Lambda schedule a delayed execution to run once


I have an API Gateway with Lambdas behind, for some of the endpoints I want to schedule an execution in the future, to run once, for example the REST call was made at T time, I want that lambda to schedule an execution ONCE at T+20min.

The only solution I found to achieve this is to use boto3 and Cloudwatch to setup a cron at the moment the REST call was made, send an event with the payload, then when the delayed lambda runs, it removes the rule.

I found this very heavy, is there any other way to achieve such pattern ?

Edit: It is NOT A RECURRING Lambda, just to run ONCE.


Solution

  • One option is to use AWS Step Functions to trigger the AWS Lambda function after a given delay.

    Step Functions has a Wait state that can schedule or delay execution, so you can can implement a fairly simple Step Functions state machine that puts a delay in front of calling a Lambda function. No database required!

    For an example of the concept (slightly different, but close enough), see: