【问题标题】:Backing up a Serverless Framework deployment备份无服务器框架部署
【发布时间】: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 和源代码足以在另一个云帐户中部署完全相同的解决方案。您只需要避免硬编码密钥或端点。
  • 好点,从我写的内容中我的意图并不清楚。我现在正在编辑问题。

标签: serverless-framework


【解决方案1】:

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

答案是肯定的! Serverless 在他们的文件中为您跟踪所有这些。除非您运行 serverless destroy - 任何操作都不会创建新的 lambda 或 api 端点。

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

【讨论】:

  • 资源也是如此吗?我正在运行 Bucket already exists 错误。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2018-12-30
    • 2021-10-07
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多