如果Amazon Lambda功能成功或不成功,请发送请求

时间:2017-04-21 15:07:58

标签: amazon-web-services aws-lambda

在S3的123456中创建对象input_bucket时,会调用我的Amazon Lambda函数(在Python中),在对象中进行转换并将其保存在output_bucket中。

如果请求成功或不成功,我想通知我的主要申请。例如,如果处理成功,则为http://myapp.com/successful/123456;如果不是,则为http://myapp.com/unsuccessful/123456

我想到的一个解决方案是创建第二个由output_bucket中的put事件触发的Amazon Lambda函数,并执行成功的 POST请求。这解决了问题的一半,但我无法触发不成功的 POST请求。

使用Lambda中的参数或处理这些类型通知的服务,AWS可能会有更优雅的解决方案。任何有关正确方向的建议或观点都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

我认为很少有可能解决方案

  • 使用SNS Topic:从转换lambda中,触发SNS主题,带有成功/失败消息,其中SNS将使用消息有效负载调用HTTP / HTTPS端点。这里的优点是,您的转换lambda与端点触发器松散耦合,并且只通过消息传递连接。
  • 使用Lambda Step Functions
      

    每次将新对象上传到S3存储桶时,您都可以安排运行Lambda函数。然后,此函数可以通过调用 StartExecution 启动状态机执行。使用步骤函数的优点是,您可以将可视化工作流程中的一系列步骤协调应用程序的组件。

答案 1 :(得分:1)

我认为没有任何优雅的AWS解决方案,除非您重新设计,例如您的lambda向SQS发送消息或某些带有STATUS的intermedia消息服务,然后interemdeiatery会向您的应用程序调用POST。

如果您仍想继续解决问题,可能需要配置“DeadLetter队列”以在失败的情况下进行错误处理(请注意,此处描述的用例并不全面,因此需要确保它涵盖您的案例)如描述here