全部产品
Search
文档中心

Resource Orchestration Service:Gunakan sebuah modul

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan modul dan pertimbangan terkait penggunaannya.

Prasyarat

  • Jika Anda ingin menggunakan modul kustom, pastikan modul tersebut telah terdaftar di akun yang diinginkan. Untuk informasi lebih lanjut, lihat Buat modul kustom dan Lihat modul kustom.

  • Modul publik out-of-the-box yang disediakan oleh Resource Orchestration Service (ROS) dapat digunakan langsung. Untuk informasi lebih lanjut, lihat Lihat modul publik.

Tentukan konfigurasi untuk sebuah modul

Untuk menggunakan modul, perlakukan modul sebagai sumber daya dan lakukan langkah-langkah berikut:

  • Sertakan modul di bagian Resources dari template atau modul Anda.

  • Tentukan versi untuk modul.

  • Tentukan konfigurasi yang diperlukan untuk modul.

Tentukan versi untuk sebuah modul

Tentukan versi modul menggunakan Version. Nilai valid untuk Version adalah sebagai berikut:

  • Nilai kustom: Versi kustom modul dalam format v+Angka, misalnya v1 dan v10.

    Kami merekomendasikan menentukan nilai kustom untuk Version saat menggunakan modul publik.

  • default: Versi default modul.

    Versi default tetap tersedia selama modul tidak dihapus.

    Anda dapat menentukan versi default untuk modul kustom melalui API ROS atau konsol ROS. Untuk informasi lebih lanjut, lihat SetResourceType dan Ubah versi default dari sebuah modul.

    Kami merekomendasikan menyetel Version ke default saat menggunakan modul kustom.

  • latest: Versi terbaru modul.

    Versi terbaru tetap tersedia selama modul tidak dihapus.

    Versi terbaru berubah jika Anda membuat versi baru atau menghapus versi terbaru dari modul.

    Kami merekomendasikan menyetel Version ke latest saat mengembangkan atau men-debug modul.

Tentukan properti untuk sebuah modul

Parameter modul memungkinkan Anda meneruskan nilai kustom ke modul dari template atau modul yang menyertainya. Modul kemudian dapat menggunakan nilai-nilai tersebut untuk mengonfigurasi properti sumber daya atau modul anaknya. Jika parameter modul tidak ditentukan dan memiliki nilai default yang ditetapkan oleh Default, nilai default akan digunakan.

Tentukan properti modul dengan menggunakan parameter template

Anda dapat menentukan nilai kustom untuk parameter template dan menggunakannya untuk mengonfigurasi properti modul. Dengan cara ini, nilai kustom diteruskan ke modul. Untuk informasi lebih lanjut tentang mendefinisikan parameter template, lihat Parameters.

Contoh ini menggunakan template yang berisi sumber daya MODULE::My::VPC::SampleVpc dan parameter template VpcName. Parameter template VpcName digunakan untuk menentukan properti VpcName di dalam modul.

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcName:
    Description: Nama untuk vpc sampel Anda
    Type: String
Resources:
  MyVpc:
    Type: MODULE::My::VPC::SampleVpc
    Version: default
    Properties:
      VpcName:
        Ref: VpcName

Tentukan properti modul anak dari modul induk

Jika modul induk dan modul anak memiliki parameter yang sama, Anda dapat menentukan nilai parameter untuk modul anak dari modul induk.

Contoh ini menggunakan MODULE::My::VPC::SampleVpcPrivate sebagai modul anak. Di dalam modul, parameter VpcName dan CidrBlock digunakan untuk mengonfigurasi properti VpcName dan CidrBlock dari sumber daya ALIYUN::ECS::VPC. Kode contoh berikut menunjukkan konfigurasi modul anak:

ROSTemplateFormatVersion: '2015-09-01'
Description: Sebuah vpc sampel.
Parameters:
  VpcName:
    Description: Nama untuk vpc
    Type: String
  CidrBlock:
    Description: Blok CIDR untuk vpc
    Type: String
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName:
        Ref: VpcName
      CidrBlock:
        Ref: CidrBlock

