AWS Lambda包部署

lur*_*her 2 python amazon-web-services aws-lambda

我正在尝试将python .zip包部署为AWS Lambda

我选择了hello-python足迹.

我使用内联代码创建了第一个lambda,之后我尝试从开发.zip更改为上传.

我使用的包是.zip包含一个单独的文件hello_python.py,使用与默认内联代码示例相同的代码调用,如下所示:

from __future__ import print_function

import json

print('Loading function')


def lambda_handler(event, context):
    #print("Received event: " + json.dumps(event, indent=2))
    print("value1 = " + event['key1'])
    print("value2 = " + event['key2'])
    print("value3 = " + event['key3'])
    return event['key1']  # Echo back the first key value
    #raise Exception('Something went wrong')
Run Code Online (Sandbox Code Playgroud)

点击"保存并测试"后,没有任何反应,但我得到了这个奇怪的红丝带,但没有其他实质性的错误信息.如果修改为源,重新打包并再次上载,则日志和运行结果不会显示任何更改.在此输入图像描述

Ser*_*nst 8

Lambda函数需要格式化处理程序<FILE-NAME-NO-EXTENSION>.<FUNCTION-NAME>.在您的情况下,处理程序设置为lambda_function.lambda_handler,这是AWS Lambda分配的默认值.但是,您已将文件命名为hello_python.py.因此,AWS Lambda正在寻找一个名为python的文件lambda_function.py并找不到任何内容.

解决这个问题:

  1. hello_python.py文件重命名为lambda_function.py
  2. 将lambda函数处理程序修改为 hello_python.lambda_handler

你可以在文档中看到一个如何工作的例子,它们创建一个my_handler()在文件中调用的python函数hello_python.py,然后创建一个lambda函数来用处理程序调用它hello_python.my_handler.