AWS 云形成;将模板分解为多个文件并使用 cfn-include 传入变量
Posted
技术标签:
【中文标题】AWS 云形成;将模板分解为多个文件并使用 cfn-include 传入变量【英文标题】:AWS Cloud Formation; Breaking up template into several files and passing in variables with cfn-include 【发布时间】:2019-02-04 18:45:56 【问题描述】:我的 aws 云形成模板遇到了一些问题。
我有一个通用的 staging.yaml 文件,我在其中定义了我的所有 lambda 和 api。 问题是,那个文件变得太大了。 所以我决定使用这个包:https://www.npmjs.com/package/cfn-include。 所以我可以把文件分成几个模板。 因此:
Fn::Merge:
- !Include ./templates/api-lambdas/accounts.yaml
- !Include ./templates/api-lambdas/officers.yaml
- !Include ./templates/api-lambdas/branches.yaml
我的问题是,有没有办法将变量传递给这些包含? 即:
- !include ./templates/api-lambdas/accounts/yaml, variables: database: databaseName, environment: staging
accounts.yaml 看起来像这样:
Environment:
Variables:
ENV: $environment
DB_NAME: $databaseName
谢谢!
【问题讨论】:
【参考方案1】:还有另一种选择:cfpack.js 工具。它允许您将巨大的模板拆分为较小的模板,这些模板将合并为一个并部署到您的 CloudFormation 堆栈中。
【讨论】:
【参考方案2】:也许你想试试嵌套堆栈 (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html) 通常当文件变得太大而无法读取时,它们可能很快就会达到最大模板大小限制。 在那里,您可以将根文件中的所有参数以非常简单的方式传递给子堆栈。
【讨论】:
以上是关于AWS 云形成;将模板分解为多个文件并使用 cfn-include 传入变量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS Cloudformer 为现有 API Gateway 创建云形成模板?