Todos os produtos
Search
Central de documentação

Resource Orchestration Service:Gerar um modelo a partir de um cenário de recursos

Última atualização: Jul 03, 2026

Use um cenário de importação de recursos no Resource Orchestration Service (ROS) para gerar um modelo com base em recursos existentes e modifique-o para implantação em lote.

Casos de uso

Para implantar uma aplicação web, aplique a tag app:web em todos os recursos relacionados para filtrá-los durante a importação. Após gerar o modelo, adicione parâmetros para torná-lo reutilizável e crie uma stack para implantar em lote os seguintes recursos:

  • Uma VPC

  • Um vSwitch

  • Um grupo de segurança

  • Duas instâncias ECS

  • Uma instância SLB

Batch deployment

Etapa 1: Criar recursos e adicionar tags

Crie os recursos necessários nos respectivos consoles e adicione a tag app:web (chave da tag app, valor da tag web). O que são tags?

Nota

Para recursos existentes, basta adicionar as tags.

  1. No console VPC, crie uma VPC e um vSwitch e adicione a tag app:web a eles.

    Criar uma VPC. Adicionar tags a uma VPC.

    Nota

    Para adicionar uma tag a um vSwitch, siga o mesmo procedimento da VPC. Clique em Tag na coluna Tags do vSwitch desejado.

  2. No console ECS, crie um grupo de segurança para uma VPC, defina Network como a VPC criada na Etapa 1 e adicione a tag app:web.

  3. Crie duas instâncias ECS e adicione a tag app:web.

    1. Selecione a VPC e o vSwitch da Etapa 1.

    2. Selecione o grupo de segurança da Etapa 2.

    3. Configure outros parâmetros das instâncias ECS.

    4. Adicione a tag app:web às instâncias ECS.

  4. No console SLB, crie uma instância SLB (este exemplo usa uma instância Application Load Balancer) e adicione a tag app:web.

    1. Crie a instância SLB e selecione a VPC criada na Etapa 1.

    2. Crie um grupo de servidores de back-end e adicione as duas instâncias ECS da Etapa 3.

    3. Configure um listener e defina a resolução DNS conforme necessário.

    4. Adicione a tag app:web à instância SLB.

Etapa 2: Criar um cenário de importação de recursos

Crie um cenário de importação de recursos para filtrar os recursos da Etapa 1: Criar recursos e adicionar tags.

  1. Faça login no console ROS.

  2. No painel de navegação à esquerda, clique em Scenarios.

  3. Na lista suspensa de regiões na barra de navegação superior, selecione a região do cenário de recursos.

  4. Na página Scenarios, clique em Create Scenario.

  5. Na caixa de diálogo Create Scenario, insira uma descrição para o cenário e selecione Resource Management como tipo de cenário.

  6. Defina o escopo dos recursos.

    1. Na seção Method, selecione Source Tag.

    2. Na seção Source Tag, defina Tag Key como app e Tag Value como web.

    No campo Description, insira web-app. Clique em Generate Scenario.

  7. Defina a opção Delete Resource do cenário de recursos como Retain.

    Nota

    Selecione Retain para preservar os recursos existentes quando a stack for excluída.

  8. Clique em Create.

    Após a criação do cenário de recursos, o Status muda para Created.

Etapa 3: Gerar um modelo

  1. Na página Scenarios, clique em Create Template no canto superior direito.

  2. Na página de gerenciamento do cenário de recursos, clique em Create Template no canto superior direito.

O modelo aceita os formatos JSON e YAML. O exemplo a seguir usa YAML.