Modul MODULE::My::VPC::SampleVpcPrivate bersarang di dalam modul MODULE::My::VPC::SampleVpc. Di dalam modul induk MODULE::My::VPC::SampleVpc, konfigurasi berikut ditambahkan untuk menentukan parameter modul anak. Kode contoh di bawah ini menunjukkan konfigurasi modul induk.

  • Parameter CidrBlock dari modul anak MODULE::My::VPC::SampleVpcPrivate disetel ke 192.168.0.0/16.

  • Untuk parameter VpcName, parameter modul didefinisikan. Dengan cara ini, Anda dapat menentukan nama VPC di dalam template atau modul yang berisi modul MODULE::My::VPC::SampleVpc.

ROSTemplateFormatVersion: '2015-09-01'
Description: Sebuah vpc sampel.
Parameters:
  VpcName:
    Description: Nama untuk vpc
    Type: String
Resources:
  MyVpc:
    Type: MODULE::My::VPC::SampleVpcPrivate
    Version: default
    Properties:
      VpcName:
        Ref: VpcName
      CidrBlock: 192.168.0.0/16

Tentukan batasan untuk parameter modul

Parameter modul tidak mendukung penegakan batasan. Untuk memeriksa batasan parameter modul, buat parameter template dengan batasan yang dikonfigurasi dan rujuk parameter template di parameter modul Anda.

Tentukan kondisi untuk sebuah modul

Kondisi modul ditentukan seperti kondisi sumber daya. Kondisi modul diteruskan ke semua sumber daya dan modul anak di dalam modul. Untuk informasi lebih lanjut tentang mendefinisikan kondisi, lihat Conditions.

Tentukan dependensi untuk sebuah modul

Dependensi modul ditentukan seperti dependensi sumber daya. Dependensi modul diteruskan ke semua sumber daya dan modul anak di dalam modul. Untuk informasi lebih lanjut tentang mendefinisikan dependensi, lihat DependsOn.

Tentukan kebijakan penghapusan untuk sebuah modul

Kebijakan penghapusan modul ditentukan seperti kebijakan penghapusan sumber daya. Kebijakan penghapusan modul diteruskan ke semua sumber daya dan modul anak yang terkandung di dalam modul dan tidak dikonfigurasi dengan kebijakan penghapusan. Untuk informasi lebih lanjut tentang mendefinisikan kebijakan penghapusan, lihat DeletionPolicy.

Rujuk konfigurasi sebuah modul

Rujuk sumber daya dalam sebuah modul

Anda dapat menggunakan nama logis lengkap untuk merujuk sumber daya yang terkandung dalam modul. Nama logis lengkap sumber daya dalam modul dibentuk dengan menggabungkan elemen-elemen berikut:

  • Elemen 1: Nama logis yang ditentukan untuk modul di dalam template atau modul yang berisi modul.

  • Elemen 2: Nama logis yang ditentukan untuk sumber daya di dalam modul.

Elemen-elemen dalam nama logis lengkap dipisahkan dengan titik (.). Contoh: ModuleLogicalName.ResourceLogicalName dan ParentModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName.

Dengan cara ini, Anda dapat menggunakan fungsi bawaan Fn::GetAtt, Ref, dan Fn::Sub untuk mengakses sumber daya di bagian Resources modul atau nilai properti dari sumber daya modul. Untuk informasi lebih lanjut, lihat Resources.

// Contoh Fn::GetAtt
GetAtt Example1:
  Fn::GetAtt:
    - ModuleLogicalName.ResourceLogicalName
    - AttributeName
GetAtt Example2:
  Fn::GetAtt:
    - ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName
    - AttributeName

// Contoh Ref
Ref Example1:
  Ref: ModuleLogicalName.ResourceLogicalName
Ref Example2:
  Ref: ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName

// Contoh Fn::Sub
Sub Example1:
  Fn::Sub: "${ModuleLogicalName.ResourceLogicalName}"
Sub Example2:
  Fn::Sub: "${ModuleLogicalName.ResourceLogicalName.AttributeName}"
Sub Example3:
  Fn::Sub: "${ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName}"
Sub Example4:
  Fn::Sub: "${ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName.AttributeName}"

Contoh ini menambahkan konfigurasi berikut:

  • Template merujuk properti sumber daya modul sebagai properti sumber daya di dalam template itu sendiri.

  • Template merujuk keluaran sumber daya modul sebagai keluaran di dalam template itu sendiri.

