具有自定义包装的无服务器框架
Serverless Framework with custom packaging
我正在使用 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 中指定要 include 或 exclude 的内容。
在 docs link 中,您可以看到一个使用 Artifact 的选项。在这种情况下,您可以开发自己的代码以完全使用您想要的规则进行压缩,并输出一个 zip 文件以供无服务器框架使用。这是可能的,但我希望你不需要这个。
为什么要将文件夹 "function1" 的内容移动到根级别?也许你真正的问题是:"How can I reference my Lambda function that is located at another folder?"。如果是这种情况,您可以在 serverless.yml 文件中使用以下内容:
service: test
functions:
func1:
handler: function1/handler.func1
func2:
handler: function1/handler.func2
语法为folder/filename.function.
另一种解决方案是为每个文件夹创建一个 serverless.yml 文件。这种方法的问题是您将无法从 function1 访问 function2。
我正在使用 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 中指定要 include 或 exclude 的内容。
在 docs link 中,您可以看到一个使用 Artifact 的选项。在这种情况下,您可以开发自己的代码以完全使用您想要的规则进行压缩,并输出一个 zip 文件以供无服务器框架使用。这是可能的,但我希望你不需要这个。
为什么要将文件夹 "function1" 的内容移动到根级别?也许你真正的问题是:"How can I reference my Lambda function that is located at another folder?"。如果是这种情况,您可以在 serverless.yml 文件中使用以下内容:
service: test
functions:
func1:
handler: function1/handler.func1
func2:
handler: function1/handler.func2
语法为folder/filename.function.
另一种解决方案是为每个文件夹创建一个 serverless.yml 文件。这种方法的问题是您将无法从 function1 访问 function2。