【问题标题】:AWS Lambda AP Gateway Handling DIfferent RoutesAWS Lambda AP 网关处理不同的路由
【发布时间】:2021-05-04 08:41:53
【问题描述】:

我有 3 个 webhook 调用我的 API 网关,它调用我的 Lambda 函数。

  1. url/webhook/....

我希望每个 webhook 都调用自己的 python 方法

 startDelivery --> def start_delivery(event, context):
 UpdateStatus--> def update_status(event, context):
 EndDelivery--> def end_delivery(event, context):

我知道很可能一种方法将通过调用适当的 python 方法的“url/webhook”执行。 def Process_task拨打三个之一

建立这种结构的理想方式是什么?

为 Webhook 和 API Gateway 创建不同的 url 并捕获它并以某种方式调用处理程序?

url/webhook/start
url/webhook/status
url/webhook/end

为每个 webhook 发送不同的查询字符串?并在lamba中解析查询字符串并调用正确的python方法?

【问题讨论】:

    标签: amazon-web-services api lambda gateway


    【解决方案1】:

    请记住,一个 Lambda 函数有一个处理程序(=> 1 次调用 = 1 个方法被调用)。

    您可以通过执行以下操作之一来实现 1 route 1 方法:

    1. 您的 3 个 APIGW 路由触发了一个 Lambda 函数。 然后,您可以在函数中添加一个简单的路由器来解析 event['path'] 并调用相应的方法。
    def lambda_handler(event, context):
       path = event['path']
    
       if path == '/webhook/start':
           return start_delivery(event, context)
       elif path == '/webhook/status':
           return update_status(event, context)
       elif path == '/webhook/end':
           return end_status(event, context)
       else:
           return { "statusCode": 404, "body": "NotFound" }
    
    1. 通过路由创建 1 个 Lambda 函数:
    • webhook/start 以 start_delivery 作为处理程序触发 StartDelivery Lambda 函数
    • webhook/status 触发 UpdateDelivery Lambda 函数,其中 update_delivery 作为处理程序
    • webhook/end 触发 EndDelivery Lambda 函数,其中 end_delivery 作为处理程序

    您可以使用基础架构即代码 (Cloudformation) 轻松管理这些功能(SAM:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 1970-01-01
      • 2020-01-31
      • 2019-10-27
      • 2020-05-31
      • 2020-12-17
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多