EventBridge调度程序同步Lambda调用。

0

【以下的问题经过翻译处理】 大家好,

我正在尝试使用Eventbridge调度程序来同步运行我的Lambda,并收到下面的错误。有人知道这个功能将在不久的将来实现吗?我希望能增强Eventbridge调度程序的重试功能,因为由于通信是异步的,Eventbridge调度程序只有在出现基础架构或过载问题时才会失败。例如,我的想法是,如果我的Lambda函数由于出现500个HTTP问题而失败,Eventbridge调度程序会在一小时内重试50次。我是通过aws-sdk v3生成调度程序的,使用通用目标来设置"IncocationType: RequestResponse"。请参考https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html 谢谢

{
    "name": "ValidationException",
    "$fault": "client",
    "$metadata": {
        "httpStatusCode": 400,
        "requestId": "4e696e3b-bca2-4400-8246-3b334749c8c1",
        "attempts": 1,
        "totalRetryDelay": 0
    },
    "message": "Invalid RequestJson provided. Reason Synchronous Lambda invocations are not yet supported. Please provide InvocationType parameter with value Event to invoke Lambda asynchronously."
}
profile picture
专家
已提问 5 个月前9 查看次数
1 回答
0

【以下的回答经过翻译处理】 和往常一样,AWS不会公开他们的发布时间表,除非在合作伙伴简报等地方提供非常粗略的路线规划计划。我不会对这个抱太大希望 - 同步调用更多地涉及到向调用方返回结果以及能够处理应用程序错误的重试。另一方面,您想要进行重试是因为基础架构/过载错误,所以我认为您应该考虑另一种方法。

Lambda支持异步调用的最大事件时效和最大重试尝试次数。

失败的事件可以发送到死信队列(DLQ),它们包含原始事件有效载荷以及RequestID、ErrorCode(3位HTTP错误代码)和ErrorMessage(截断为1KB)。

对于异步调用,Lambda目标提供了对Lambda函数调用的可见性,并将执行结果路由到AWS服务。异步调用被排队,结果可以分别发送到Lambda、SQS、SNS或EventBridge,分为成功/失败。因此,这为您提供了更多的选项,以扩展重试,如果上述的最大事件时效和重试尝试次数设置不足以覆盖它。

您还可以使用Step Functions,尽管Lambda Destinations可能是一个更好和更便宜的解决方案。使用Step Functions,您可以使用带有心跳超时的回调模式;如果您的Lambda没有发送令牌来表示它已运行,那么心跳超时将允许您再次进行异步调用,进行另一组重试。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则