CloudFormation嵌套堆栈输出限制

时间:2020-05-29 15:12:58

标签: amazon-web-services amazon-cloudformation nested-stack

事实:

  • CloudFormation输出限制每个模板的60
  • 我要导出90种资源,因此我创建了以下结构:
    • parent_stack.template(包含以下嵌套堆栈)
    • stack01.template(包含45种资源及其输出)
    • stack02.template(包含45种资源及其输出)

我的问题:

我需要导出这90种资源,但是由于限制,我无法在parent_stack.template中导出它们。

我可以将它们分别导出到stack01.templatestack02.template中,但是由于它们是在CloudFormation创建它们时嵌套的,因此会添加一个随机的字母数字字符串,例如Stack01-1B0HKOV4YRD6A,因此我实际上不能使用要从嵌套堆栈(而不是父级)中的任何位置导入的逻辑名称。

我非常感谢您的任何帮助。

提前谢谢!

2 个答案:

答案 0 :(得分:2)

于2020年10月推出:https://aws.amazon.com/about-aws/whats-new/2020/10/aws-cloudformation-now-supports-increased-limits-on-five-service-quotas/

您可以在AWS CloudFormation模板中声明的最大输出数量:200

答案 1 :(得分:-1)

您可以引用嵌套的输出变量。看一下这个示例草案,它就像一个主要的云形成脚本:

Description: >
    Some desc

AWSTemplateFormatVersion: 2010-09-09

Resources:

  MyStackA:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: "mystackA.yml"
      Parameters:
        ProjectName: "myprojectA"

  MyStackB:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: "mystackB.yml"
      Parameters:
        ProjectName: "myprojectB"

  MyStackC:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: "mystackC.yml"
      Parameters:
        ProjectName: "myprojectC"
        OutputFromMyStackA: !GetAtt MyStackA.Outputs.myoutputA
        OutputFromMyStackB: !GetAtt MyStackB.Outputs.myoutputB

MyStackC使用MyStackA和MyStackB中的参数。 MyStackC脚本将需要一个参数部分:

Parameters:

  OutputFromMyStackA:
    Description: param from stack a
    Type: String

  OutputFromMyStackB:
    Description: param from stack b
    Type: String

StackA和StackB也需要输出自己的内容

Outputs:

  myoutputA:
    Description: the myoutputA
    Value: !Ref SomeStackAResource   ====> this references something inside the script for StackA