AWS Lambda:在函数 A 后 10 分钟执行函数 B

Vin*_*oft 4 amazon-web-services aws-lambda serverless

我正在为时间敏感的应用程序开发无服务器后端。

是否可以在 Lambda 函数BXX 分钟后执行Lambda 函数A

我正在寻找一个干净的无服务器解决方案。使用setTimeout或类似的方法是一种无法接受的黑客行为。

示例:在执行 Lambda 函数 10 分钟后使用 SNS 发送通知。

Ser*_*lev 6

最简单的方法是使用具有延迟交付的 SQS。

  1. Lambda-A 将一条消息添加到 SQS 队列并将传递延迟设置为 10 分钟。您可以设置 0 到 15 分钟之间的任何延迟。您还可以使用 SQS 延迟队列来延迟添加到队列中的所有消息。 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html

  2. 10 分钟后 SQS 消息变得可见并且 SQS 触发 Lambda-B。

  3. Lambda-B 接收 Amazon SQS 事件并使用接收句柄从队列中删除消息。这是来自https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-sqs的示例:

.

 "Records": [
    {
        "messageId": "c80e8021-a70a-42c7-a470-796e1186f753",
        "receiptHandle": "AQEBJQ+/u6NsnT5t8Q/VbVxgdUl4TMKZ5FqhksRdIQvLBhwNvADoBxYSOVeCBXdnS9P+erlTtwEALHsnBXynkfPLH3BOUqmgzP25U8kl8eHzq6RAlzrSOfTO8ox9dcp6GLmW33YjO3zkq5VRYyQlJgLCiAZUpY2D4UQcE5D1Vm8RoKfbE+xtVaOctYeINjaQJ1u3mWx9T7tork3uAlOe1uyFjCWU5aPX/1OHhWCGi2EPPZj6vchNqDOJC/Y2k1gkivqCjz1CZl6FlZ7UVPOx3AMoszPuOYZ+Nuqpx2uCE2MHTtMHD8PVjlsWirt56oUr6JPp9aRGo6bitPIOmi4dX0FmuMKD6u/JnuZCp+AXtJVTmSHS8IXt/twsKU7A+fiMK01NtD5msNgVPoe9JbFtlGwvTQ==",
        "body": "{\"foo\":\"bar\"}",
        "attributes": {
            "ApproximateReceiveCount": "3",
            "SentTimestamp": "1529104986221",
            "SenderId": "594035263019",
            "ApproximateFirstReceiveTimestamp": "1529104986230"
        },
        "messageAttributes": {},
        "md5OfBody": "9bb58f26192e4ba00f01e2e7b136bbd8",
        "eventSource": "aws:sqs",
        "eventSourceARN": "arn:aws:sqs:us-west-2:594035263019:NOTFIFOQUEUE",
        "awsRegion": "us-west-2"
    }
]
Run Code Online (Sandbox Code Playgroud)