Conteúdo completo do modelo

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSInstance_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: false
      VSwitchId:
        Ref: ECSVSwitch_001
      VpcId:
        Ref: ECSVPC_001
      Tags:
        - Value: web
          Key: app
      SystemDiskSize: 40
      HostName: iZbp11ut2d6rr7gg78a****
      SystemDiskCategory: cloud_essd
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId: cn-hangzhou-i
      InstanceName: launch-advisor-2022****
      InstanceType: ecs.g7.large
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSInstance_002:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: false
      VSwitchId:
        Ref: ECSVSwitch_001
      VpcId:
        Ref: ECSVPC_001
      Tags:
        - Value: web
          Key: app
      SystemDiskSize: 40
      HostName: iZbp11ut2d6rr7gg78a****
      SystemDiskCategory: cloud_essd
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId: cn-hangzhou-i
      InstanceName: launch-advisor-2022****
      InstanceType: ecs.g7.large
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSSecurityGroup_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: ECSVPC_001
      Description: web-sg
      SecurityGroupName: web-sg
      Tags:
        - Value: web
          Key: app
      SecurityGroupIngress:
        - PortRange: 1/65535
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 80/80
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 443/443
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 22/22
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 3389/3389
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: '-1/-1'
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: icmp
          SourcePortRange: '-1/-1'
      SecurityGroupType: normal
    DependsOn:
      - ECSVPC_001
  ECSVPC_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 172.16.0.0/12
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
  ECSVSwitch_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: web-vsw
      VpcId:
        Ref: ECSVPC_001
      Description: web-vsw
      Tags:
        - Value: web
          Key: app
      ZoneId: cn-hangzhou-i
      CidrBlock: 172.16.0.0/24
    DependsOn:
      - ECSVPC_001
  SLBBackendServerAttachment_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::BackendServerAttachment
    Properties:
      BackendServers:
        - ServerId:
            Ref: ECSInstance_002
          Type: ecs
          Weight: 100
        - ServerId:
            Ref: ECSInstance_001
          Type: ecs
          Weight: 100
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
    DependsOn:
      - SLBLoadBalancer_001
      - ECSInstance_001
      - ECSInstance_002
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      DeletionProtection: false
      VpcId:
        Ref: ECSVPC_001
      AddressIPVersion: ipv4
      Tags:
        - Value: web
          Key: app
      SupportPrivateLink: true
      PayType: PayOnDemand
      SlaveZoneId: cn-hangzhou-h
      AddressType: intranet
      VSwitchId:
        Ref: ECSVSwitch_001
      LoadBalancerName: web-app-slb
      InternetChargeType: paybytraffic
      LoadBalancerSpec: slb.s1.small
      MasterZoneId: cn-hangzhou-i
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001

Descrição do modelo

A estrutura básica do modelo é a seguinte:

ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
Resources: {} # A list of resources.
  • ROSTemplateFormatVersion: Versão da sintaxe do modelo. O valor é fixo em 2015-09-01.

  • Resources: Lista de recursos, incluindo propriedades e dependências. Esta lista inclui os recursos da Etapa 1: Criar recursos e adicionar tags:

    • Uma VPC: ECSVPC_001.

    • Um vSwitch: ECSVSwitch_001.

    • Um grupo de segurança: ECSSecurityGroup_001.

    • Duas instâncias ECS: ECSInstance_001 e ECSInstance_002, referidas coletivamente como ECSInstance_00X.

    • Uma instância SLB, que inclui SLBLoadBalancer_001 e SLBBackendServerAttachment_001.

    A figura a seguir mostra a arquitetura de recursos.

    Architecture diagram

Etapa 4: Tornar o modelo reutilizável

O modelo gerado contém valores de propriedades de recursos codificados rigidamente, provenientes da Etapa 1: Criar recursos e adicionar tags. Para tornar o modelo reutilizável, substitua valores fixos, como zonas de disponibilidade e tipos de instância, por parâmetros e adicione saídas.

Antes

ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
Resources: {} # A list of resources.

Depois

ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
Description: {} # Describes the use case and architecture of the template.
Parameters: {} # Customized parameters extracted from hard-coded values.
Resources: {} # A list of resources.
Outputs: {} # Returns information such as resource properties. You can retrieve the output content from the console or by calling an API operation.

Mapeamento entre propriedades de recursos e parâmetros

Nome do recurso

Propriedades a parametrizar

Saídas a adicionar

VPC: ECSVPC_001

Bloco CIDR da VPC (VpcCidrBlock)

Nenhuma

vSwitch: ECSVSwitch_001

ID da zona de disponibilidade (ZoneId)

Nenhuma

Bloco CIDR do vSwitch (VSwitchCidrBlock)

