Ограничение количества вложенных стеков CloudFormation - PullRequest
0 голосов
/ 29 мая 2020

Факты:

  • Выходные данные CloudFormation ограничивают 60 на шаблон.
  • У меня есть 90 ресурсов для экспорта, поэтому я создал следующая структура:
    • parent_stack.template (содержит вложенные стеки ниже)
    • stack01.template (содержит 45 ресурсов и их выходы)
    • stack02.template (содержит 45 ресурсов и его выходы)

Моя проблема:

Мне нужно экспортировать эти 90 ресурсов, но я не могу экспортировать их в parent_stack.template из-за ограничения.

Я могу экспортировать их в соответствующие stack01.template и stack02.template, но поскольку они вложены, когда CloudFormation создает их, он добавляет случайную строку букв и цифр c, например Stack01-1B0HKOV4YRD6A, поэтому я на самом деле нельзя использовать логическое имя для импорта из вложенных стеков где угодно, кроме родительского.

Я был бы очень признателен за любую помощь здесь.

Заранее спасибо !!!

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете ссылаться на вложенные выходные переменные. Посмотрите на этот черновой пример, это будет похоже на сценарий формирования основного облака:

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

MyStack C потребляет параметры из MyStackA и MyStackB. MyStack C скрипту потребуется раздел параметров:

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
...