我不能只使用Serverless-framework 1.20.2部署一个函数

Man*_*ube 11 deployment aws-lambda serverless-framework

我想遵循这些提示

并且只是重新部署我的功能,因为serverless.yml没有改变.

然而,它只是悬挂在Serverless: Uploading function舞台上.永远,显然.

整个部署(有sls deploy)工作,虽然缓慢.

怎么可以调试这个,因为显然没有错误信息?

编辑

当我使用sls deploy我的项目需要大约4分钟和15秒来部署.

这对我来说似乎相当长,所以我想我会sls deploy function -f myFunction改用它,这应该会更快.

但是,当我尝试时sls deploy function -f myFunction,它似乎只是永远挂起Serverless: Uploading function: myFunction.

我不知道如何调试.

它似乎使用'详细',Serverless: Uploading function: myFunction --verbose没有什么区别,返回的消息是相同的.

我将尝试等待,看看最终功能部署是否完成......

好吧,我等了,它没有:大约8分30秒后,我收到以下错误信息:

无服务器错误--------------------------------------- 120000ms后连接超时获取支持 - ------------------------------------------文档:docs.serverless.com错误:github.com/serverless/serverless/issues论坛:forum.serverless.com聊天:gitter.im/serverless/serverless您的环境信息--------------------- -------- OS:linux节点版本:7.10.0无服务器版本:1.20.2

另一个奇怪的是:当悬挂时,它显示:

无服务器:上传功能:myFunction(12.05 MB)...

但功能本身只有3.2 kB,并且不包含任何包.

当我使用时sls deploy,显示的大小是相同的:

无服务器:将服务.zip文件上传到S3(12.05 MB)...

我的功能部署有什么问题?

编辑2

正如@dashmug暗示的那样,有一个配置问题serverless.yml.

functions我的无服务器项目的目录中,我希望有一个共同的package.jsonnode_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/**'
Run Code Online (Sandbox Code Playgroud)

现在我得到了sls deploy:

无服务器:将服务.zip文件上传到S3(31.02 MB)...

和功能工作:)

但是,sls deploy function -f myFunction我得到:

无服务器:上传功能:调度(1.65 MB)...

它确实在合理的时间上传,但该函数现在给出以下错误:

无法导入模块'functions/myFunction':错误

das*_*mug 5

我要看的东西:

  1. 尝试比较两者之间的情况:

    $ SLS_DEBUG=true sls deploy --verbose

    $ SLS_DEBUG=true sls deploy function -f myFunction --verbose

  2. 根据项目结构检查无服务器配置(打包等).一个红旗是功能部署与服务部署一样大.这可能是一个配置错误的问题.

  3. 使用serverless package看包(一个或多个)如何拉链.它可以提供一些线索.

  4. 您是否使用了可能改变了包的创建方式的插件?

  5. node_modules你有多少目录?您是只有一个用于整个服务还是每个功能一个?


Jus*_*yul 2

--verbose您可以通过将参数传递给部署函数来使部署过程更加详细。

要么sls deploy --verbose要么sls deploy -v都会成功。