amazon-web-services - AWS Lambda : Execute function B 10 minutes after function A

标签 amazon-web-services aws-lambda serverless

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

是否可以执行 Lambda 函数 B Lambda 函数后 XX 分钟 A ?

我正在寻找一个干净的无服务器解决方案。使用 setTimeout或者类似的方法太难接受了。

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

最佳答案

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

  • Lambda-A 将一条消息添加到 SQS 队列并将传递延迟设置为 10 分钟。您可以设置 0 到 15 分钟之间的任何延迟。您还可以使用 SQS 延迟队列来延迟添加到队列中的所有消息。
    https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html
  • 10 分钟后 SQS 消息变得可见并且 SQS 触发 Lambda-B。
  • 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"
        }
    ]
    

    关于amazon-web-services - AWS Lambda : Execute function B 10 minutes after function A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51207054/

    相关文章:

    amazon-web-services - AWS ELB 抛出 5XX 但注册的实例没有抛出 5XX 错误

    amazon-web-services - 在 64 位 Amazon Linux 2/3.2.2 和 Dockerrun.aws.json v3 上运行带有 Docker 的 Elastic Beanstalk

    amazon-web-services - lambda 中的 AWS SQS 操作在冷启动时花费的时间太长

    mysql - 无法使用 Sequelize 将 id 插入属于外键引用表的表中

    postgresql - AWS EBS 卷和 PostgreSQL

    r - 在 AWS 上使用 Rserve 在 Node.js 和 R 之间进行跨平台通信时出错。错误:connect ETIMEDOUT

    node.js - 按计划在 AWS EC2 中运行 Node.js 函数

    amazon-web-services - AWS 云形成 : attribute PathPart must be a readonly property

    aws-cloudformation - 从 CFN 模板在本地动态创建 Step Function 状态机

    node.js - AWS无服务器+云组建: Error on single function deploy - Windows 10 Env