2017-02-08 9 views
0

CloudFormation начинающий здесь. Я изучал и работал над разработкой шаблона CloudFormation, который в конечном итоге будет использоваться в качестве отправной точки для среды разработки для моей команды.AWS CloudFormation Ошибки с интернет-шлюзом

Я собирал кусочки и кусочки через некоторые курсы и примеры в Интернете и был относительно успешным в своей маленькой попытке ... До сегодняшнего вечера.

Теперь я пытаюсь подключить интернет-шлюз к своему VPC, и это приводит к тому, что задание создания стека выходит из строя и откатывается. Интернет-шлюз не будет прикрепляться, и для жизни меня я просто не могу понять, почему.

Мой полный шаблон здесь. Планируется создание VPC с 2 общедоступными и двумя частными подсетями. Будет подключен интернет-шлюз к двум общественным подсетям. Здесь возникает ошибка. Если я прокомментирую создание интернет-шлюза, шаблон будет успешным. Заранее спасибо за вашу помощь.

AWSTemplateFormatVersion: '2010-09-09' 

Resources: 
    DevVPC: 
    Type: AWS::EC2::VPC 
    Properties: 
     CidrBlock: 10.0.0.0/16 
     EnableDnsSupport: 'true' 
     EnableDnsHostnames: 'true' 
     InstanceTenancy: default 
    Tags: 
    - Key: Name 
    Value: dev-vpc 

    DevRoute53HostedZone: 
    Type: "AWS::Route53::HostedZone" 
    Properties: 
     HostedZoneConfig: 
     Comment: "aws hosted dev environment" 
     Name: "mydomain.oregon-dev.local" 
     VPCs: 
     - 
      VPCId: !Ref DevVPC 
      VPCRegion: "us-west-2" 

    DevPublicSubnetA: 
Type: AWS::EC2::Subnet 
Properties: 
    VpcId: !Ref DevVPC 
    CidrBlock: 10.0.8.0/25 
    AvailabilityZone: "us-west-2a" 
    Tags: 
    - Key: Name 
    Value: DevPublicSubnetA 

    DevPublicSubnetB: 
     Type: AWS::EC2::Subnet 
     Properties: 
     VpcId: !Ref DevVPC 
     CidrBlock: 10.0.8.128/25 
     AvailabilityZone: "us-west-2b" 
     Tags: 
     - Key: Name 
      Value: DevPublicSubnetB 

    DevPrivateSubnetA: 
    Type: AWS::EC2::Subnet 
    Properties: 
     VpcId: !Ref DevVPC 
     CidrBlock: 10.0.9.0/25 
     AvailabilityZone: "us-west-2a" 
     Tags: 
     - Key: Name 
     Value: DevPrivateSubnetA 

    DevPrivateSubnetB: 
    Type: AWS::EC2::Subnet 
    Properties: 
     VpcId: !Ref DevVPC 
     CidrBlock: 10.0.9.128/25 
     AvailabilityZone: "us-west-2b" 
     Tags: 
     - Key: Name 
     Value: DevPrivateSubnetB 

    RouteTable: 
    Type: AWS::EC2::RouteTable 
    Properties: 
     VpcId: 
     Ref: DevVPC 
     Tags: 
     - Key: Name 
     Value: DevRouteTable 

    DevRoute: 
    Type: AWS::EC2::Route 
    DependsOn: NonProdNATGateway 
    Properties: 
     RouteTableId: 
     Ref: RouteTable 
     DestinationCidrBlock: 0.0.0.0/0 
     GatewayId: 
     Ref: NonProdNATGateway 

    NonProdNATEIP: 
    Type: AWS::EC2::EIP 
    Properties: 
     Domain: vpc 

    NonProdNATGateway: 
    Type: AWS::EC2::NatGateway 
    Properties: 
     AllocationId: !GetAtt NonProdNATEIP.AllocationId 
     SubnetId: !Ref DevPublicSubnetA 
     SubnetId: !Ref DevPublicSubnetB 
    DependsOn: 
     - NonProdNATEIP 
     - DevPublicSubnetA 
     - DevPublicSubnetB 

    NonProdGWVPCAttachment: 
    Type: AWS::EC2::VPCGatewayAttachment 
    Properties: 
     InternetGatewayId: !Ref NonProdNATGateway 
     VpcId: !Ref DevVPC 
    DependsOn: 
     - NonProdNATGateway 

    Route: 
    Type: AWS::EC2::Route 
    Properties: 
     RouteTableId: 
     Ref: RouteTable 
     DestinationCidrBlock: 0.0.0.0/0 
     NatGatewayId: 
     Ref: NonProdNATGateway 

    PrivateRouteTableAssociation: 
    Type: AWS::EC2::SubnetRouteTableAssociation 
    Properties: 
     RouteTableId: !Ref RouteTable 
     SubnetId: !Ref DevPrivateSubnetA 
     SubnetId: !Ref DevPrivateSubnetB 

    PublicRouteTableAssociation: 
    Type: AWS::EC2::SubnetRouteTableAssociation 
    Properties: 
     RouteTableId: !Ref RouteTable 
     SubnetId: !Ref DevPublicSubnetA 
     SubnetId: !Ref DevPublicSubnetB 

