Aws lambda 使用一个Lambda函数处理多个意图

Aws lambda 使用一个Lambda函数处理多个意图,aws-lambda,amazon-lex,Aws Lambda,Amazon Lex,在我的Lex bot中有4个意图,这些意图的逻辑非常相似,业务规则略有变化 实现一个lambda函数并基于不同的目的调用不同的函数是一种好的做法吗 这种方法会带来任何潜在的瓶颈或性能影响吗?为不同的目的使用单个Lambda函数没有问题。您可以在所有意图中调用单个lambda函数,检查该lambda中的意图,并在同一lambda中调用相关函数/方法 正如您所说的,意图非常相似,因此您可能还可以使用公共函数为这些意图执行类似的操作 def common_function(): # some

在我的Lex bot中有4个意图,这些意图的逻辑非常相似,业务规则略有变化

实现一个lambda函数并基于不同的目的调用不同的函数是一种好的做法吗


这种方法会带来任何潜在的瓶颈或性能影响吗?

为不同的目的使用单个Lambda函数没有问题。您可以在所有意图中调用单个lambda函数,检查该lambda中的意图,并在同一lambda中调用相关函数/方法

正如您所说的,意图非常相似,因此您可能还可以使用公共函数为这些意图执行类似的操作

def common_function():
    # some processing
    return cm

def intent2(intent_request):
    cm = common_function()
    # rest processing
    return output

def intent1(intent_request):
    cm = common_function()
    # rest processing
    return output

def dispatch(intent_request):
    logger.debug('dispatch userId={}, intentName={}'.format(intent_request['userId'], intent_request['currentIntent']['name']))
    intent_name = intent_request['currentIntent']['name']
    if intent_name == 'intent1':
        return intent1(intent_request)
    if intent_name == 'intent2':
        return intent2(intent_request)
    if intent_name == 'intent3':
        return intent3(intent_request)
    if intent_name == 'intent4':
        return intent4(intent_request)
    raise Exception('Intent with name ' + intent_name + ' not supported')


def lambda_handler(event, context):
    logger.debug(event)
    logger.debug('event.bot.name={}'.format(event['bot']['name']))
    return dispatch(event)