Grupo de segurança: ECSSecurityGroup_001

Nenhuma

Nenhuma

Instância ECS: ECSInstance_00X

ID da zona de disponibilidade (ZoneId)

ID da instância ECS (InstanceId)

Tipo de instância ECS (ECSInstanceType)

Categoria do disco do sistema ECS (SystemDiskCategory)

Instância SLB: SLBLoadBalancer_001

ID da zona de disponibilidade primária (MasterZoneId)

Endereço IP da instância SLB (IpAddress)

ID da zona de disponibilidade de backup (SlaveZoneId)

Especificação da instância SLB (LoadBalancerSpec)

Modificação do modelo

VPC: ECSVPC_001

  • Extraia o bloco CIDR da VPC (VpcCidrBlock) para Parameters.

  • Use Ref para definir CidrBlock com o valor de VpcCidrBlock da seção Parameters.

Antes

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVPC_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 172.16.0.0/12

Depois

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcCidrBlock:
    Type: String
    Label: VPC IPv4 CIDR block
    Description: The IPv4 address range of the VPC.
    Default: 172.16.0.0/12
Resources:
  ECSVPC_001:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
Nota

Outras propriedades de ECSVPC_001: ALIYUN::ECS::VPC.

vSwitch: ECSVSwitch_001

  • Extraia o ID da zona de disponibilidade (ZoneId) e o bloco CIDR do vSwitch (VSwitchCidrBlock) para Parameters.

  • Use Ref para definir o parâmetro ZoneId, que referencia o valor do parâmetro ZoneId na seção Parameters.

  • Use Ref para definir o parâmetro CidrBlock e referenciar o valor de VSwitchCidrBlock em Parameters.

Antes

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VpcId:
        Ref: ECSVPC_001
      ZoneId: cn-hangzhou-i
      CidrBlock: 172.16.0.0/24
    DependsOn:
      - ECSVPC_001

Depois

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::ZoneId
    Description: The ID of the availability zone.
    Label: Availability Zone
  VSwitchCidrBlock:
    Type: String
    Label: vSwitch CIDR Block
    Description: Must be a subnet of the VPC.
    Default: 172.16.0.0/24
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      CidrBlock:
        Ref: VSwitchCidrBlock
      VpcId:
        Ref: ECSVPC_001
      ZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSVPC_001
Nota
  • AssociationProperty recupera dinamicamente os recursos disponíveis na região selecionada. AssociationPropertyMetadata adiciona condições de filtro para configuração dinâmica de parâmetros. Definir AssociationProperty de ZoneId como ALIYUN::ECS::ZoneId preenche uma lista suspensa de zonas de disponibilidade. AssociationPropertyMetadata.

  • DependsOn garante que um recurso seja criado somente após suas dependências. Por exemplo, ECSVSwitch_001 é criado após ECSVPC_001.

  • Outras propriedades de ECSVSwitch_001: ALIYUN::ECS::VSwitch.

Instância ECS: ECSInstance_00X

  • Extraia o ID da zona de disponibilidade (ZoneId), o tipo de instância ECS (ECSInstanceType) e a categoria do disco do sistema ECS (SystemDiskCategory) para a seção Parameters para usá-los como parâmetros.

  • Use Ref para definir o parâmetro ZoneId e referenciar o valor de ZoneId na seção Parameters.

  • Use Ref para definir o parâmetro InstanceType, referenciando o valor de ECSInstanceType em Parameters.

  • Use Ref para definir o parâmetro SystemDiskCategory, que referencia o valor de SystemDiskCategory em Parameters.

Antes

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVSwitch_001: ''
  ECSVPC_001: ''
  ECSSecurityGroup_001: ''
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      ZoneId: cn-hangzhou-i
      InstanceType: ecs.g7.large
      SystemDiskCategory: cloud_essd
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001

Depois

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  ECSInstanceType:
    Type: String
    Description: Specify an instance type that is available in the selected availability zone.
    Label: Instance Type
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: The category of the system disk.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ZoneId
      InstanceType: ECSInstanceType
    Label: System Disk Category
Resources:
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      SystemDiskCategory:
        Ref: SystemDiskCategory
      InstanceType:
        Ref: ECSInstanceType
      ZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
