Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serverless framework 备份无服务器框架部署_Serverless Framework - Fatal编程技术网

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和源代码足以在另一个云帐户中部署完全相同的解决方案。你只需要避免硬编码键或端点。好的一点,我写的东西并不清楚我的意图。我现在正在编辑这个问题。资源也是这样吗?我运行的
存储桶已存在
错误。