利用ROS創建多臺ECS, 指定名稱並添加到多個SLB

本模版示例支持爲單/多個(最多3個)SLB添加所有創建的ECS做多個後端服務器

簡述:

模版中的ECS實例支持指定不同的實例名和主機名,並且可以選擇網絡類型爲VPC或CLASSIC,當選擇不創建VPC時,需要更換ECS實例規格類型,原因是能創建ECS的實例規格,與VPC網絡類型的實例規格不一樣;默認是新創建一個SLB實例,如果傳入SLB實例的ID,那麼需要更改下SLB的數量,原因是根據模版中SLB的數量值和SLB的ID來確認添加後端服務器的SLB實例數量,需要兩者保持一致(e.g. 用兩個已經創建的SLB的ID來做參數,那麼SLB數量值胥更改爲2)。
本模版目前最多支持往3個SLB實例附加後端服務器;

涉及資源:

ALIYUN::ECS::VPC (虛擬專有網絡)
ALIYUN::ECS::VSwitch (虛擬交換機)
ALIYUN::ECS::SecurityGroup (安全組)
ALIYUN::ECS::InstanceGroup (雲服務器組)
ALIYUN::SLB::LoadBalancer (負載均衡)
ALIYUN::SLB::BackendServerAttachment (爲負載均衡添加後端服務器)

1.創建ECS InstanceGroup

下面是創建VPC類型的ECS Instance代碼示例,實例中批量創建ECS指定不同的實例名和主機名。

e.g. 

HostName[1,4]Test
HostName: 是ECS InstanceGroup主機命名規則的前綴;
[1,4]: 1爲起始數字,4爲數字的位數; 
Test: 爲命名規則的尾綴;
結果創建的ECS的主機名分別爲:HostName0001, HostName002, HostName0003, .....
{
  "Type": "ALIYUN::ECS::InstanceGroup",
  "Condition": "IsCreateVpc",
  "Properties": {
    "IoOptimized": "optimized",
    "ImageId": {
      "Ref": "EcsGroupImageId"
    },
    "SecurityGroupId": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "SG",
            "SecurityGroupId"
          ]
        },
        {
          "Ref": "ALIYUN::NoValue"
        }
      ]
    },
    "Password": {
      "Ref": "EcsPassword"
    },
    "MinAmount": {
      "Ref": "MaxAmount"
    },
    "SystemDiskCategory": {
      "Ref": "EcsSystemDiskCategory"
    },
    "MaxAmount": {
      "Ref": "MaxAmount"
    },
    "VSwitchId": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "VSwitch",
            "VSwitchId"
          ]
        },
        {
          "Ref": "ALIYUN::NoValue"
        }
      ]
    },
    "VpcId": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        {
          "Ref": "ALIYUN::NoValue"
        }
      ]
    },
    "InstanceType": {
      "Ref": "EcsGroupInstanceType"
    },
    "InstanceName": {
      "Fn::Join": [
        "",
        [
          {
            "Ref": "InstanceNamePrefix"
          },
          "[",
          {
            "Ref": "InstanceNameBeginNumber"
          },
          ",4]",
          {
            "Ref": "InstanceNameSuffix"
          }
        ]
      ]
    },
    "HostName": {
      "Fn::Join": [
        "",
        [
          "HostNameTest",
          "[1,4]",
          {
            "Ref": "InstanceNameSuffix"
          }
        ]
      ]
    },
    "AllocatePublicIP": {
      "Fn::If": [
        "IsCreateVpc",
        false,
        true
      ]
    },
    "UserData": {
      "Fn::Join": [
        "",
        [
          "#!/bin/sh\n",
          "echo \"hello , create ecs group test\" > /tmp/create_test.log\n"
        ]
      ]
    }
  }
}

2.爲SLB實例添加後端服務器

下面示例代碼創建的附加後端服務器功能,用到的一些ROS的函數功能,以及自己定義的一些邏輯判斷,具體可根據方案模版查閱;
因爲考慮到要爲多個SLB實例添加後端服務器的情況,本方案用了Conditions及函數的功能配合完成了是爲單/多個SLB添加後端服務器。

{
  "Type": "ALIYUN::SLB::BackendServerAttachment",
  "Condition": "IsAttachment1",
  "Properties": {
    "LoadBalancerId": {
      "Fn::If": [
        "IsCreateSlb",
        {
          "Fn::GetAtt": [
            "LoadBalancer",
            "LoadBalancerId"
          ]
        },
        {
          "Fn::Select": [
            "0",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        }
      ]
    },
    "BackendServerList": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "EcsInstanceGroupWithVpc",
            "InstanceIds"
          ]
        },
        {
          "Fn::GetAtt": [
            "EcsInstanceGroupNoVpc",
            "InstanceIds"
          ]
        }
      ]
    },
    "BackendServerWeightList": {
      "Fn::Split": [
        ",",
        {
          "Ref": "BackendServerWeightList"
        }
      ]
    }
  }
}

