无服务器部署 - 未找到功能 - sls 部署

red*_* 87 11 amazon-web-services aws-lambda serverless-framework

我正在尝试通过无服务器 CLI 部署无服务器功能,但出现以下错误:

发生错误:GenerateDownloadLinkLambdaFunction - 未找到函数:

奇怪的是,我已经为另一个阶段部署了这个函数qa,它部署得很好,但dev它只是抛出了上述错误。

如果我尝试从 AWS 控制台手动创建函数并部署它,Lambda 函数菜单会显示该函数是在 X 秒前部署的,但是它不会显示我serverless.yml在我的机器上的文件中的任何设置。

还值得注意的是,我已经设法在dev舞台上部署了此功能,但我不小心将其删除了。从那时起,它拒绝重新部署。

我一直在用头撞墙,想知道我做错了什么,但找不到任何东西,以前有没有其他人遇到过类似的 Serverless 问题?

hep*_*ump 18

我在无服务器方面遇到过这个问题。该问题是由无服务器处理、跟踪和部署您的函数的方式引起的。当您删除该函数时,您实际上手动更改了应用程序的状态,并且实际上是不同步的。

要解决此问题,请注释掉拒绝部署的函数,然后运行sls deploy. 完成后取消对该功能的注释,然后sls deploy再次。这次它应该部署您的功能。

  • Tamojit Chakraborty 的解决方案使用“sls remove”(如下)比仅删除“sls deploy”并将其放回去要干净得多 (5认同)
  • 这确实取决于。完整的“sls remove”将删除堆栈中的所有资源,包括日志组、API 网关等。这在许多情况下可能会出现问题。例如,如果您有合规义务并需要保留日志,或者您将 API 网关映射到自定义域或 CloudFront,或者您具有跨堆栈资源依赖项。更不用说您可能会通过完全删除、重新部署来不必要地停止其他功能。两种方法都有效,但对于生产中的服务,我建议采用更有针对性的方法。 (4认同)
  • 我最终只是重命名了该函数,但听起来效果是一样的。谢谢! (2认同)

小智 12

使用 slsremove 从堆栈中删除所有内容,然后运行 ​​slsdeploy