可以从直接调用和SNS消息中获取参数的Lambda

时间:2018-11-26 21:16:28

标签: amazon-web-services aws-lambda

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

目的是让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消息并调用另一个Lambda)

1 个答案:

答案 0 :(得分:0)

您检查'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"}'