为AWS Lambda创建Python部署包

时间:2017-07-13 21:23:20

标签: python python-3.x amazon-web-services amazon-s3 lambda

我正在尝试将我的Python 3.6.1代码上传到AWS,以便能够在Lambda上运行它。

对这个过程不太熟悉,我有点迷茫。我要上传的python脚本将对GitLab进行外部API调用,以提取将写入文本文件并保存到S3存储桶的存储库信息。

为此,我必须导入请求模块。我在网上看过,如果你要导入除boto3以外的任何其他模块,你必须通过pip将它们重新安装到部署包文件夹的根目录,然后将你的Python代码放在​​该文件夹中,然后压缩该文件夹并上传到Lambda。

我还看到其他帖子暗示,必须在函数的Lambda设置的配置部分更改“Handler”,无论他们在Python代码中调用的是什么'Main()'函数?

但是,我在网上看到的关于此的所有文档都含糊不清,我没有运气。我尝试通过AWS文档并遵循说明,但我无法正确配置它。

我已经尝试了很多次,但我一直收到错误: {   “errorMessage”:“无法导入模块'lambdaUpload'” }

(lambdaUpload是.py文件的文件名)

如果有人熟悉如何为使用第三方模块的Python脚本创建这些“Python部署包”,并且可以解释如何执行此操作或将我发送到一些明确的文档,那么将非常感激。

我知道一旦知道如何做到这一点可能并不太难,但有时候第一次弄清楚如何做这件事是最困难的部分。

提前致谢!

1 个答案:

答案 0 :(得分:0)

上传该功能的代码应该是:

const allInterfaces = nodes => Object.keys(nodes).reduce((res, key) => ({...res, ...nodes[key].interfaces}), {})

最重要的是参数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() } ) 。它是“.py文件的名称(没有扩展名)”。“主要功能被称为”

因此,在这种情况下,在Handler文件中,您必须在根文件夹中有一个名为.zip的文件,其代码如下:

lambdaUpload.py