Python 2.7 aws CloudLambda python错误处理程序

Python 2.7 aws CloudLambda python错误处理程序,python-2.7,amazon-web-services,aws-lambda,amazon-cloudformation,Python 2.7,Amazon Web Services,Aws Lambda,Amazon Cloudformation,我需要从cloudformation创建aws Lambda(python)。lambda函数已经创建,但是当我试图执行lambda时,我不断得到以下错误。我尝试了很多方法,但都没能成功 { "errorMessage": "Bad handler 'lambda_handler'" } 这就是我如何从cloudformation创建lambda的 创建一个简单的python hello程序,其中包含print语句(尽可能简单) 代码: 压缩python并将其放在S3中。(我尝试了文件夹和

我需要从cloudformation创建aws Lambda(python)。lambda函数已经创建,但是当我试图执行lambda时,我不断得到以下错误。我尝试了很多方法,但都没能成功

{
  "errorMessage": "Bad handler 'lambda_handler'"
}
这就是我如何从cloudformation创建lambda的

  • 创建一个简单的python hello程序,其中包含print语句(尽可能简单)
  • 代码:

  • 压缩python并将其放在S3中。(我尝试了文件夹和无文件夹)

  • 使用以下资源创建cloudformation模板

  • JSON:

  • 转到Cloudformation并使用模板创建堆栈。堆栈已成功创建

  • 当我使用“Hello World”事件模板测试lambda时。我得到了错误

  • “errorMessage”:“错误处理程序‘lambda_处理程序’”

    如果我看一下CloudWatch日志,我会发现

    错误的处理程序“lambda_处理程序”:需要超过1个值才能解包

    我不是在传递论点。这是Python中的“Hello World”lambda函数。如果我在lambda服务中手动创建这个lambda函数,我可以执行它而不会出现任何错误。我只有在使用Cloudformation创建lambda时才会出现此错误


    请给我指一下正确的方向。提前谢谢。

    我想问题在于您对“Handler”的声明

    它应该包含模块名和函数名,即它应该是module_name.lambda_handler,其中module_name是包含处理程序函数的文件名


    在使用boto3 for python创建lambda函数时,我遇到了相同的错误-这为我解决了问题。

    是的,感谢您的帮助。这就解决了问题。我认为AWS应该在他们的文档中包含这一点,以便其他人可以清楚地看到它。这就是我所做的

        "Handler": "simple_python_filename.lambda_handler",
        "Code": {
          "S3Bucket": "mybuckname",
          "S3Key": "simple_python.zip"
    
    其中我的zip文件是“simple_python.zip”。我在zip文件中的文件名是“simple\u python\u filename.py”。我在py文件中的函数是“lambda_hander”。另外,请确保将.py文件放在zip文件的根目录中。

    如果您来这里是因为看到我发布的图像中的错误,那么修复方法是在AWS lambda代码屏幕的处理程序字段中,在处理程序名称前面加上
    lambda_函数

    例如,如果代码中的处理程序名称为
    lambda\u handler
    ,则必须在代码屏幕上的处理程序字段中使用
    lambda\u function.lambda\u handler

    这只是意味着分配给python lambda函数的默认模块名与您猜测的
    lambda_函数
    相同


    这就是我的问题所在,它也适用于terraform,aws_lambda_函数对象的处理程序字段。格式是lambda_function_name.name_of_函数在文件上这也是我的问题。我的lambda handler位于另一个文件中,虽然名为
    app
    ,但对我来说它是
    app.lambda\u handler
    "Resources": {
      "LF1ZOLJ": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
          "Handler": "lambda_handler",
          "Code": {
            "S3Bucket": "mybuckname",
            "S3Key": "simplepython.zip"
          },
          "Description": "cfn-create-lambda",
          "Role": "arn:aws:iam::305760000000:role/lambda_basic_execution",
          "Runtime": "python2.7",
          "Timeout": 60
        },
        "Metadata": {
          "AWS::CloudFormation::Designer": {
            "id": "xxxxxxxxxxxxxxxxxxxxxxxx"
          }
        }
      }
    }
    
        "Handler": "simple_python_filename.lambda_handler",
        "Code": {
          "S3Bucket": "mybuckname",
          "S3Key": "simple_python.zip"