Nota
  • Definir o AssociationProperty de ECSInstanceType como ALIYUN::ECS::Instance::InstanceType preenche uma lista suspensa com os tipos de instância ECS disponíveis na região atual.

  • AssociationPropertyMetadata filtra os resultados. Neste caso, ZoneId limita os resultados aos tipos de instância disponíveis na zona especificada.

  • Definir o AssociationProperty de SystemDiskCategory como ALIYUN::ECS::Disk::SystemDiskCategory lista os tipos de disco do sistema disponíveis. AssociationPropertyMetadata filtra por ZoneId.

  • Outras propriedades de ECSInstance_00X: ALIYUN::ECS::Instance.

Instância SLB: SLBLoadBalancer_001

  • Extraia o ID da zona de disponibilidade primária (MasterZoneId), o ID da zona de disponibilidade de backup (SlaveZoneId) e a especificação da instância SLB (LoadBalancerSpec) para a seção Parameters para usá-los como parâmetros.

  • Use Ref para definir o parâmetro MasterZoneId, referenciando em Parameters o valor de ZoneId.

  • Use Ref para definir o parâmetro SlaveZoneId, que referencia o valor de SlaveZoneId em Parameters.

  • Use Ref para definir o parâmetro LoadBalancerSpec, referenciando o valor de LoadBalancerSpec em Parameters.

Antes

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001: ''
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      MasterZoneId: cn-hangzhou-i
      SlaveZoneId: cn-hangzhou-h
      LoadBalancerSpec: slb.s1.small
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001

Depois

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  SlaveZoneId:
    Type: String
    Description: The ID of the backup availability zone.
    Label: SLB Backup Zone
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: The specification of the SLB instance.
    Label: Specification
    AssociationPropertyMetadata:
      ZoneId: ZoneId
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001: ''
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      LoadBalancerName: web-app-slb
      LoadBalancerSpec:
        Ref: LoadBalancerSpec
      SlaveZoneId:
        Ref: SlaveZoneId
      MasterZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001
Nota
  • AssociationProperty recupera os recursos disponíveis na região selecionada. AssociationPropertyMetadata adiciona condições de filtro para configuração dinâmica de parâmetros.

  • Definir o AssociationProperty de ZoneId como ALIYUN::ECS::ZoneId preenche uma lista suspensa de zonas de disponibilidade.

  • Definir o AssociationProperty de LoadBalancerSpec como ALIYUN::SLB::Instance::InstanceType preenche uma lista suspensa de especificações SLB. AssociationPropertyMetadata.

  • Outras propriedades de SLBLoadBalancer_001: ALIYUN::SLB::LoadBalancer.

Saída: Endereço IP da instância SLB

Outros valores de retorno: ALIYUN::SLB::LoadBalancer.

Outputs:
  SLBListenerIpAddress:
    Description: The IP address of the load balancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

Saída: IDs das instâncias ECS

Outros valores de retorno: ALIYUN::ECS::Instance.

Outputs:
  ECSInstance_001:
    Description: The instance ID of the created ECS instance.
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: The instance ID of the created ECS instance.
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId

Modelo reutilizável

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Description: The ID of the availability zone.
    Label: Availability Zone
  SlaveZoneId:
    Type: String
    Description: The ID of the backup availability zone.
    Label: SLB Backup Zone
  VpcCidrBlock:
    Type: String
    Label: VPC IPv4 CIDR Block
    Description: The IPv4 address range of the VPC.
    Default: 172.16.0.0/12
  VSwitchCidrBlock:
    Type: String
    Label: vSwitch CIDR Block
    Description: Must be a subnet of the VPC.
    Default: 172.16.0.0/24
  ECSInstanceType:
    Type: String
    Description: The instance type of the ECS instance.
    Label: Instance Type
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: The category of the system disk.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ZoneId
      InstanceType: ECSInstanceType
    Label: System Disk Category
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: The specification of the SLB instance.
    Label: SLB Specification
    AssociationPropertyMetadata:
      ZoneId: ZoneId
    Default: slb.s1.small
