Anda dapat menampilkan atau menyembunyikan parameter templat secara kondisional berdasarkan nilai parameter lain. Misalnya, unit periode dan periode langganan hanya ditampilkan ketika metode penagihan diatur ke subscription.
Sintaksis templat
Untuk mengontrol visibilitas suatu parameter berdasarkan nilai parameter lain, tentukan AssociationProperty dan AssociationPropertyMetadata. Di dalam AssociationPropertyMetadata, definisikan bidang Visible yang menggunakan fungsi untuk menentukan apakah parameter tersebut ditampilkan. Sintaksisnya adalah sebagai berikut:
Visible:
Condition: Object # Kondisi untuk menampilkan parameter ini.
Bidang Condition mendukung fungsi-fungsi berikut:
Contoh templat
Pada contoh ini, AssociationProperty diatur pada parameter targetInstanceChargeType agar menjadi parameter pengendali untuk metode penagihan. Selanjutnya, AssociationPropertyMetadata digunakan pada parameter yang bergantung untuk menentukan kondisi visibilitasnya, sehingga memungkinkan penyaringan parameter secara dinamis selama pembuatan stack.
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 单实例自定义镜像模板示例,支持创建基础资源配置(VPC、VSwitch、SecurityGroup)或者选择已有基础资源配置,并支持配置ECS的计费方式为包年包月或者按量付费。
en: An example template for creating a single ECS instance from a custom image. You can either create new base resources (VPC, VSwitch, security group) or use existing ones. Supports both subscription and pay-as-you-go billing methods for the ECS instance.
Parameters:
targetInstanceChargeType:
Description:
name-en: targetInstanceChargeType
name-zh-cn: 计费方式
Type: String
AssociationProperty: ChargeType
targetPeriodUnit:
Description:
name-en: The unit of the subscription period
name-zh-cn: 包年包月计费方式的时长单位
Type: String
AllowedValues:
- Week
- Month
Default: Month
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${targetInstanceChargeType}
- PostPaid
targetPeriod:
Description:
name-en: The subscription period of the instance
name-zh-cn: 购买包年包月资源的时长
en: 'Valid values: 1, 2, 3, and 4 if PeriodUnit is Week. 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, and 60 if PeriodUnit is Month.'
zh-cn: 取值:PeriodUnit取值为Week时:1、2、3、4。PeriodUnit取值为Month时:1、2、3、4、5、6、7、8、9、12、24、36、48、60。
Type: Number
AllowedValues:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 12
- 24
- 36
- 48
- 60
Default: 1
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${targetInstanceChargeType}
- PostPaid
Parameter:
targetInstanceChargeType: Metode penagihan.AssociationPropertydiatur keChargeType, sehingga visibilitas parameter lain bergantung pada nilai parameter ini.targetPeriodUnit: Unit periode.AssociationPropertyMetadatadiatur ke{"Visible": {"Condition": {"Fn::Not": {"Fn::Equals": ["${targetInstanceChargeType}","PostPaid"]}}}}. Kondisi ini menampilkan parametertargetPeriodUnithanya jikatargetInstanceChargeTypetidak diatur kePostPaid.Catatan Parameter targetInstanceChargeType menerima nilai PrePaid untuk metode penagihan subscription dan PostPaid untuk metode penagihan pay-as-you-go.targetPeriod: Periode langganan.AssociationPropertyMetadatadiatur ke{"Visible": {"Condition": {"Fn::Not": {"Fn::Equals": ["${targetInstanceChargeType}","PostPaid"]}}}}. Kondisi ini menampilkan parametertargetPeriodhanya jikatargetInstanceChargeTypetidak diatur kePostPaid.
Konfigurasi di konsol
Saat membuat stack dari templat ini dengan metode penagihan subscription, konsol ROS menampilkan parameter dependen berikut: PeriodUnit (dengan opsi Week atau Month) dan Subscription period. Jika PeriodUnit diatur ke Week, nilai yang valid untuk periode langganan adalah 1, 2, 3, dan 4. Jika PeriodUnit diatur ke Month, nilai yang valid adalah 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, dan 60.