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

Serverless deploy - Function not found - sls deploy

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

An error occurred: GenerateDownloadLinkLambdaFunction - Function not found:

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

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

同样值得注意的是,我已经设法将此功能部署在 dev 阶段,但我不小心删除了它。此后拒绝重新部署。

我一直在用头撞墙,想知道我做错了什么,但什么也没有发现,以前有没有其他人遇到过与 Serverless 类似的问题?

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

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

我遇到了同样的问题。不记得是因为我更改了函数名称还是因为我添加了

  apiGateway:
    shouldStartNameWithService: true

到 serverless.yml 在提供商部分。 (我这样做是因为我想切换到 the new API gateway naming

Serverless 仍在跟踪旧名称,因此为了重置它并能够再次部署,我执行了以下 3 个步骤:

  1. 删除了 Serverless 在 S3 中创建的存储桶;
  2. 删除了 Serverless 在 CloudFormation 中创建的堆栈;
  3. 删除了 Serverless 在我项目的根文件夹中创建的 .serverless 文件夹。

在那之后,serverless deploy 命令再次起作用。

在 AWS 控制台顶部的菜单中检查您的区域过滤器。

确保它与您在 serverless.yml 中部署到的区域相同:

provider:
  name: aws
  runtime: nodejs12.x
  region: us-east-1

使用 sls remove 从堆栈中删除所有内容,然后 运行 sls deploy

Caution: This will delete and recreate the whole stack including Databases if you have any, so try at your own risk

使用以下命令:

serverless remove --stage "environment" --region "region"

例如。 无服务器删除 --stage dev --region us-east-1

重点是,如果您 accidently/manually 从堆栈中删除任何内容,那么您就会破坏堆栈。你必须用上面的命令删除它并清理它。

另一种解决方法是手动重新创建已删除的组件,但我再次建议按照上述流程进行操作,现在将其中断。