Amazon web services AWS SQS从Lambda发送,我是否应该使用;添加目的地“;?

Amazon web services AWS SQS从Lambda发送,我是否应该使用;添加目的地“;?,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我有一个Lambda,它由到达SQS队列的消息触发。我想在Lambda中进行一些处理,然后将消息转发到另一个SQS队列,以供另一个Lambda进一步处理。看来我可以用两种不同的方式来做: 在AWS控制台Lambda Designer中,用户通过“添加目的地”功能将SQS队列定义为目的地 编写node.js代码,从我的Lambda中向SQS发送消息 首选/正确/推荐的方法是什么?如果你的流程包含这么多的小任务,每个任务需要不同类型的有效载荷,你可以考虑写一个小代码来调用它们。作为您的最终响应,我们

我有一个Lambda,它由到达SQS队列的消息触发。我想在Lambda中进行一些处理,然后将消息转发到另一个SQS队列,以供另一个Lambda进一步处理。看来我可以用两种不同的方式来做:

  • 在AWS控制台Lambda Designer中,用户通过“添加目的地”功能将SQS队列定义为目的地
  • 编写node.js代码,从我的Lambda中向SQS发送消息

  • 首选/正确/推荐的方法是什么?如果你的流程包含这么多的小任务,每个任务需要不同类型的有效载荷,你可以考虑写一个小代码来调用它们。作为您的最终响应,我们可以考虑基于所有小任务返回所有结果,这样您就可以监视整个进程并将其记录到CycDeWABLE日志。

    如果流依赖于最终响应,则对于每个执行状态代码,例如:

    • {Status:OnSuccess}
      :触发SNS主题
    • {状态:OnFailure}
      :发送到SQS队列

    此功能可帮助您减少代码,并使Lambda更干净、更清晰。

    最好编写代码来发送消息。由于AWS已经提供发送消息功能,您只需传递参数即可

    AWS还建议以编程方式删除消息


    目标函数是一个新功能

    一个好处是,目标操作由AWS Lambda服务触发,而不是由函数本身触发。这在Lambda函数无法访问目标的情况下非常有用

    例如,想象一个无法访问互联网的专有网络。配置为使用该VPC的AWS Lambda函数将无法调用Amazon SQS API,因为它位于Internet上。但是,使用Amazon SQS的目的地将起作用,因为AWS Lambda服务将发送消息,而这将在VPC之外完成。(您也可以为SQS使用VPC端点,但这只是一个示例。)


    另外,请注意,目的地仅适用于异步调用的Lambda函数

    如果AWS Lambda函数由Amazon SQS触发,Lambda函数不应删除传入消息。这是由AWS Lambda服务处理的。是的,我同意Lambda将在收到200个响应@john后自动删除它。但为了安全起见,为了保持幂等性,最好是删除消息,只需检查一件事。。。文档中说“Lambda轮询队列并与包含队列消息的事件同步调用您的函数。”鉴于只有异步调用Lambda函数时目标才会工作,使用目标可能无法工作。给它一个测试,让我们知道你发现了什么!