All Products
Search
Document Center

Resource Orchestration Service:Buat templat dari skenario sumber daya

Last Updated:Jun 11, 2026

Gunakan skenario impor sumber daya di Resource Orchestration Service (ROS) untuk membuat templat dari sumber daya yang sudah ada, lalu modifikasi templat tersebut agar dapat diterapkan secara batch.

Kasus penggunaan

Untuk menerapkan aplikasi web, beri tag semua sumber daya terkait dengan app:web agar dapat difilter selama impor sumber daya. Setelah membuat templat, tambahkan parameter agar templat tersebut dapat digunakan kembali, lalu buat stack untuk menerapkan secara batch sumber daya berikut:

  • Satu VPC

  • Satu vSwitch

  • Satu security group

  • Dua Instance ECS

  • Satu Instance SLB

Batch deployment

Langkah 1: Buat sumber daya dan tambahkan tag

Buat sumber daya yang diperlukan di konsol masing-masing dan tambahkan tag app:web (kunci tag app, nilai tag web). Apa itu tag?

Catatan

Untuk sumber daya yang sudah ada, Anda hanya perlu menambahkan tag.

  1. Di Konsol VPC, buat VPC dan vSwitch, lalu tambahkan tag app:web ke keduanya.

    Buat VPC. Tambahkan tag ke VPC.

    Catatan

    Untuk menambahkan tag ke vSwitch, ikuti prosedur yang sama seperti pada VPC. Klik ikon Tag di kolom Tags untuk vSwitch yang dituju.

  2. Di Konsol ECS, buat security group untuk VPC, atur Network ke VPC yang Anda buat di Langkah 1, lalu tambahkan tag app:web.

  3. Buat dua Instance ECS dan tambahkan tag app:web.

    1. Pilih VPC dan vSwitch dari Langkah 1.

    2. Pilih security group dari Langkah 2.

    3. Konfigurasikan parameter lain untuk Instance ECS.

    4. Tambahkan tag app:web ke Instance ECS.

  4. Di Konsol SLB, buat Instance SLB (contoh ini menggunakan Instance Application Load Balancer) dan tambahkan tag app:web.

    1. Buat Instance SLB dan pilih VPC yang Anda buat di Langkah 1.

    2. Buat kelompok server backend dan tambahkan dua Instance ECS dari Langkah 3.

    3. Konfigurasikan listener dan atur resolusi DNS sesuai kebutuhan.

    4. Tambahkan tag app:web ke Instance SLB.

Langkah 2: Buat skenario impor sumber daya

Buat skenario impor sumber daya untuk memfilter sumber daya dari Langkah 1: Buat sumber daya dan tambahkan tag.

  1. Masuk ke Konsol ROS.

  2. Di panel navigasi sebelah kiri, klik Scenarios.

  3. Dari daftar drop-down wilayah di bilah navigasi atas, pilih wilayah untuk skenario sumber daya.

  4. Di halaman Scenarios, klik Create Scenario.

  5. Di kotak dialog Create Scenario, masukkan deskripsi untuk skenario dan pilih Resource Management sebagai tipe skenario.

  6. Tentukan cakupan sumber daya.

    1. Di bagian Method, pilih Source Tag.

    2. Di bagian Source Tag, atur Tag Key menjadi app dan Tag Value menjadi web.

    Di bidang Description, masukkan web-app. Klik Generate Scenario.

  7. Atur Delete Resource untuk skenario sumber daya menjadi Retain.

    Catatan

    Pilih Retain untuk mempertahankan sumber daya yang sudah ada saat stack dihapus.

  8. Klik Create.

    Setelah skenario sumber daya dibuat, Status-nya berubah menjadi Created.

Langkah 3: Buat templat

  1. Di halaman Scenarios, klik ID skenario sumber daya yang dituju.

  2. Di halaman manajemen skenario sumber daya, klik Create Template di pojok kanan atas.

Templat mendukung format JSON dan YAML. Contoh berikut menggunakan YAML.

Konten templat lengkap

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

Deskripsi templat

Struktur dasar templat adalah sebagai berikut:

ROSTemplateFormatVersion: '2015-09-01' # Versi sintaksis templat.
Resources: {} # Daftar sumber daya.
  • ROSTemplateFormatVersion: Versi sintaksis templat. Nilainya tetap 2015-09-01.

  • Resources: Daftar sumber daya, termasuk properti dan dependensinya. Daftar ini mencakup sumber daya dari Langkah 1: Buat sumber daya dan tambahkan tag:

    • Satu VPC: ECSVPC_001.

    • Satu vSwitch: ECSVSwitch_001.

    • Satu security group: ECSSecurityGroup_001.

    • Dua Instance ECS: ECSInstance_001 dan ECSInstance_002, yang secara kolektif disebut sebagai ECSInstance_00X.

    • Satu Instance SLB, yang mencakup SLBLoadBalancer_001 dan SLBBackendServerAttachment_001.

    Gambar berikut menunjukkan arsitektur sumber daya.

    Architecture diagram

Langkah 4: Jadikan templat dapat digunakan kembali

