备份无服务器框架部署

时间:2017-04-10 21:45:44

标签: serverless-framework

我熟悉Terraform及其terraform.tfstate文件,它跟踪哪些本地资源标识符映射到哪些远程资源。我注意到我的机器上有一个.serverless目录,它似乎包含CloudFormation模板和包含Lambda代码的ZIP文件等文件。

假设我从笔记本电脑创建和部署项目,而无服务器旋转fooxyz.cloudfront.net指向Lambda函数arn:aws:lambda:us-east-1:123456789012:function:handleRequest456。如果我天真地尝试从另一台机器再次运行无服务器(或者如果我git clean我的工作目录),它将启动一个新的CloudFront端点,因为它不知道fooxyz.cloudfront.net已经表示相同应用。我希望备份内部保留的状态,以便修改现有资源而不是创建新资源。 (Terraform中的等价物是备份terraform.tfstate文件。)

如果我希望备份或恢复无服务器部署状态,我会备份哪些文件?对于AWS,似乎我应该备份CloudFormation模板;我不想备份Lambda代码,因为它是直接从源代码生成的。但是,我将来可能会使用的不仅仅是AWS,所以如果可能的话,不要“特殊情况”使用CloudFormation模板。

如何只备份我无法重新生成的文件?

2 个答案:

答案 0 :(得分:1)

我认为你要问的是如果我或同事从另一台机器上的git中检出无服务器代码,我们是否仍然可以部署和更新相同的lambda函数和相同的API网关端点?

答案是肯定的!无服务器在其文件中跟踪所有这些内容。除非您运行无服务器销毁 - 否则任何操作都不会创建新的lambda或api端点。

我的团队和我正在使用这种方法:我们将所有代码提交给git repo,我们其中一个人检查它并部署一个函数或整个事件,它会正确地更新现有的一组函数。如果你设置了一个环境文件 - 这就是你真正需要担心的全部内容。我建议完全把它留在git之外。

答案 1 :(得分:0)

对于AWS;无服务器框架通过特定于帐户/区域的Cloudformation(CF)参数/标识符来跟踪您的部署。 CF堆栈模板已上传到(自动生成的)S3存储桶,因此已经为您备份了。

因此,您真正需要拥有的只是git repo中的原始部署代码并可以访问您的密钥。其他所有内容都已为您备份。