Javascript 如何为AWS云信息堆栈和资源实施特定于区域的配置

Javascript 如何为AWS云信息堆栈和资源实施特定于区域的配置,javascript,amazon-web-services,aws-lambda,amazon-cloudformation,devops,Javascript,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Devops,场景: 我们需要使用特定的资源集创建CloudFormation堆栈 如Lambda、API网关、DynamoDB、ElasticSearch等 这些堆栈需要部署在多个区域中,以实现更大的扩展 具体包括俄勒冈州、悉尼等5个不同地区 每个堆栈根据区域具有不同的配置,例如。 DynamoDB自动缩放值对于每个区域和 ElasticSearch等的Lambda并发或实例类型是特定于区域的 我们目前正在做什么: 目前,我们有一个单一的CloudFormation模板,其中定义了特定于区域的值。 i、 e

场景:

  • 我们需要使用特定的资源集创建CloudFormation堆栈 如Lambda、API网关、DynamoDB、ElasticSearch等
  • 这些堆栈需要部署在多个区域中,以实现更大的扩展 具体包括俄勒冈州、悉尼等5个不同地区
  • 每个堆栈根据区域具有不同的配置,例如。 DynamoDB自动缩放值对于每个区域和 ElasticSearch等的Lambda并发或实例类型是特定于区域的
  • 我们目前正在做什么:

    目前,我们有一个单一的CloudFormation模板,其中定义了特定于区域的值。 i、 e.我们使用like-if-else检查当前AWS区域,并在此基础上选择该区域的映射

    问题:

    • 随着需求的增长,支持越来越多的 映射也在增加
    • 对于添加的每个新资源,我们需要更新要添加的映射 新资源的配置
    • 支持多个区域和资源配置以及 情况变得难以管理
    期望值:

    我们正在寻找一个全面的解决方案,以支持使用同一CloudFormation模板的多个区域,并且需要摆脱映射,并找到更易于管理的方法来处理特定于区域的配置


    非常感谢您的帮助。

    您可以使用SSM参数来解决您的问题。如果您不知道,SSM允许您在AWS环境中存储参数。这些参数适用于每个区域。程序将是:

  • 创建包含所有参数的CloudFormation模板。使用为每个区域定义的值在每个区域中创建堆栈
  • 将当前模板更改为从参数存储中读取参数,而不是从参数映射中读取参数
  • 创建主堆栈

  • 您可以找到有关此功能的更多信息。

    您是否考虑过使用CDK生成特定于区域的模板?您可能会发现最终结果比一个带有许多条件的复杂模板更干净、更易于维护。谢谢。使用CDK是一个不错的选择,但它需要我们重写当前处于CloudInformation中的整个基础架构。对于长期目标,我们可以考虑使用CDK,但你能建议一些减少当前平原。映射,而容易膨胀,是罚款本身。如果不想使用CDK,请结合AWS组织查看Stackset:如果映射存在问题,那么非CDK选项可能是稍微分解模板,并使用jinja2等模板引擎使用条件插入重新组合模板。一开始听起来可能很复杂,但实际上很简单。您将拥有一个主模板,然后是一些较小的模板,并且您将使用常规模板功能(如
    {%include%}
    )以编程方式将它们注入主模板中的相关位置,并使用相关值,并将运行时值传入。这样,您现有的模板将基本保持不变。SSM参数存储非常适合该用例,只是我使用脚本而不是Cloudformation模板在所有区域创建了参数,