我试图将我的Python3.6.1代码上传到AWS,以便能够在Lambda上运行它。
由于不太熟悉这个过程,我有点迷路了。我想上传的python脚本将对GitLab进行外部API调用,以提取将被写入文本文件并保存到S3桶中的存储库信息。
要做到这一点,我必须导入请求模块。我在网上读到,如果您正在导入除boto3之外的任何其他模块,您必须通过pip重新安装它们到部署包文件夹的根目录,然后将您的Python代码放在该文件夹中,然后压缩该文件夹并将其上传到Lambda。
我还看过其他文章,建议我们必须更改Lambda配置部分中的“Handler”,以便在Python代码中调用它们的“Main()”函数。
然而,我在网上读到的所有有关这方面的文档都是模糊的,我没有任何运气。我试着查看了AWS文档,并按照说明进行了操作,但未能正确配置它。
我已经尝试过很多次了,但是我一直收到错误:{ "errorMessage":“无法导入模块'lambdaUpload'”}
(lambdaUpload是.py文件的文件名)
如果有人熟悉如何为正在使用第三方模块的Python脚本创建这些"Python部署包“,并且可以解释如何这样做,或者将我路由到有关这方面的一些明确文档,那么我们将非常感激。
我知道一旦一个人知道如何做这件事可能并不太难,但有时想出第一次怎么做才是最困难的。
提前感谢!
发布于 2017-07-15 21:46:16
上载该函数的代码应该如下所示:
boto3.client("lambda").create_function(
FunctionName="functionName",
Runtime="python3.6",
Role="arn:......",
Handler='lambdaUpload.lambda_handler',
Code={
'ZipFile': open(self.project_zip_file, "rb").read()
}
)最重要的是参数Handler。它是“您的.py文件的名称(没有扩展名)”。
因此,在本例中,在.zip文件中,根文件夹中必须有一个名为lambdaUpload.py的文件,代码如下:
import json
def lambda_handler(event, context):
print("AWS Event ID: " + context.aws_request_id)
print("Event Body: " + json.dumps(event))
return "Hi"https://stackoverflow.com/questions/45091126
复制相似问题