Tengo la siguiente configuración de recursos de red ELB de red, para enrutar el tráfico saliente a través de una única IP elástica.
Obtuve el siguiente error:
"AWS::EC2::Route PublicRoute CREATE_FAILED: la tabla de rutas rtb-zzzeb y la puerta de enlace de red igw-xxx pertenecen a redes diferentes"
¿Qué significa esto exactamente en el contexto de mi siguiente configuración? ¿Hay algún problema con mi recurso etiquetado como "PublicRoute"?
Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: "10.0.0.0/24" Public1aSBN: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: "10.0.0.128/27" AvailabilityZone: "eu-west-2a" Public1cSBN: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: "10.0.0.160/27" AvailabilityZone: "eu-west-2c" Public1bSBN: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: "10.0.0.192/27" AvailabilityZone: "eu-west-2b" InternetGateway: Type: "AWS::EC2::InternetGateway" AttachGateway: Type: AWS::EC2::VPCGatewayAttachment Properties: VpcId: !Ref VPC InternetGatewayId: !Ref InternetGateway EIPNatGateway: Type: AWS::EC2::EIP Properties: Domain: vpc NAT: DependsOn: EIPNatGateway Type: AWS::EC2::NatGateway Properties: AllocationId: Fn::GetAtt: - EIPNatGateway - AllocationId SubnetId: !Ref Public1aSBN RouteTablePublic: Type: AWS::EC2::RouteTable Properties: VpcId: !Ref VPC Public1aSubnetRouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref Public1aSBN RouteTableId: !Ref RouteTablePublic Public1cSubnetRouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref Public1cSBN RouteTableId: !Ref RouteTablePublic Public1bSubnetRouteTableAssociation: Type: AWS::EC2::SubnetRouteTableAssociation Properties: SubnetId: !Ref Public1bSBN RouteTableId: !Ref RouteTablePublic PublicRoute: Type: AWS::EC2::Route DependsOn: InternetGateway Properties: RouteTableId: !Ref RouteTablePublic DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway TargetSG: Type: AWS::EC2::SecurityGroup Properties: VpcId: !Ref VPC InboundRule: Type: AWS::EC2::SecurityGroupIngress DependsOn: TargetSG Properties: IpProtocol: -1 FromPort: '0' ToPort: '65535' CidrIp: "0.0.0.0/0" GroupId: Fn::GetAtt: - TargetSG - GroupIdSegún los documentos ,
Algunos recursos en una VPC requieren una puerta de enlace (ya sea una puerta de enlace de Internet o VPN). Si su plantilla de AWS CloudFormation define una VPC, una puerta de enlace y un archivo adjunto de puerta de enlace, cualquier recurso que requiera la puerta de enlace depende del archivo adjunto de puerta de enlace.
Esto significa que debe agregar su AttachGateway al atributo DependsOn de su recurso PublicRoute :
PublicRoute: Type: AWS::EC2::Route DependsOn: - InternetGateway - AttachGateway Properties: RouteTableId: !Ref RouteTablePublic DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGatewayEsto garantiza que sus recursos se construyan en el orden correcto, por lo que su ruta no se creará hasta que la puerta de enlace se haya conectado a la vpc.
Obtendrá este error si la tabla de rutas y la puerta de enlace de Internet están en diferentes VPC.