Serverless framework 备份无服务器框架部署
我熟悉它的Serverless framework 备份无服务器框架部署,serverless-framework,Serverless Framework,我熟悉它的terraform.tfstate文件,它跟踪哪些本地资源标识符映射到哪些远程资源。我注意到在我的机器上有一个.serverless目录,其中似乎包含诸如CloudFormation模板和包含Lambda代码的ZIP文件之类的文件 假设我从笔记本电脑创建并部署了一个项目,无服务器启动了fooxyz.cloudfront.net,它指向一个Lambda函数arn:aws:Lambda:us-east-1:123456789012:function:handleRequest456。如果我
terraform.tfstate
文件,它跟踪哪些本地资源标识符映射到哪些远程资源。我注意到在我的机器上有一个.serverless
目录,其中似乎包含诸如CloudFormation模板和包含Lambda代码的ZIP文件之类的文件
假设我从笔记本电脑创建并部署了一个项目,无服务器启动了fooxyz.cloudfront.net
,它指向一个Lambda函数arn:aws:Lambda:us-east-1:123456789012:function:handleRequest456
。如果我天真地尝试从另一台机器(或者如果我git clean
我的工作目录)再次运行Serverless,它将启动一个新的CloudFront端点,因为它不知道fooxyz.CloudFront.net
已经代表同一个应用程序。我希望备份它在内部保持的状态,以便它修改现有资源,而不是创建新资源。(Terraform中的等效功能是备份Terraform.tfstate
文件。)
如果我希望备份或恢复无服务器部署状态,我将备份哪些文件?对于AWS,似乎我应该备份CloudFormation模板;我不想备份Lambda代码,因为它是直接从源代码生成的。但是,我将来可能会使用更多的AWS,因此如果可能的话,我不想“特例”使用CloudFormation模板
如何仅备份无法重新生成的文件?我想你要问的是如果我或同事在另一台机器上检查git中的无服务器代码,我们还能部署和更新相同的lambda函数和相同的API网关端点吗? 答案是肯定的!Serverless在其文件中为您跟踪所有这些内容。除非运行无服务器销毁,否则任何操作都不会创建新的lambda或api端点
我和我的团队正在使用这种方法:我们将所有代码提交给git repo,我们中的一个人检查并部署一个函数或整个东西,它会正确地更新现有的函数集。如果你设置了一个环境文件,这就是你真正需要担心的。我建议将它完全放在git之外。对于AWS;无服务器框架通过特定于帐户/区域的Cloudformation(CF)参数/标识符跟踪您的部署。CF堆栈模板被上传到一个(自动生成的)S3存储桶中,因此它已经为您进行了备份
因此,您真正需要的只是git repo中的原始部署代码,并且可以访问您的密钥。其他一切都已为您备份 看起来Serverless会自动将CloudFormation模板备份到S3。bucket名称可以使用serverless.yml中的
deploymentBucket
键。但是,我怀疑这只是备份AWS配置,而我也希望保留任何其他提供程序的状态。我不理解这个问题。serverless.yml和源代码足以在另一个云帐户中部署完全相同的解决方案。你只需要避免硬编码键或端点。好的一点,我写的东西并不清楚我的意图。我现在正在编辑这个问题。资源也是这样吗?我运行的存储桶已存在
错误。