Templat yang dihasilkan mengkodekan nilai properti sumber daya dari Langkah 1: Buat sumber daya dan tambahkan tag secara langsung. Untuk menjadikannya dapat digunakan kembali, gantilah nilai-nilai yang dikodekan secara langsung—seperti zona ketersediaan dan tipe instans—dengan parameter, lalu tambahkan output.

Sebelum

ROSTemplateFormatVersion: '2015-09-01' # Versi sintaksis templat.
Resources: {} # Daftar sumber daya.

Sesudah

ROSTemplateFormatVersion: '2015-09-01' # Versi sintaksis templat.
Description: {} # Menjelaskan kasus penggunaan dan arsitektur templat.
Parameters: {} # Parameter kustom yang diekstraksi dari nilai yang dikodekan secara langsung.
Resources: {} # Daftar sumber daya.
Outputs: {} # Mengembalikan informasi seperti properti sumber daya. Anda dapat mengambil konten output dari konsol atau dengan memanggil operasi API.

Pemetaan antara properti sumber daya dan parameter

Nama sumber daya

Properti yang diparameterisasi

Output yang ditambahkan

VPC: ECSVPC_001

Blok CIDR VPC (VpcCidrBlock)

Tidak ada

vSwitch: ECSVSwitch_001

ID zona ketersediaan (ZoneId)

Tidak ada

Blok CIDR vSwitch (VSwitchCidrBlock)

Security group: ECSSecurityGroup_001

Tidak ada

Tidak ada

Instance ECS: ECSInstance_00X

ID zona ketersediaan (ZoneId)

ID Instance ECS (InstanceId)

Tipe Instance ECS (ECSInstanceType)

Kategori disk sistem ECS (SystemDiskCategory)

Instance SLB: SLBLoadBalancer_001

ID zona ketersediaan utama (MasterZoneId)

Alamat IP Instance SLB (IpAddress)

ID zona ketersediaan cadangan (SlaveZoneId)

Spesifikasi Instance SLB (LoadBalancerSpec)

Modifikasi templat

VPC: ECSVPC_001

  • Ekstrak blok CIDR VPC (VpcCidrBlock) ke bagian Parameters.

  • Gunakan Ref untuk mengatur CidrBlock ke nilai VpcCidrBlock di bagian Parameters.

Sebelum

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

Sesudah

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcCidrBlock:
    Type: String
    Label: Blok CIDR IPv4 VPC
    Description: Rentang alamat IPv4 untuk 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
Catatan

Properti lain ECSVPC_001: ALIYUN::ECS::VPC.

vSwitch: ECSVSwitch_001

  • Ekstrak ID zona ketersediaan (ZoneId) dan blok CIDR vSwitch (VSwitchCidrBlock) ke bagian Parameters.

  • Gunakan Ref untuk mendefinisikan parameter ZoneId, yang mereferensikan nilai parameter ZoneId di bagian Parameters.

  • Gunakan Ref untuk mendefinisikan parameter CidrBlock dan mereferensikan nilai VSwitchCidrBlock di Parameters.

Sebelum

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

Sesudah

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::ZoneId
    Description: ID zona ketersediaan.
    Label: Zona Ketersediaan
  VSwitchCidrBlock:
    Type: String
    Label: Blok CIDR vSwitch
    Description: Harus merupakan subnet dari 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
Catatan
  • AssociationProperty mengambil sumber daya yang tersedia secara dinamis di wilayah yang dipilih. AssociationPropertyMetadata menambahkan kondisi filter untuk konfigurasi parameter dinamis. Mengatur AssociationProperty untuk ZoneId ke ALIYUN::ECS::ZoneId akan mengisi daftar drop-down zona ketersediaan. AssociationPropertyMetadata.

  • DependsOn memastikan sumber daya dibuat hanya setelah dependensinya. Misalnya, ECSVSwitch_001 dibuat setelah ECSVPC_001.

  • Properti lain ECSVSwitch_001: ALIYUN::ECS::VSwitch.

Instance ECS: ECSInstance_00X

  • Ekstrak ID zona ketersediaan (ZoneId), tipe Instance ECS (ECSInstanceType), dan kategori disk sistem ECS (SystemDiskCategory) ke bagian Parameters agar dapat dilewatkan sebagai parameter.

  • Gunakan Ref untuk mendefinisikan parameter ZoneId dan mereferensikan nilai ZoneId di bagian Parameters.

  • Gunakan Ref untuk mendefinisikan parameter InstanceType, yang mereferensikan nilai ECSInstanceType di Parameters.

  • Gunakan Ref untuk mendefinisikan parameter SystemDiskCategory, yang mereferensikan nilai SystemDiskCategory di Parameters.

Sebelum

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

Sesudah

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  ECSInstanceType:
    Type: String
    Description: Tentukan tipe instans yang tersedia di zona ketersediaan yang dipilih.
    Label: Tipe Instans
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: Kategori disk sistem.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ZoneId
      InstanceType: ECSInstanceType
    Label: Kategori Disk Sistem