3. 條件Code示例

請結合模版中的Paramters。

{
  "IsAttachment1": {
    "Fn::And": [
      {
        "Fn::Equals": [
          1,
          {
            "Ref": "SlbCount"
          }
        ]
      },
      {
        "Fn::Or": [
          "IsCreateSlb",
          {
            "Fn::Not": "IsCreateSlb"
          }
        ]
      }
    ]
  },
  "IsAttachment2": {
    "Fn::And": [
      {
        "Fn::Equals": [
          2,
          {
            "Ref": "SlbCount"
          }
        ]
      },
      {
        "Fn::Not": "IsCreateSlb"
      }
    ]
  },
  "IsAttachment3": {
    "Fn::And": [
      {
        "Fn::Equals": [
          3,
          {
            "Ref": "SlbCount"
          }
        ]
      },
      {
        "Fn::Not": "IsCreateSlb"
      }
    ]
  },
  "IsCreateSlb": {
    "Fn::Equals": [
      "None",
      {
        "Ref": "LoadBalancerIds"
      }
    ]
  },
  "IsCreateVpc": {
    "Fn::Equals": [
      "Yes",
      {
        "Ref": "IsCreateVpc"
      }
    ]
  },
  "NotUseVpc": {
    "Fn::Equals": [
      "No",
      {
        "Ref": "IsCreateVpc"
      }
    ]
  }
}

