【发布时间】:2019-01-12 09:19:07
【问题描述】:
我熟悉Terraform 及其terraform.tfstate 文件,它跟踪哪些本地资源标识符映射到哪些远程资源。我注意到我的机器上有一个 .serverless 目录,其中似乎包含 CloudFormation 模板和包含 Lambda 代码的 ZIP 文件等文件。
假设我从笔记本电脑创建和部署一个项目,Serverless 启动 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 模板。
如何仅备份无法重新生成的文件?
【问题讨论】:
-
看起来 Serverless 会自动将 CloudFormation 模板备份到 S3。使用 serverless.yml 中的
deploymentBucket键,存储桶名称可以是 configured。但是,我怀疑这只会备份 AWS 配置,而我还想保留任何其他提供商的状态。 -
我不明白这个问题。 serverless.yml 和源代码足以在另一个云帐户中部署完全相同的解决方案。您只需要避免硬编码密钥或端点。
-
好点,从我写的内容中我的意图并不清楚。我现在正在编辑问题。