0

我正在设计一个 cloudformation 来部署 ALB,但我收到一条错误消息:

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"
                                ]
                            ]
                        }
                    }
                ]
            }

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

4

0 回答 0