我正在尝试将我的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部署包”,并且可以解释如何执行此操作或将我发送到一些明确的文档,那么将非常感激。
我知道一旦知道如何做到这一点可能并不太难,但有时候第一次弄清楚如何做这件事是最困难的部分。
提前致谢!
答案 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