Mappings: 
    R53EnvironmentMapping: 
    dev: 
     oregonawslocal: mydomain.oregon-dev.local 

Outputs: 

    DevPublicSubnetA: 
    Description: ID for dev subnet A 
    Value: !Ref DevPublicSubnetA 
    Export: 
     Name: DevPublicSubnetA 

    DevPublicSubnetB: 
    Description: ID for dev subnet B 
    Value: !Ref DevPublicSubnetB 
    Export: 
     Name: DevPublicSubnetB 

    DevPrivateSubnetA: 
    Description: ID for dev subnet A 
    Value: !Ref DevPrivateSubnetA 
    Export: 
     Name: DevPrivateSubnetA 

    DevPrivateSubnetB: 
    Description: ID for dev subnet B 
    Value: !Ref DevPrivateSubnetB 
    Export: 
     Name: DevPrivateSubnetB 

    DevRoute53OregonAWSLocalHostedZone: 
    Description: Hosted zone ID for hosted zone 
    Value: !Ref DevRoute53HostedZone 
    Export: 
     Name: DevRoute53OregonAWSLocalHostedZone 

    DevRoute53OregonAWSLocalHostedZoneName: 
    Description: Hosted zone name for hosted zone 
    Value: !FindInMap [R53EnvironmentMapping, dev, oregonawslocal] 
    Export: 
     Name: DevRoute53OregonAWSLocalHostedZoneName 
+0

NAT Gateway - это не то же самое, что Интернет-шлюз, но у вас есть 'InternetGatewayId:! Ref NonProdNATGateway'. –

ответ

0

Как Michael - sqlbot упоминалось в comment, одна проблема в том, что вы ссылке на AWS::EC2::NATGateway ресурс в InternetGatewayId имущества AWS::EC2::VPCGatewayAttachment ресурса, который требует AWS::EC2::InternetGateway ресурса.

NAT Gateways и Internet Gateways - это два разных типа ресурсов AWS. NAT-шлюз обеспечивает доступ только для исходящих интернет-доступа к частной подсети, а интернет-шлюз обеспечивает двусторонний доступ в Интернет для публичной подсети.

Другая проблема заключается в том, что вам нужны два отдельных набора AWS::EC2::RouteTable и AWS::EC2::Route Ресурсы, один набор для вашей общей подсети и другой для вашей частной подсети. Общественный маршрут должен иметь GatewayId, ссылающийся на Интернет-шлюз, а частный маршрут должен иметь NatGatewayId, ссылающийся на шлюз NAT.

И, наконец, у вас есть некорректный дубликат SubnetId свойств в нескольких ресурсах (NatGateway, SubnetRouteTableAssociation) - каждый из этих ресурсов только точки принимает один идентификатор подсети.

Поскольку вы новичок CloudFormation, я настоятельно рекомендую использовать AWS Quick StartAmazon VPC Architecturetemplate, чтобы быстро начать работу с эталонной архитектуры VPC. Этот шаблон, поддерживаемый AWS, создает единый VPC, содержащий как общедоступные, так и частные подсети в каждой указанной зоне доступности (вы предоставляете 2-4 зоны доступности в качестве параметров). Вы можете позже настроить этот шаблон, чтобы он лучше соответствовал вашим конкретным потребностям, если это необходимо, или использовать его как ссылку для настройки ресурсов вашего собственного шаблона.

+0

Благодарим вас за отзывы, с которыми мне очень помогли, когда я снова погружусь в это начинание. – 8675309

 Смежные вопросы

  • Нет связанных вопросов^_^