AWS云形成;将模板分成几个文件,并使用cfn-include传递变量

时间:2018-08-29 21:52:39

标签: amazon-web-services yaml amazon-cloudformation

我的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}

谢谢!

2 个答案:

答案 0 :(得分:0)

也许您想尝试一下嵌套堆栈(https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html) 通常,当文件太大而无法读取时,它们可能很快就会达到最大模板大小限制。 在那里,您可以轻松,以键入的方式将根文件中拥有的所有参数传递给子堆栈。

答案 1 :(得分:0)

还有另一种选择:cfpack.js工具。它允许您将巨大的模板拆分为较小的模板,这些模板将合并为一个模板并部署到CloudFormation堆栈中。