首页 > 解决方案 > Python 中基于类的 AWS lambda

问题描述

我在 python 中创建了一个基于类的 AWS lambda 函数,名为requestHandler.py,如下所示

from action_dispatcher import ActionDispatcher

class RequestHandler(ActionDispatcher):


    @staticmethod
    def createTemplate(event, context):
        return "Hello world"

我的action_dispatcher.py如下所示。

import json

class ActionDispatcher(object):

    def __call__(self, event, context, *args, **kwargs):

        action = event.get('action')
        handler = getattr(self, action, None)

        if handler is None:
            return json.loads({'status': 'error', 'code': 404, 'message':"Action {0} not found.".format(action) })

        return handler(request, *args, **kwargs)

使用上述设置和作为requestHandler.RequestHandler的 lambda 处理程序,我收到错误“RequestHandler() 不接受任何参数”,在这种情况下,我将操作创建为 createTemplate。所以我想从 RequestHandler 调用这个方法。

标签: pythonamazon-web-servicesaws-lambda

解决方案


在我看来,您正在尝试调用您的类而不是类的实例。RequestHandler()将调用该__init__方法来初始化该类的实例。由于您尚未定义该方法,因此它不需要任何参数。要访问__call__你需要调用你的类的一个实例

handler = RequestHandler()
result = handler(request, context, *args, **kwargs)

推荐阅读