Tous les produits
Search
Centre de documentation

Resource Orchestration Service:Generate a template from a resource scenario

Dernière mise à jour :Aug 10, 2026

Utilisez un scénario d'importation de ressources dans Resource Orchestration Service (ROS) pour générer un modèle à partir de ressources existantes, puis modifiez-le pour un déploiement par lot.

Cas d'utilisation

Pour déployer une application web, attribuez le tag app:web à toutes les ressources associées afin de les filtrer lors de l'importation des ressources. Après avoir généré un modèle, ajoutez-y des paramètres pour le rendre réutilisable, puis créez une pile pour déployer par lot les ressources suivantes :

  • Un VPC

  • Un vSwitch

  • Un groupe de sécurité

  • Deux instances ECS

  • Une instance SLB

Batch deployment

Étape 1 : Créer des ressources et ajouter des tags

Créez les ressources requises dans leurs consoles respectives et ajoutez le tag app:web (clé de tag app, valeur de tag web). Qu'est-ce que les tags ?

Remarque

Pour les ressources existantes, il vous suffit d'ajouter des tags.

  1. Dans la console VPC, créez un VPC et un vSwitch, et ajoutez-leur le tag app:web.

    Créer un VPC. Ajouter des tags à un VPC.

    Remarque

    Pour ajouter un tag à un vSwitch, suivez la même procédure que pour un VPC. Cliquez sur l'icône Tag dans la colonne Tags du vSwitch cible.

  2. Dans la console ECS, créez un groupe de sécurité pour un VPC, définissez Network sur le VPC que vous avez créé à l'étape Étape 1, et ajoutez le tag app:web.

  3. Créez deux instances ECS et ajoutez le tag app:web.

    1. Sélectionnez le VPC et le vSwitch créés à l'étape Étape 1.

    2. Sélectionnez le groupe de sécurité créé à l'étape Étape 2.

    3. Configurez les autres paramètres des instances ECS.

    4. Ajoutez le tag app:web aux instances ECS.

  4. Dans la console SLB, créez une instance SLB (cet exemple utilise une instance Application Load Balancer) et ajoutez le tag app:web.

    1. Créez l'instance SLB et sélectionnez le VPC créé à l'étape Étape 1.

    2. Créez un groupe de serveurs backend et ajoutez les deux instances ECS créées à l'étape Étape 3.

    3. Configurez un écouteur et mettez en place la résolution DNS selon vos besoins.

    4. Ajoutez le tag app:web à l'instance SLB.

Étape 2 : Créer un scénario de ressource

Créez un scénario d'importation de ressources pour filtrer les ressources issues de l'Étape 1 : Créer des ressources et ajouter des tags.

  1. Connectez-vous à la console ROS.

  2. Dans le volet de navigation de gauche, cliquez sur Scenarios.

  3. Dans la liste déroulante des régions située dans la barre de navigation supérieure, sélectionnez la région du scénario de ressource.

  4. Sur la page Scenarios, cliquez sur Create Scenario.

  5. Dans la boîte de dialogue Create Scenario, saisissez une description pour le scénario et sélectionnez Resource Management comme type de scénario.

  6. Définissez la portée des ressources.

    1. Dans la section Method, sélectionnez Source Tag.

    2. Dans la section Source Tag, définissez Tag Key sur app et Tag Value sur web.

    Dans le champ Description, saisissez web-app. Cliquez sur Generate Scenario.

  7. Définissez l'option Delete Resource du scénario de ressource sur Retain.

    Remarque

    Sélectionnez Retain pour conserver les ressources existantes lors de la suppression de la pile.

  8. Cliquez sur Create.

    Une fois le scénario de ressource créé, son Status passe à Created.

Étape 3 : Générer un modèle

  1. Sur la page Scenarios, cliquez sur l'ID du scénario de ressource cible.

  2. Sur la page de gestion du scénario de ressource, cliquez sur Create Template dans le coin supérieur droit.

Le modèle prend en charge les formats JSON et YAML. L'exemple suivant utilise YAML.

Contenu complet du modèle

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

Description du modèle

