首页 > 解决方案 > 如何通过命令行在不同阶段部署无服务器代码?

问题描述

目前我正在使用以下命令行从我的本地机器在不同阶段进行部署:

serverless deploy --stage qa

但是这段代码在 API Gateway 部分创建了全新的部分(项目)。请参阅我附加的链接。

https://photos.google.com/share/AF1QipPU6X8Dej7rNq5Ofo1eKfCq1cn6GpsL3GYdZ50yUO_a4quVPao9bllHIvRFA6VkbA?key=WVFDLVQ0cEd6aVB3cVlSY1hYcnBmS1BRT1QtNVVB

这段代码是否应该serverless deploy --stage qa在 APIs -> (API Project) -> Stages 部分创建不同的阶段?

我有点困惑哪种方式是正确的。我看到很多教程都创建了这两种方式。但是对我来说,在一个项目中创建不同的阶段是有意义的。

还是有不同的命令来做我想做的事?

标签: node.jsaws-api-gatewayserverless-frameworkserverlessstaging

解决方案


我认为无服务器的编写方式是一种更简洁的部署到不同阶段的方式。虽然 API 网关确实允许在同一个 API 网关下进行不同的阶段,但这为意外地做一些你不想做的事情留下了更多的空间,例如意外地拆除你的生产 API 而不是开发。

此外,最佳实践是将每个阶段都放在自己的 AWS 账户中。这使您可以更好地在帐户级别锁定生产环境,以避免意外更改。这有利于您的所有 AWS 资源,而不仅仅是 API Gateway。

如果您遵循最佳实践并且每个阶段都有一个 AWS 账户,那么您的问题就不会出现,因为您的每个暂存账户中都会有一个 API 网关。

如果这些最佳实践不适合您,您始终可以恢复为正常的 CloudFormation 模板,以强制每个阶段在同一 API 网关下进行不同的部署。


推荐阅读