方案模版如下:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Conditions": {
    "IsAttachment1": {
      "Fn::And": [
        {
          "Fn::Equals": [
            1,
            {
              "Ref": "SlbCount"
            }
          ]
        },
        {
          "Fn::Or": [
            "IsCreateSlb",
            {
              "Fn::Not": "IsCreateSlb"
            }
          ]
        }
      ]
    },
    "IsAttachment2": {
      "Fn::And": [
        {
          "Fn::Equals": [
            2,
            {
              "Ref": "SlbCount"
            }
          ]
        },
        {
          "Fn::Not": "IsCreateSlb"
        }
      ]
    },
    "IsAttachment3": {
      "Fn::And": [
        {
          "Fn::Equals": [
            3,
            {
              "Ref": "SlbCount"
            }
          ]
        },
        {
          "Fn::Not": "IsCreateSlb"
        }
      ]
    },
    "IsCreateSlb": {
      "Fn::Equals": [
        "None",
        {
          "Ref": "LoadBalancerIds"
        }
      ]
    },
    "IsCreateVpc": {
      "Fn::Equals": [
        "Yes",
        {
          "Ref": "IsCreateVpc"
        }
      ]
    },
    "NotUseVpc": {
      "Fn::Equals": [
        "No",
        {
          "Ref": "IsCreateVpc"
        }
      ]
    }
  },
  "Parameters": {
    "SlbCount": {
      "Type": "Number",
      "Label": "Slb的數量(確認SLB數量)",
      "Description": "需要添加的Slb實例的數量, 根據數量填寫《Slb實例Id》。",
      "Default": 1,
      "AllowedValues": [
        1,
        2,
        3
      ]
    },
    "BackendServerWeightList": {
      "Type": "String",
      "Label": "Slb後端服務器權重",
      "Description": "Slb後端服務器權重,允許單個或多個;如指定一個, 所有的Ecs權重都是此值;多個用','(英文逗號)隔開, 多個數量需對應《需要添加到Slb中的Ecs後端服務器》, 序號順序一一對應。 e.g. 20,30,100 ",
      "Default": "100"
    },
    "LoadBalancerIds": {
      "Type": "String",
      "Label": "Slb實例Id",
      "Description": "最多提供三個slb,多個slb需要存在於一個region內, 允許單個或多個, 多個用','(英文逗號)隔開, \ne.g. lb-bp183j4sfd02j02csd,lb-bid839fjn2j78bl,lb-sl39f8fvp6cbd4;\n如使用默認值(None)不指定,默認創建一個Slb實例。",
      "Default": "None"
    },
    "IsCreateVpc": {
      "Type": "String",
      "Description": "是否創建Vpc,默認不創建。",
      "Label": "是否創建Vpc",
      "Default": "Yes",
      "AllowedValues": [
        "No",
        "Yes"
      ]
    },
    "EcsGroupInstanceType": {
      "Type": "String",
      "Description": "創建ECS實例的規格,默認爲ecs.n1.large, 網絡爲classic類型可選用ecs.n1.large 或 ecs.n1.xlarge, 網絡爲Vpc類型可選用ecs.c5.large 或 ecs.g5.large",
      "Label": "ECS實例規格",
      "Default": "ecs.c5.large",
      "AllowedValues": [
        "ecs.n1.large",
        "ecs.n1.xlarge",
        "ecs.c5.large",
        "ecs.g5.large"
      ]
    },
    "MaxAmount": {
      "Type": "Number",
      "Description": "一次需要創建ECS實例數量,與《ECS實例名稱的開始數字》可用值對應。",
      "Label": "創建ECS實例數量",
      "Default": 2
    },
    "EcsGroupImageId": {
      "Type": "String",
      "Description": "用於啓動ECS實例的鏡像ID。",
      "Label": "ECS實例鏡像",
      "Default": "centos_7_06_64_20G_alibase_20190218.vhd",
      "AssociationProperty": "ALIYUN::ECS::Instance:ImageId"
    },
    "EcsPassword": {
      "Type": "String",
      "Description": "登陸ECS實例的密碼。",
      "ConstraintDescription": "8-30個字符,字符,包括3種類型的大寫字母、小寫字母、數字或特殊字符。",
      "Label": "ECS實例密碼",
      "AllowedPattern": "[a-zA-Z0-9-\\(\\)\\`\\~\\!@\\#\\$%\\^&\\*-+=\\|\\{\\}\\[\\]\\:\\;\\‘\\,\\.\\?\\/]*",
      "MaxLength": 30,
      "MinLength": 8,
      "NoEcho": true,
      "Confirm": true
    },
    "EcsSystemDiskCategory": {
      "Type": "String",
      "Description": "系統磁盤類型: 高效雲盤(cloud_efficiency) or 普通雲盤(cloud_ssd)",
      "Label": "ECS實例系統磁盤類型",
      "Default": "cloud_ssd",
      "AllowedValues": [
        "cloud_efficiency",
        "cloud_ssd"
      ]
    },
    "InstanceNamePrefix": {
      "Type": "String",
      "Description": "ECS實例名稱前綴, 必須要指定, 不能爲空。最長128個字符,可包含英文、中文、數字、(_)、(.)、(-)。",
      "Label": "ECS實例名稱前綴",
      "Default": "EcsGroup"
    },
    "InstanceNameBeginNumber": {
      "Type": "String",
      "Description": "ECS實例名稱的開始數字,默認爲0000,可用值分別是0000、0005、0010、0015、0020, 數字位數已經固定最長爲4位。",
      "Label": "ECS實例名稱的開始數字",
      "Default": "0"
    },
    "InstanceNameSuffix": {
      "Type": "String",
      "Description": "指定ECS實例名稱後綴(可選),默認爲空。",
      "Label": "ECS實例名稱後綴",
      "Default": "Test"
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Condition": "IsCreateVpc",
      "Properties": {
        "VpcName": {
          "Fn::Join": [
            "-",
            [
              {
                "Ref": "ALIYUN::StackName"
              },
              "Vpc"
            ]
          ]
        },
        "CidrBlock": "192.168.0.0/16",
        "Description": {
          "Fn::Join": [
            " ",
            [
              "Vpc of the",
              {
                "Ref": "ALIYUN::StackName"
              }
            ]
          ]
        }
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Condition": "IsCreateVpc",
      "Properties": {
        "VSwitchName": {
          "Fn::Join": [
            "-",
            [
              {
                "Ref": "ALIYUN::StackName"
              },
              "VSwitch"
            ]
          ]
        },
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        "CidrBlock": "192.168.0.0/16",
        "Description": {
          "Fn::Join": [
            " ",
            [
              "VSwitch of the",
              {
                "Ref": "ALIYUN::StackName"
              }
            ]
          ]
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        }
      }
    },
    "SG": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Condition": "IsCreateVpc",
      "Properties": {
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        "SecurityGroupName": {
          "Fn::Join": [
            "-",
            [
              {
                "Ref": "ALIYUN::StackName"
              },
              "SG"
            ]
          ]
        },
        "SecurityGroupIngress": [
          {
            "PortRange": "-1/-1",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "all",
            "NicType": "intranet"
          }
        ],
        "SecurityGroupEgress": [
          {
            "PortRange": "-1/-1",
            "Priority": 1,
            "IpProtocol": "all",
            "DestCidrIp": "0.0.0.0/0",
            "NicType": "intranet"
          }
        ]
      }
    },
    "EcsInstanceGroupWithVpc": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Condition": "IsCreateVpc",
      "Properties": {
        "IoOptimized": "optimized",
        "ImageId": {
          "Ref": "EcsGroupImageId"
        },
        "SecurityGroupId": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "SG",
                "SecurityGroupId"
              ]
            },
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        },
        "Password": {
          "Ref": "EcsPassword"
        },
        "MinAmount": {
          "Ref": "MaxAmount"
        },
        "SystemDiskCategory": {
          "Ref": "EcsSystemDiskCategory"
        },
        "MaxAmount": {
          "Ref": "MaxAmount"
        },
        "VSwitchId": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "VSwitch",
                "VSwitchId"
              ]
            },
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        },
        "VpcId": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "Vpc",
                "VpcId"
              ]
            },
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        },
        "InstanceType": {
          "Ref": "EcsGroupInstanceType"
        },
        "InstanceName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "InstanceNamePrefix"
              },
              "[",
              {
                "Ref": "InstanceNameBeginNumber"
              },
              ",4]",
              {
                "Ref": "InstanceNameSuffix"
              }
            ]
          ]
        },
        "HostName": {
          "Fn::Join": [
            "",
            [
              "HostNameTest",
              "[1,4]",
              {
                "Ref": "InstanceNameSuffix"
              }
            ]
          ]
        },
        "AllocatePublicIP": {
          "Fn::If": [
            "IsCreateVpc",
            false,
            true
          ]
        },
        "UserData": {
          "Fn::Join": [
            "",
            [
              "#!/bin/sh\n",
              "echo \"hello , create ecs group test\" > /tmp/create_test.log\n"
            ]
          ]
        }
      }
    },
    "EcsInstanceGroupNoVpc": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Condition": "NotUseVpc",
      "Properties": {
        "IoOptimized": "optimized",
        "ImageId": {
          "Ref": "EcsGroupImageId"
        },
        "Password": {
          "Ref": "EcsPassword"
        },
        "MinAmount": {
          "Ref": "MaxAmount"
        },
        "SystemDiskCategory": {
          "Ref": "EcsSystemDiskCategory"
        },
        "MaxAmount": {
          "Ref": "MaxAmount"
        },
        "InstanceType": {
          "Ref": "EcsGroupInstanceType"
        },
        "InstanceName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "InstanceNamePrefix"
              },
              "[",
              {
                "Ref": "InstanceNameBeginNumber"
              },
              ",",
              "4",
              "]",
              {
                "Ref": "InstanceNameSuffix"
              }
            ]
          ]
        }
      }
    },
    "LoadBalancer": {
      "Condition": "IsCreateSlb",
      "Type": "ALIYUN::SLB::LoadBalancer",
      "Properties": {
        "AddressType": "internet"
      }
    },
    "BackendServerAttachment1": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment1",
      "Properties": {
        "LoadBalancerId": {
          "Fn::If": [
            "IsCreateSlb",
            {
              "Fn::GetAtt": [
                "LoadBalancer",
                "LoadBalancerId"
              ]
            },
            {
              "Fn::Select": [
                "0",
                {
                  "Fn::Split": [
                    ",",
                    {
                      "Ref": "LoadBalancerIds"
                    }
                  ]
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment2-1": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment2",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "0",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment2-2": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment2",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "1",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment3-1": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment3",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "0",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment3-2": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment3",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "1",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment3-3": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment3",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "2",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    }
  },
  "Outputs": {
    "EcsInstanceIds": {
      "Description": "所有ECS實例的ID。",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupWithVpc",
              "InstanceIds"
            ]
          },
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "InstanceIds"
            ]
          }
        ]
      }
    },
    "LoadBalancerIp": {
      "Condition": "IsCreateSlb",
      "Description": "SLB實例的IP。",
      "Value": {
        "Fn::GetAtt": [
          "LoadBalancer",
          "IpAddress"
        ]
      }
    },
    "EcsPublicIps": {
      "DependsOn": "NotUseVpc",
      "Description": "所有ECS實例的公網IP列表",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          "Vpc類型的ECS實例沒有公網IP",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "PublicIps"
            ]
          }
        ]
      }
    },
    "EcsPrivateIps": {
      "Description": "所有ECS實例的私網IP列表。",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupWithVpc",
              "PrivateIps"
            ]
          },
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "InnerIps"
            ]
          }
        ]
      }
    },
    "EcsHostNames": {
      "Description": "所有ECS實例的主機名稱列表。",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupWithVpc",
              "HostNames"
            ]
          },
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "HostNames"
            ]
          }
        ]
      }
    }
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章