当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda-如何处理异步(AWS S3)触发器上的错误?

尉迟兴修
2023-03-14

我有一个AWS Lambda函数,每当新文档上传到S3时,它都会将html文档转换为pdf文档。工作得很好。

生成pdf后,我的应用程序代码(传统的服务器支持web服务)需要向用户发送一封电子邮件,其中包含指向pdf文件的链接。我可以想出几种方法来处理这个问题:

  1. 假设pdf转换工作并天真地触发电子邮件
  2. 当转换发生时,从lambda函数向我的应用程序代码发送一个网络钩子
  3. 在后台作业中,在发送电子邮件之前检查pdf是否存在

实际上,所有这些都会起作用,但我很好奇,是否有一个建议的“最佳实践”来处理像这样异步触发而不是直接触发的AWS lambda。

共有1个答案

闾丘霖
2023-03-14

看看Lambda死信队列。

死信队列

默认情况下,异步调用的失败Lambda函数会重试两次,然后丢弃该事件。使用死信队列(DLQ),您可以向Lambda指示应将未处理的事件发送到Amazon SQS队列或Amazon SNS主题,您可以在其中采取进一步行动。

通过在想要传递事件负载的Amazon SNS主题或Amazon SQS队列的Lambda函数的DeadLetterConfig参数上指定目标Amazon资源名称(ARN),可以配置DLQ,如下代码所示。有关创建亚马逊SNS主题的更多信息,请参阅创建SNS主题。有关创建Amazon SQS队列的更多信息,请参阅教程:创建Amazon SQS队列。

 类似资料:
  • 问题内容: 我在中有一个(),如果按下该按钮,我将在for循环中对其列表中的列表执行任务。这样做时,我需要更新。 问题是,当我按下JButton时,该任务是在事件调度线程(EDT)中执行的。因此,我无法更新在主线程或UI线程中触发的事件。 现在,源代码对我不可用,因为我完全更改了源代码,并尝试使用Eclipse SWT 触发Swing时,它变得混乱。 现在我得到了错误,因为Display对象在单独

  • 编写JavaScript代码时,我们要时刻牢记,JavaScript引擎是一个事件驱动的执行引擎,代码总是以单线程执行,而回调函数的执行需要等到下一个满足条件的事件出现后,才会被执行。 例如,setTimeout()函数可以传入回调函数,并在指定若干毫秒后执行: function printTime() { console.log('It is time!'); } setTimeout

  • 我有一张如下的桌子 数据将从AWS Lambda函数一致地插入到此表中。(可能是数百万个项目) 我有一个用例,当表中有100个可用项时,我需要有一个触发器来执行一些批处理。换句话说,一旦我们在这个表中创建了100个新项目,我希望有一个Lambda触发器函数来对100个项目执行批处理。 当我研究时,DynamoDB流似乎可以支持批处理,但根据文档我不太清楚。 Lambda分批读取记录,并调用函数处理

  • 问题内容: 假设我有某种游戏。我有一个buyItem函数,如下所示: 如果我对该路由进行垃圾邮件处理,直到扣除用户余额(第二次查询),则用户余额仍为正。 我尝试过的 问题是将在第一〜5项要求。因此,这也不起作用。 我们如何处理这种情况?如果重要的话,我正在使用Sails.JS框架。 问题答案: 通过该方法,Sails 1.0现在具有完整的事务支持。例: 更新资料 正如一些评论者所指出的,启用连接池

  • 问题内容: 我有一张上面有插入触发器的表。如果我从存储过程中的一条插入语句中向该表中插入6000条记录,那么在插入触发器完成之前,存储过程会返回吗? 只是为了确保我在正确地思考,触发器应该只被调用一次(我知道“被调用”不是正确的词)一次,因为只有1个insert语句,对吗? 我的主要问题是:即使触发器尚未完成,存储过程也会完成吗? 问题答案: 您的插入触发器将针对整个插入语句运行一次。这就是为什么

  • 在Spring integration中,我必须处理动态通道创建,但当我调试应用程序时,我看到不同通道之间的“阻塞”问题。 我知道是一个公共通道,在父上下文中共享,但如何为每个子上下文开发一个完整的独立场景?。公共网关是问题所在吗? 我在Spring integration flow async中看到了post错误处理,但对于每个子级,我都有一个完整的分离环境,我希望利用这些动态分离的优势。这可能