【问题标题】:How should you deploy a combination of serverless and non-serverless resources in AWS?您应该如何在 AWS 中部署无服务器和非无服务器资源的组合?
【发布时间】:2020-02-22 03:13:36
【问题描述】:

我需要部署无服务器(API GW 和 Lambda)和非无服务器资源(RDS、ElastiCache 等)的组合。使用 SAM 模板可以轻松部署所有这些资源。但是我应该将它们全部放在一个模板中,还是应该使用无服务器模板(例如 API GW 和 Lambda)以及用于不同静态资源的 CloudFormation 模板?是否有一些 AWS 最佳实践?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    AWS SAM 模板是 CloudFormation 的超集,因此,除了其内置的无服务器资源快捷方式外,还支持定义 CloudFormation 支持的任何资源;使用 AWS SAM,您不仅可以定义无服务器资源和应用程序,还可以定义 CloudFormation 支持的任何其他资源。尽管没有针对哪种资源使用哪种模板标准本身的最佳实践,但您可能希望考虑为您的所有基础设施作为代码模板采用单一模板标准可能会使学习和采用该标准比同时采用多种标准。

    关于资源的组织,可用于组织和/或隔离资源的一种策略是 CloudFormations Nested Stacks 概念,SAM 已将其扩展到 Nested Applications。使用“嵌套”方法,您可以将资源分离并组织到单独的模板或stacks,这对您的用例具有逻辑意义,并使用root stack 部署它们。这种方法有很多优点,包括它允许您在其他嵌套应用程序中重用您的stacks

    您可以了解有关 CloudFormation Nested Stacks hereAWS SAM Nested Applications here 的更多信息,AWS SAM 嵌套堆栈 announcement 提供了一个很棒的教程,您可以按照这些教程快速熟悉嵌套应用程序。

    【讨论】:

    • 要补充这一点,请考虑您想要版本化并发布到生产环境中的内容。如果您将所有内容一起版本化和发布,则具有嵌套堆栈的一个堆栈是有意义的。如果您有 2 个独立版本和发布的服务,那么两个独立的堆栈是有意义的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2019-01-02
    • 2020-07-16
    • 2021-05-24
    相关资源
    最近更新 更多