Создание мастер-шаблона AWS Cloudformation - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать основной шаблон, который вызывает другие шаблоны. Мой первый шаблон - это создание VPC и подсети, а второй - создание бастиона.Проблема, с которой я сталкиваюсь - я не могу реф.созданный VPC во втором шаблоне, из-за которого он не работает.Мой основной шаблон выглядит следующим образом: -

Description: >

    This template deploys the full agyle time stack as follows, which consists of:

    A VPC with with public and private subnets spread across two Availabilty Zones.
    It deploys an Internet Gateway and a pair of NAT Gateways, with the relevant routes in each of the subnets.

    It then deploys the API ECS cluster distributed across multiple Availability Zones.

    Finally, it deploys the API ECS services deployed as containers within the ECS repository
Parameters:
    S3TemplateKeyPrefix:
        Description: >
            An S3 key prefix which will be used to resolve referenced templates
        Type: String

Resources:

    VPC:
        Type: AWS::CloudFormation::Stack
        Properties:
            TemplateURL: !Sub ${S3TemplateKeyPrefix}/infrastructure/vpc.yaml

    Bastion:
        Type: AWS::CloudFormation::Stack
        Properties:
            TemplateURL: !Sub ${S3TemplateKeyPrefix}/infrastructure/bastion.yaml
            Parameters: 
                EnvironmentName: !Ref AWS::StackName
                VPC: !GetAtt VPC.Outputs.VPC

Может ли кто-нибудь помочь мне в этом, нужно ли мне изменять VPC и шаблон хоста Bastion для ссылки на мой VPC в шаблоне бастиона.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Мне удалось решить проблему, изменив дочерние шаблоны с помощью функции экспорта и импорта и вызвав ее в главном шаблоне.ниже я использовал: -

Выходы:

PubPrivateVPC: 
    Description: A reference to the created VPC
    Value: !Ref PubPrivateVPC
    Export:
      Name: VPC-PROD

и импорт

Параметр: - NetworkStackName: Описание:> - Имя активного стека CloudFormation, содержащегосетевые ресурсы, такие как подсеть и группа безопасности, которые будут использоваться в этом стеке.Тип: String MinLength: 1 MaxLength: 255 AllowedPattern: '^ [a-zA-Z] [- a-zA-Z0-9] * $' По умолчанию: VPC-PROD

и в ресурсах, которые называются ниже: - VpcId:! ImportValue VPC-PROD

Нет, я не могу успешно вызвать дочерние шаблоны в master.

0 голосов
/ 21 февраля 2019

Основываясь на вашем мастер-шаблоне, я считаю, что он потерпит неудачу, потому что CFN начинает создавать их оба параллельно, тогда как Bastion необходимо создать после вашего ресурса VPC.Просто добавьте DependsOn: VPC для ресурса Bastion, чтобы он был создан только после создания вашего VPC.

Bastion:
  Type: AWS::CloudFormation::Stack
  DependsOn: VPCStack
  Properties:

Вот рабочий пример из AWS saas-identity-cognito-master.template .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...