定义具有不同AZ中的2个子网的ALB时出错

时间:2019-05-07 13:51:04

标签: amazon-web-services amazon-cloudformation aws-application-load-balancer

我正在设计一个用于部署ALB的cloudformation,但出现错误消息:

At least two subnets in two different Availability Zones must be specified (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError; 

这些网络是由其他Cloudformation创建的。现在,我转到VPC / SUbnets,我看到两者都已创建。

在ELB创建中定义子网的代码部分是这样的:

        "Subnets": [
          {
            "Fn::ImportValue": {
              "Fn::Join": [
                "-",
                [
                  {
                    "Ref": "ParentSubnetStackName"
                  },
                  "PublicSubnet1ID"
                ]
              ]
            },
            "Fn::ImportValue": {
              "Fn::Join": [
                "-",
                [
                  {
                    "Ref": "ParentSubnetStackName"
                  },
                  "PrivateSubnet2ID"
                ]
              ]
            }
          }
        ],

我认为可能是唯一的问题,而不是通过其他堆栈导入即时消息,而不是在此cloudformation的同一时间不执行。。我不知道是否可能存在问题,因为子网是现在肯定创建了它们,它们属于不同的AZ。

编辑:

@jogold CF太长。我在这里附上一段代码

 "PublicSubnet1": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "VpcId": {
                    "Fn::ImportValue": {
                        "Fn::Join": [
                            "-",
                            [
                                {
                                    "Ref": "ParentStackName"
                                },
                                "VPCID"
                            ]
                        ]
                    }
                },
                "CidrBlock": {
                    "Ref": "PublicSubnet1CIDR"
                },
                "AvailabilityZone": {
                    "Ref": "AZ1"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "-",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "PublicSubnet1"
                                ]
                            ]
                        }
                    }
                ]
            }

然后在输出中将其导出:

 "PublicSubnet1": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "VpcId": {
                    "Fn::ImportValue": {
                        "Fn::Join": [
                            "-",
                            [
                                {
                                    "Ref": "ParentStackName"
                                },
                                "VPCID"
                            ]
                        ]
                    }
                },
                "CidrBlock": {
                    "Ref": "PublicSubnet1CIDR"
                },
                "AvailabilityZone": {
                    "Ref": "AZ1"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": [
                                "-",
                                [
                                    {
                                        "Ref": "AWS::StackName"
                                    },
                                    "PublicSubnet1"
                                ]
                            ]
                        }
                    }
                ]
            }

所有子网都是以相同的方式创建的。

0 个答案:

没有答案