无服务器框架与自定义打包

问题描述:

我使用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。

+0

我想这很好,如果它是一个nodejs函数,但是怎么样一个python函数?我发现的解决方案更像是一种黑客而不是官方解决方案。 http://china.alibaba.com/d/aws-python-function-dependencies-load/451/5 – lingxiao

+0

@LingxiaoXia,在你的链接中,el0ck说你不需要手动压缩包。推荐的方法是安装64位库(因为它可以在64位计算机上运行)并修改Python函数的os.path。 – Zanon

+0

是的,我认为这是一个黑客,因为它需要更改代码。配置更改是可以的,但代码更改似乎并不可持续。 – lingxiao