Deployment 我不能仅仅用无服务器框架1.20.2部署一个函数
我想跟着 只需重新部署我的函数,因为没有更改Deployment 我不能仅仅用无服务器框架1.20.2部署一个函数,deployment,aws-lambda,serverless-framework,Deployment,Aws Lambda,Serverless Framework,我想跟着 只需重新部署我的函数,因为没有更改serverless.yml 但是,它只是挂在Serverless:Uploading功能阶段。显然是永远 整个部署(使用sls deploy)工作正常,但速度较慢 既然显然没有错误消息,如何调试它 编辑 当我使用slsdeploy时,我的项目部署大约需要4分钟15秒 它对我来说似乎很长,所以我想我应该使用sls deploy function-f myFunction,这应该更快 然而,当我尝试sls部署函数-f myFunction时,它似乎永远挂
serverless.yml
但是,它只是挂在Serverless:Uploading功能阶段。显然是永远
整个部署(使用sls deploy
)工作正常,但速度较慢
既然显然没有错误消息,如何调试它
编辑
当我使用slsdeploy
时,我的项目部署大约需要4分钟15秒
它对我来说似乎很长,所以我想我应该使用sls deploy function-f myFunction
,这应该更快
然而,当我尝试sls部署函数-f myFunction
时,它似乎永远挂在Serverless:upload function:myFunction
上
我不知道如何调试它
使用“verbose”与Serverless:upload function:myFunction--verbose
似乎没有什么区别,返回的消息是相同的
我将尝试等待,看看最终部署函数是否完成
好吧,我等待了,但没有:大约8分钟30秒后,我收到以下错误消息:
无服务器错误---------------------------------------
连接在120000毫秒后超时
获得支持--------------------------------------------
文档:Docs.serverless.com
bug:github.com/serverless/serverless/issues
论坛:forum.serverless.com
聊天:gitter.im/serverless/serverless
您的环境信息-----------------------------
操作系统:linux
节点版本:7.10.0
无服务器版本:1.20.2
另一个奇怪之处是:悬挂时,上面写着:
无服务器:上传功能:myFunction(12.05 MB)
但是函数本身只有3.2kb,并且不包含任何包
当我使用sls deploy
时,显示的大小相同:
无服务器:正在将service.zip文件上载到S3(12.05 MB)
我的函数部署可能有什么问题
编辑2
正如@dashmug所暗示的,serverless.yml
中存在配置问题
在我的无服务器项目的functions
dir中,我想要一个通用的package.json
和node\u modules
。然后,每个函数都可以根据需要导入模块
我试着跟着
我的serverless.yml
是这样的:
functions:
myFunction:
package:
exclude:
- 'functions/node_modules/**'
- '!functions/node_modules/module1_I_want_to_include/**'
- '!functions/node_modules/module2_I_want_to_include/**'
现在,通过sls部署
:
无服务器:正在将service.zip文件上载到S3(31.02 MB)
并且该函数可以工作:)
但是,使用sls部署函数-f myFunction
,我得到:
无服务器:上载功能:调度(1.65 MB)
它确实在合理的时间内上载,但该函数现在给出以下错误:
无法导入模块“函数/myFunction”:错误
通过将--verbose
参数传递给deploy函数,可以使部署过程更加详细
无论是sls deploy--verbose
还是sls deploy-v
都可以做到这一点。我将介绍以下内容:
尝试比较两者之间发生的情况:
$SLS\u DEBUG=真正的SLS部署--详细
及
$SLS\u DEBUG=true SLS部署函数-f myFunction--verbose
对照项目结构检查无服务器配置(打包等)。一个危险信号是函数部署与服务部署一样大。这可能是一个配置错误的问题
使用无服务器软件包
查看软件包的压缩方式。它可以提供一些线索
您使用的插件是否改变了软件包的创建方式
您有多少个node\u模块
目录?整个服务只有一个,还是每个功能只有一个
我无法理解为什么功能部署(相对于服务部署)会挂起。我可能错误配置了我的serverless.yml
文件
但没什么大不了的:我可以不用sls部署函数-myFunction
因为我的期望是错误的。我认为部署一个功能要比部署一个服务快得多,因为不知何故没有重新部署node\u modules
目录
但AWS中没有部分功能部署:部署功能时,也必须部署所有必要的节点模块,以使功能正常工作
如中所述:
该框架将目标AWS Lambda函数打包成一个zip文件
框架获取已经上传的函数.zip文件的散列,并将其与本地.zip文件散列进行比较
如果两个哈希相同,则框架终止
该zip文件使用与CloudFormation堆栈指向的上一个函数相同的名称上载到S3存储桶
我(天真地)希望只有更新的处理程序才能上传到S3。
但由于该函数是在部署之前打包的,因此它确实需要它的所有模块和依赖项
因此,在我看来,只有当服务具有多个功能,并且服务功能不使用许多常见的nodejs模块时,功能部署才会节省时间(与服务部署相反)。如果sls部署函数-f myFunction
未挂起,即:)
因此,为了提高开发速度,诀窍是使用离线仿真工具,如
提供本地服务器,通过调用http://localhost:3000/myFunction
在或浏览器中
在大多数情况下,sls deploy
只能在处理程序彻底离线测试后调用一次。谢谢@JustDanyul。什么