Instructions

  1. Lisez l'anglais pour comprendre CE qui doit être communiqué

  2. Rédigez le français À PARTIR DE ZÉRO — oubliez la structure de phrase anglaise

  3. Conservez exactement tout le formatage markdown, les blocs de code, les liens et les images

  4. Balises xref (<a data-tag="xref" ...>texte</a>) — conservez la balise ENTIERE avec tous ses attributs dans l'ordre et la casse d'origine, traduisez SEULEMENT le texte visible entre > et

  5. Appliquez strictement toutes les règles spécifiques à la langue

  6. Appliquez les règles de stopwords avec une tolérance zéro

  7. Utilisez le mode impératif dans les étapes numérotées et les listes à puces procédurales

  8. Assurez la cohérence terminologique — même terme = même traduction partout

  9. Variez les débuts de phrase dans les listes/tableaux — aucun début répété 3 fois ou plus

  10. Renvoyez UNIQUEMENT le document markdown français, sans explication

    La structure de base du modèle se présente comme suit :

    ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
    Resources: {} # A list of resources.
    • ROSTemplateFormatVersion : version de la syntaxe du modèle. La valeur est fixée à 2015-09-01.

    • Resources : liste des ressources, incluant leurs propriétés et leurs dépendances. Cette liste comprend les ressources créées lors de l'étape Étape 1 : Créer des ressources et ajouter des tags :

      • Un VPC : ECSVPC_001.

      • Un vSwitch : ECSVSwitch_001.

      • Un groupe de sécurité : ECSSecurityGroup_001.

      • Deux instances ECS : ECSInstance_001 et ECSInstance_002, désignées collectivement par ECSInstance_00X.

      • Une instance SLB, qui comprend SLBLoadBalancer_001 et SLBBackendServerAttachment_001.

      Le schéma ci-dessous illustre l’architecture des ressources.

      Architecture diagram

Étape 4 : Rendre le modèle réutilisable

Le modèle généré inclut des valeurs codées en dur pour les propriétés des ressources, issues de l'Étape 1 : Créer des ressources et ajouter des tags. Pour rendre le modèle réutilisable, remplacez les valeurs codées en dur, telles que les zones de disponibilité et les types d'instance, par des paramètres, et ajoutez des sorties.

Avant

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

Après

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.
Remarque

Pour plus d'informations, consultez la section Syntaxe du modèle.

Correspondance entre les propriétés des ressources et les paramètres

Nom de la ressource

Propriétés à paramétrer

Sorties à ajouter

VPC : ECSVPC_001

Bloc CIDR du VPC (VpcCidrBlock)

Aucune

vSwitch : ECSVSwitch_001

ID de la zone de disponibilité (ZoneId)

Aucune

Bloc CIDR du vSwitch (VSwitchCidrBlock)

Groupe de sécurité : ECSSecurityGroup_001

Aucune

Aucune

Instance ECS : ECSInstance_00X

ID de la zone de disponibilité (ZoneId)

ID de l'instance ECS (InstanceId)

Type d'instance ECS (ECSInstanceType)

Catégorie du disque système ECS (SystemDiskCategory)

Instance SLB : SLBLoadBalancer_001

ID de la zone de disponibilité principale (MasterZoneId)

Adresse IP de l'instance SLB (IpAddress)

ID de la zone de disponibilité de secours (SlaveZoneId)

Spécification de l'instance SLB (LoadBalancerSpec)

Modification du modèle

VPC : ECSVPC_001

  • Extrayez le bloc CIDR du VPC (VpcCidrBlock) vers la section Parameters.

  • Utilisez Ref pour définir CidrBlock avec la valeur VpcCidrBlock de la section Parameters.

Avant

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

Après

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
Remarque

Pour les autres propriétés de ECSVPC_001, consultez la documentation ALIYUN::ECS::VPC.

vSwitch : ECSVSwitch_001

  • Extrayez l'ID de la zone de disponibilité (ZoneId) et le bloc CIDR du vSwitch (VSwitchCidrBlock) vers la section Parameters.

  • Utilisez Ref pour définir le paramètre ZoneId, qui fait référence à la valeur du paramètre ZoneId dans la section Parameters.

  • Utilisez Ref pour définir le paramètre CidrBlock et faites référence à la valeur de VSwitchCidrBlock dans la section Parameters.

Avant

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

Après

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
Remarque
  • La propriété AssociationProperty récupère dynamiquement les ressources disponibles dans la région sélectionnée. La propriété AssociationPropertyMetadata ajoute des conditions de filtrage pour la configuration dynamique des paramètres. En définissant AssociationProperty sur ALIYUN::ECS::ZoneId pour le paramètre ZoneId, vous remplissez une liste déroulante avec les zones de disponibilité disponibles. Pour plus d'informations, consultez la section AssociationPropertyMetadata.

  • La propriété DependsOn garantit qu'une ressource est créée uniquement après ses dépendances. Par exemple, ECSVSwitch_001 est créé après ECSVPC_001.

  • Pour les autres propriétés de ECSVSwitch_001, consultez la documentation ALIYUN::ECS::VSwitch.