Sumber daya ALIYUN::ECS::VPC dengan nama logis Vpc terkandung di dalam modul MODULE::My::VPC::SampleVpc. Untuk menggunakan fungsi bawaan Ref untuk merujuk ID sumber daya dan fungsi bawaan Fn::GetAtt untuk merujuk keluaran sumber daya, gabungkan nama logis modul di dalam template dengan nama logis sumber daya di dalam modul untuk mendapatkan nama logis lengkap sumber daya. Dalam contoh ini, MyVpc digabungkan dengan Vpc untuk mendapatkan MyVpc.Vpc.

Catatan

Untuk mendapatkan nama logis sumber daya di dalam modul, Anda dapat melihat modul di konsol ROS. Untuk informasi lebih lanjut, lihat Lihat modul kustom dan Lihat modul publik.

Parameters:
  VpcName:
    Description: Nama untuk vpc sampel Anda
    Type: String
Resources:
  MyVpc:
    Type: MODULE::My::VPC::SampleVpc
    Version: default
    Properties:
      VpcName:
        Ref: VpcName
  MyVsw:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VpcId:
        Ref: MyVpc.Vpc
      CidrBlock: 192.168.1.0/24
      ZoneId:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
      VSwitchName: sample_vsw
Outputs:
  VpcId:
    Value:
      Fn::GetAtt:
        - MyVpc.Vpc
        - VpcId

Rujuk keluaran dalam sebuah modul

Anda dapat memperlakukan modul sebagai sumber daya dan keluaran modul sebagai properti sumber daya, serta menggunakan fungsi bawaan Fn::GetAtt dan Fn::Sub untuk mengakses keluaran yang terkandung di dalam modul. Untuk informasi lebih lanjut, lihat Outputs.

// Contoh Fn::GetAtt
GetAtt Example1:
  Fn::GetAtt:
    - ModuleLogicalName
    - OutputName
GetAtt Example2:
  Fn::GetAtt:
    - ModuleLogicalName.ChildModuleLogicalName
    - OutputName

// Contoh Fn::Sub
Sub Example1:
  Fn::Sub: "${ModuleLogicalName.OutputName}"
Sub Example2:
  Fn::Sub: "${ModuleLogicalName.ChildModuleLogicalName.OutputName}"

Rujuk kondisi dalam sebuah modul

Anda dapat memperlakukan modul sebagai namespace untuk mendapatkan nama lengkap modul, serta menggunakan fungsi bawaan Fn::If, Fn::Or, Fn::And, dan Fn::Not untuk mengakses kondisi yang terkandung di dalam modul. Untuk informasi lebih lanjut, lihat Conditions.

// Contoh Fn::If
If Example1:
  Fn::If:
    - ModuleLogicalName.ConditionName
    - Nilai untuk true
    - Nilai untuk false
If Example2:
  Fn::If:
    - ModuleLogicalName.ChildModuleLogicalName.ConditionName
    - Nilai untuk true
    - Nilai untuk false

// Contoh Fn::Or
Or Example:
  Fn::Or:
    - ModuleLogicalName.ConditionName
    - ModuleLogicalName.ChildModuleLogicalName.ConditionName

// Contoh Fn::And
And Example:
  Fn::And:
    - ModuleLogicalName.ConditionName
    - ModuleLogicalName.ChildModuleLogicalName.ConditionName

// Contoh Fn::Not
Not Example1:
  Fn::Not: ModuleLogicalName.ConditionName
Not Example2:
  Fn::Not: ModuleLogicalName.ChildModuleLogicalName.ConditionName

Rujuk pemetaan dalam sebuah modul

Anda dapat memperlakukan modul sebagai namespace untuk mendapatkan nama lengkap modul, serta menggunakan fungsi bawaan Fn::FindInMap untuk mengakses pemetaan yang terkandung di dalam modul. Untuk informasi lebih lanjut, lihat Mappings.

// Contoh Fn::FindInMap
FindInMap Example1:
  Fn::FindInMap:
    - ModuleLogicalName.MappingName
    - Key
    - SubKey
FindInMap Example2:
  Fn::FindInMap:
    - ModuleLogicalName.ChildModuleLogicalName.MappingName
    - Key
    - SubKey

Bergantung pada sumber daya dalam sebuah modul

Untuk bergantung pada sumber daya yang terkandung dalam modul, gunakan nama logis lengkap sumber daya tersebut.

Resource1:
  DependsOn: ModuleLogicalName.ResourceLogicalName
Resource2:
  DependsOn: ModuleLogicalName.ChildModuleLogicalName.ResourceLogicalName

