【问题标题】:Lambda that can get arguments from both direct invocation and SNS message可以从直接调用和 SNS 消息中获取参数的 Lambda
【发布时间】:2018-11-27 05:22:20
【问题描述】:

是否可以构造一个 Lambda 处理程序,使其能够通过直接调用从 SNS、 获取其参数?
换句话说,同一个 Lambda 既可以显式调用,也可以通过订阅 SNS 主题来调用。

目的是让 Lambda 通常在 90% 的时间通过 SNS 触发,但也允许通过控制台或 Web API 手动调用。

看起来这可以通过类似的方式实现

def lambda_handler(event, context):
   args = parse_sns_event(event) if 'Records' in event else event

假设“记录”是the top-level key in the Lambda SNS event,并且“记录”不是预期参数之一的名称。

有没有更好的方法来做到这一点? (缺少两个 Lambda - 一个主要工作人员加上另一个接收 SNS 消息并调用另一个)

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    您检查'Records' 的想法不错。当您手动调用时,您可以传递您喜欢的任何有效负载,只要它不包含'Records',那么您就有了决定点。

    例子:

    def handler(event, context):
        if 'Records' in event:
            # Handle SNS trigger
        else:
            # Handle manual trigger
    

    您可以传递您通过 AWS CLI 定义的负载:

    aws lambda invoke --function-name your-lambda-function --payload '{"Manual":"yes"}'
    

    【讨论】:

      猜你喜欢
      • 2016-06-10
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2020-03-27
      • 2020-07-08
      • 1970-01-01
      相关资源
      最近更新 更多