是否可以构造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)
答案 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"}'