Bergantung pada sebuah modul

Jika sumber daya bergantung pada modul atau modul bergantung pada modul lain, semua sumber daya di dalam modul yang bergantung dan modul anak dari modul yang bergantung bekerja sebagai dependensi dari sumber daya atau modul. Untuk bergantung pada modul, gunakan nama logis lengkap modul.

Resource1:
  DependsOn: ModuleLogicalName
Resource2:
  DependsOn: ModuleLogicalName.ChildModuleLogicalName

Pertimbangan

Berikut adalah pertimbangan untuk menggunakan modul:

  • Modul gratis. Anda hanya dikenakan biaya untuk sumber daya yang diselesaikan dari modul ke tumpukan.

  • Jika template berisi modul, batasan berikut diberlakukan pada template:

    • Nama parameter tidak boleh berisi kombinasi titik dan titik dua (.:).

    • Nama logis sumber daya tidak boleh berisi titik (.).

    • Nama keluaran tidak boleh berisi titik (.).

    • Nama kondisi tidak boleh berisi ampersand (&).

    • Bagian Transform dan Workspace tidak dapat ditambahkan ke template.

    • Bagian Metadata dan Count tidak dapat ditambahkan ke modul.

    • Nama logis lengkap sumber daya dan modul, serta nama lengkap kondisi dan pemetaan harus unik.

  • Kuota ROS, seperti jumlah maksimum sumber daya yang diizinkan dalam tumpukan dan ukuran maksimum file template, berlaku untuk template yang diproses tanpa memperhatikan apakah sumber daya dalam template dibuat dari modul. Untuk informasi lebih lanjut, lihat Limits.

  • Tag dan grup sumber daya yang dikonfigurasikan untuk tumpukan akan disebarkan ke setiap sumber daya tumpukan yang dibuat dari modul.

  • Data di bagian Metadata dan Rules dari modul diabaikan saat template diproses.

  • Referensi dinamis tidak diselesaikan saat modul diproses. Referensi dinamis diselesaikan ketika sumber daya tunggal dibuat atau diperbarui selama operasi tumpukan. Untuk informasi lebih lanjut tentang referensi dinamis, lihat Langkah 2: Buat template ROS.

  • Keluaran di dalam modul tidak disebarkan ke keluaran di dalam template. Anda dapat membuat keluaran template dan merujuknya di keluaran modul. Untuk informasi lebih lanjut, lihat Rujuk keluaran sebuah modul.

  • Parameter di dalam modul tidak disebarkan ke parameter di dalam template. Anda dapat membuat parameter template dan merujuknya di parameter modul. Untuk informasi lebih lanjut, lihat Tentukan properti modul dengan menggunakan parameter template.

  • Jika Anda mengubah versi default dari modul untuk mana Version disetel ke default, tidak ada operasi pembaruan tumpukan yang dimulai.

    Namun, waktu berikutnya Anda menggunakan template yang berisi modul untuk melakukan operasi tumpukan, seperti pembaruan tumpukan, ROS menggunakan versi default baru selama operasi.

  • Jika Anda membuat versi baru untuk modul atau menghapus versi terbaru dari modul untuk mana Version disetel ke latest, tidak ada operasi pembaruan tumpukan yang dimulai.

    Namun, waktu berikutnya Anda menggunakan template yang berisi modul untuk melakukan operasi tumpukan, ROS menggunakan versi terbaru baru selama operasi.

  • Selama operasi tumpukan, ROS menggunakan modul yang terdaftar di akun saat ini, termasuk modul yang bersarang di modul lain.

    Jika Anda menggunakan modul yang memiliki beberapa versi yang diterapkan di beberapa akun, hasil yang berbeda dikembalikan ke akun meskipun Anda menggunakan template yang sama.

  • Untuk memastikan konsistensi, jika Anda ingin menyertakan modul dalam template tumpukan untuk menggunakan modul untuk grup tumpukan, Anda harus menggunakan modul yang sama di semua akun tempat Anda ingin menerapkan instans tumpukan. Ini mencakup modul yang bersarang di modul lain. Untuk informasi lebih lanjut, lihat Grup tumpukan.

    Catatan

    Jika Anda ingin memperluas modul di akun tempat grup tumpukan milik, pilih Whether to Expand Modules in Current Account di konsol ROS saat membuat atau memperbarui grup tumpukan.