我熟悉Terraform及其terraform.tfstate文件,它跟踪哪个本地资源标识符映射到哪个远程资源。我注意到我的机器上有一个.serverless目录,它似乎包含CloudFormation模板和包含Lambda代码的ZIP文件。
假设我用我的笔记本电脑创建并部署了一个项目,Serverless启动了指向Lambda函数fooxyz.cloudfront.net的arn:aws:lambda:us-east-1:123456789012:function:handleRequest456。如果我天真地尝试再次从另一台机器运行Serverless (或者如果我git clean我的工作目录),它将产生一个新的CloudFront端点,因为它不知道fooxyz.cloudfront.net已经代表了相同的应用程序。我希望备份它内部保持的状态,这样它就可以修改现有的资源而不是创建新的资源。( Terraform中的等效内容是备份terraform.tfstate文件。)
如果我想备份或恢复一个Serverless部署状态,我会备份哪些文件?在AWS的情况下,似乎应该备份CloudFormation模板;我不想备份Lambda代码,因为它是直接从源代码生成的。但是,我将来可能会使用更多的AWS,所以如果可能的话,我不想使用“特殊情况”的CloudFormation模板。
如何仅备份无法重新生成的文件?
发布于 2017-07-26 21:06:29
我想您要问的是,如果我或同事在另一台机器上检查git中的无服务器代码,我们还能部署和更新相同的lambda函数和相同的API网关端点吗?
答案是肯定的!Serverless在他们的文件中为您跟踪所有这些。除非您运行,否则破坏-没有任何操作会创建一个新的lambda或api端点。
我和我的团队正在使用这个方法:我们将所有的代码提交给一个git,我们中的一个检查它并部署一个函数或整个程序,它正确地更新现有的一组函数。如果您设置了一个环境文件--这就是您真正需要担心的问题。我建议把它完全排除在吉特之外。
发布于 2019-01-12 01:19:07
对于AWS,Serverless Framework通过Cloudformation (CF)参数/标识符跟踪您的部署,这些参数/标识符特定于一个帐户/区域。CF堆栈模板被上传到一个(自动生成的) S3桶中,因此已经为您备份了它。
因此,您真正需要的是git中的原始部署代码,并且可以访问您的密钥。其他一切都已经为你准备好了。
https://stackoverflow.com/questions/43333376
复制相似问题