Resources:
  ECSVPC_001:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: web-vsw
      VpcId:
        Ref: ECSVPC_001
      Description: web-vsw
      Tags:
        - Value: web
          Key: app
      ZoneId:
        Ref: ZoneId
      CidrBlock:
        Ref: VSwitchCidrBlock
    DependsOn:
      - ECSVPC_001
  ECSSecurityGroup_001:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: ECSVPC_001
      Description: web-sg
      SecurityGroupName: web-sg
      Tags:
        - Value: web
          Key: app
      SecurityGroupIngress:
        - PortRange: 80/80
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 443/443
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 22/22
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
      SecurityGroupType: normal
    DependsOn:
      - ECSVPC_001
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: true
      SystemDiskCategory:
        Ref: SystemDiskCategory
      VpcId:
        Ref: ECSVPC_001
      Description: web-ecs
      Tags:
        - Value: web
          Key: app
      VSwitchId:
        Ref: ECSVSwitch_001
      SystemDiskSize: 40
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId:
        Ref: ZoneId
      InstanceName: web-ecs002
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSInstance_002:
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: true
      SystemDiskCategory:
        Ref: SystemDiskCategory
      VpcId:
        Ref: ECSVPC_001
      Description: web-ecs
      Tags:
        - Value: web
          Key: app
      VSwitchId:
        Ref: ECSVSwitch_001
      SystemDiskSize: 40
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId:
        Ref: ZoneId
      InstanceName: web-ecs001
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  SLBListener_001:
    Type: ALIYUN::SLB::Listener
    Properties:
      AclStatus: 'off'
      Protocol: tcp
      Description: tcp_80
      HealthCheck:
        Interval: 2
        HealthyThreshold: 3
        Switch: 'on'
        UnhealthyThreshold: 3
        HealthCheckType: tcp
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
      ListenerPort: 80
      Bandwidth: -1
      BackendServerPort: 80
      Scheduler: tch
      StartListener: true
      Persistence:
        PersistenceTimeout: 0
    DependsOn:
      - SLBLoadBalancer_001
  SLBLoadBalancer_001:
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      DeletionProtection: false
      VpcId:
        Ref: ECSVPC_001
      AddressIPVersion: ipv4
      Tags:
        - Value: web
          Key: app
      SupportPrivateLink: true
      PayType: PayOnDemand
      AddressType: intranet
      VSwitchId:
        Ref: ECSVSwitch_001
      LoadBalancerName: web-slb
      InternetChargeType: paybytraffic
      LoadBalancerSpec:
        Ref: LoadBalancerSpec
      MasterZoneId:
        Ref: ZoneId
      SlaveZoneId:
        Ref: SlaveZoneId
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001
  SLBBackendServerAttachment_001:
    Type: ALIYUN::SLB::BackendServerAttachment
    Properties:
      BackendServers:
        - ServerId:
            Ref: ECSInstance_001
          Type: ecs
          Weight: 100
        - ServerId:
            Ref: ECSInstance_002
          Type: ecs
          Weight: 100
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
    DependsOn:
      - SLBLoadBalancer_001
      - ECSInstance_001
      - ECSInstance_002
Outputs:
  ECSInstance_001:
    Description: The instance ID of the created ECS instance.
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: The instance ID of the created ECS instance.
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId
  SLBListenerIpAddress:
    Description: The IP address of the load balancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

(Opcional) Etapa 5: Implantar recursos em lote

Use o modelo reutilizável para criar uma stack e implantar recursos em lote.

  1. No console ROS, use o modelo reutilizável da Etapa 4: Tornar o modelo reutilizável para criar uma stack. Na página Configure Template Parameters, defina parâmetros como Availability Zone (por exemplo, China (Hangzhou) Zone I), SLB Backup Zone, VPC IPv4 CIDR Block (por exemplo, 172.16.0.0/12) e vSwitch CIDR Block. Em seguida, selecione um Instance Type, como ecs.c7.large (uma instância otimizada para computação c7 com 2 vCPUs e 4 GiB de memória).

  2. Na página de detalhes da stack, clique em Parameter para visualizar detalhes sobre os recursos implantados.