无服务器框架与自定义打包
问题描述:
我使用Serverless Framework,我似乎无法打包我的功能,我想要的方式。无服务器框架与自定义打包
我当前文件夹目录如下:
service/
serverless.yml
function1/
package.json
handler.js
node_modules/
...
function2/
handler.py
requirements.txt
venv/
...
是否有可能挑樱桃我想在zip文件包含并指定zip文件里面对应的目标路径文件夹?
例如,我想压缩function1
文件夹中的所有内容,但它们都应位于zip文件的根目录级别。现在所有生成的文件都位于zip文件中名为function1
的文件夹中。
答
包装不能这样工作(docs)。您不能指定将保存在zip内的文件树。您只能指定您将在此zip中包含包括或排除。
在docs链接中,您可以看到一个选项,使用工件。在这种情况下,您可以使用您所需的规则开发自己的代码以进行压缩,并输出供无服务器框架使用的压缩文件。这是可能的,但我希望你不需要这个。
为什么要将文件夹“function1”的内容移动到根级?也许你真正的问题是:“我如何引用位于其他文件夹的Lambda函数?”。如果是这样的话,你可以使用在serverless.yml文件中的以下内容:
service: test
functions:
func1:
handler: function1/handler.func1
func2:
handler: function1/handler.func2
语法文件夹/ filename.function。
另一种解决方案是为每个文件夹创建一个serverless.yml文件。这种方法的问题在于你无法从函数1访问函数2。
我想这很好,如果它是一个nodejs函数,但是怎么样一个python函数?我发现的解决方案更像是一种黑客而不是官方解决方案。 http://china.alibaba.com/d/aws-python-function-dependencies-load/451/5 – lingxiao
@LingxiaoXia,在你的链接中,el0ck说你不需要手动压缩包。推荐的方法是安装64位库(因为它可以在64位计算机上运行)并修改Python函数的os.path。 – Zanon
是的,我认为这是一个黑客,因为它需要更改代码。配置更改是可以的,但代码更改似乎并不可持续。 – lingxiao