Instance ECS : ECSInstance_00X

  • Extrayez l'ID de la zone de disponibilité (ZoneId), le type d'instance ECS (ECSInstanceType) et la catégorie du disque système ECS (SystemDiskCategory) vers la section Parameters afin de les transmettre en tant que paramètres.

  • Utilisez Ref pour définir le paramètre ZoneId et faites référence à la valeur de ZoneId dans la section Parameters.

  • Utilisez Ref pour définir le paramètre InstanceType, en faisant référence à la valeur de ECSInstanceType dans la section Parameters.

  • Utilisez Ref pour définir le paramètre SystemDiskCategory, qui fait référence à la valeur de SystemDiskCategory dans la section Parameters.

Avant

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

Après

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
Remarque
  • Définissez la propriété AssociationProperty de ECSInstanceType sur ALIYUN::ECS::Instance::InstanceType pour afficher une liste déroulante des types d'instance ECS disponibles dans la région actuelle.

  • La propriété AssociationPropertyMetadata permet de filtrer les résultats. Ici, ZoneId limite la sélection aux types d'instance disponibles dans la zone spécifiée.

  • Définissez la propriété AssociationProperty de SystemDiskCategory sur ALIYUN::ECS::Disk::SystemDiskCategory pour lister les types de disque système disponibles. La propriété AssociationPropertyMetadata applique un filtre basé sur ZoneId.

  • Autres propriétés de ECSInstance_00X : ALIYUN::ECS::Instance.

Instance SLB : SLBLoadBalancer_001

  • Extrayez l'ID de la zone de disponibilité principale (MasterZoneId), l'ID de la zone de disponibilité de secours (SlaveZoneId) et la spécification de l'instance SLB (LoadBalancerSpec) vers la section Parameters afin de les transmettre en tant que paramètres.

  • Utilisez Ref pour définir le paramètre MasterZoneId en référençant la valeur de ZoneId depuis la section Parameters.

  • Utilisez Ref pour définir le paramètre SlaveZoneId en référençant la valeur de SlaveZoneId depuis la section Parameters.

  • Utilisez Ref pour définir le paramètre LoadBalancerSpec en référençant la valeur de LoadBalancerSpec depuis la section Parameters.

Avant

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

Après

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
Remarque
  • La propriété AssociationProperty récupère les ressources disponibles dans la région sélectionnée. La propriété AssociationPropertyMetadata ajoute des conditions de filtrage pour la configuration dynamique des paramètres.

  • Définissez la propriété AssociationProperty de ZoneId sur ALIYUN::ECS::ZoneId pour afficher une liste déroulante des zones de disponibilité.

  • Définissez la propriété AssociationProperty de LoadBalancerSpec sur ALIYUN::SLB::Instance::InstanceType pour afficher une liste déroulante des spécifications SLB. Consultez AssociationPropertyMetadata.

  • Autres propriétés de SLBLoadBalancer_001 : ALIYUN::SLB::LoadBalancer.

Sortie : adresse IP de l'instance SLB

Autres valeurs de retour : ALIYUN::SLB::LoadBalancer.

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

Sortie : ID des instances ECS

Autres valeurs de retour : 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

Modèle réutilisable

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

(Facultatif) Étape 5 : Déployer les ressources par lots

Utilisez le modèle réutilisable pour créer une pile et déployer les ressources par lots.

  1. Dans la console ROS, utilisez le modèle réutilisable issu de l'Étape 4 : Rendre le modèle réutilisable pour créer une pile. Sur la page Configure Template Parameters, définissez des paramètres tels que Availability Zone (par exemple, China (Hangzhou) Zone I), SLB Backup Zone, VPC IPv4 CIDR Block (par exemple, 172.16.0.0/12) et vSwitch CIDR Block. Sélectionnez ensuite un Instance Type, tel que ecs.c7.large (une instance optimisée pour le calcul c7 dotée de 2 vCPU et de 4 Go de mémoire).

  2. Sur la page des détails de la pile, cliquez sur l'onglet Parameter pour consulter les détails des ressources déployées.