无服务器部署 - 找不到功能 - 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 个步骤:
- 删除了 Serverless 在 S3 中创建的存储桶;
- 删除了 Serverless 在 CloudFormation 中创建的堆栈;
- 删除了 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 从堆栈中删除任何内容,那么您就会破坏堆栈。你必须用上面的命令删除它并清理它。
另一种解决方法是手动重新创建已删除的组件,但我再次建议按照上述流程进行操作,现在将其中断。
我正在尝试通过无服务器 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 个步骤:
- 删除了 Serverless 在 S3 中创建的存储桶;
- 删除了 Serverless 在 CloudFormation 中创建的堆栈;
- 删除了 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 从堆栈中删除任何内容,那么您就会破坏堆栈。你必须用上面的命令删除它并清理它。
另一种解决方法是手动重新创建已删除的组件,但我再次建议按照上述流程进行操作,现在将其中断。