Resources:
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      SystemDiskCategory:
        Ref: SystemDiskCategory
      InstanceType:
        Ref: ECSInstanceType
      ZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
Catatan
  • Mengatur AssociationProperty dari ECSInstanceType ke ALIYUN::ECS::Instance::InstanceType akan mengisi daftar drop-down tipe Instance ECS di wilayah saat ini.

  • AssociationPropertyMetadata memfilter hasil. Di sini, ZoneId membatasi hasil ke tipe instans yang tersedia di zona tertentu.

  • Mengatur AssociationProperty dari SystemDiskCategory ke ALIYUN::ECS::Disk::SystemDiskCategory akan menampilkan jenis disk sistem yang tersedia. AssociationPropertyMetadata memfilter berdasarkan ZoneId.

  • Properti lain ECSInstance_00X: ALIYUN::ECS::Instance.

Instance SLB: SLBLoadBalancer_001

  • Ekstrak ID zona ketersediaan utama (MasterZoneId), ID zona ketersediaan cadangan (SlaveZoneId), dan spesifikasi Instance SLB (LoadBalancerSpec) ke bagian Parameters agar dapat dilewatkan sebagai parameter.

  • Gunakan Ref untuk mendefinisikan parameter MasterZoneId, yang mereferensikan di Parameters nilai ZoneId.

  • Gunakan Ref untuk mendefinisikan parameter SlaveZoneId, yang mereferensikan dari Parameters nilai SlaveZoneId.

  • Gunakan Ref untuk mendefinisikan parameter LoadBalancerSpec, yang mereferensikan nilai LoadBalancerSpec di Parameters.

Sebelum

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

Sesudah

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  SlaveZoneId:
    Type: String
    Description: ID zona ketersediaan cadangan.
    Label: Zona Cadangan SLB
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: Spesifikasi Instance SLB.
    Label: Spesifikasi
    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
Catatan
  • AssociationProperty mengambil sumber daya yang tersedia di wilayah yang dipilih. AssociationPropertyMetadata menambahkan kondisi filter untuk konfigurasi parameter dinamis.

  • Mengatur AssociationProperty dari ZoneId ke ALIYUN::ECS::ZoneId akan mengisi daftar drop-down zona ketersediaan.

  • Mengatur AssociationProperty dari LoadBalancerSpec ke ALIYUN::SLB::Instance::InstanceType akan mengisi daftar drop-down spesifikasi SLB. AssociationPropertyMetadata.

  • Properti lain SLBLoadBalancer_001: ALIYUN::SLB::LoadBalancer.

Output: Alamat IP Instance SLB

Nilai kembali lainnya: ALIYUN::SLB::LoadBalancer.

Outputs:
  SLBListenerIpAddress:
    Description: Alamat IP load balancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

Output: ID Instance ECS

Nilai kembali lainnya: ALIYUN::ECS::Instance.

Outputs:
  ECSInstance_001:
    Description: ID instans dari Instance ECS yang dibuat.
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: ID instans dari Instance ECS yang dibuat.
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId

Templat yang dapat digunakan kembali

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Description: ID zona ketersediaan.
    Label: Zona Ketersediaan
  SlaveZoneId:
    Type: String
    Description: ID zona ketersediaan cadangan.
    Label: Zona Cadangan SLB
  VpcCidrBlock:
    Type: String
    Label: Blok CIDR IPv4 VPC
    Description: Rentang alamat IPv4 untuk VPC.
    Default: 172.16.0.0/12
  VSwitchCidrBlock:
    Type: String
    Label: Blok CIDR vSwitch
    Description: Harus merupakan subnet dari VPC.
    Default: 172.16.0.0/24
  ECSInstanceType:
    Type: String
    Description: Tipe instans Instance ECS.
    Label: Tipe Instans
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: Kategori disk sistem.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ZoneId
      InstanceType: ECSInstanceType
    Label: Kategori Disk Sistem
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: Spesifikasi Instance SLB.
    Label: Spesifikasi SLB
    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: ID instans dari Instance ECS yang dibuat.
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: ID instans dari Instance ECS yang dibuat.
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId
  SLBListenerIpAddress:
    Description: Alamat IP load balancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

(Opsional) Langkah 5: Terapkan sumber daya secara batch

Gunakan templat yang dapat digunakan kembali untuk membuat stack dan menerapkan sumber daya secara batch.

  1. Di Konsol ROS, gunakan templat yang dapat digunakan kembali dari Langkah 4: Jadikan templat dapat digunakan kembali untuk membuat stack. Di halaman Configure Template Parameters, atur parameter seperti Availability Zone (misalnya, China (Hangzhou) Zona I), SLB Backup Zone, VPC IPv4 CIDR Block (misalnya, 172.16.0.0/12), dan vSwitch CIDR Block. Lalu, pilih Instance Type, seperti ecs.c7.large (instans komputasi-teroptimalkan c7 dengan 2 vCPU dan memori 4 GiB).

  2. Di halaman detail stack, klik tab Parameter untuk melihat detail sumber daya yang diterapkan.