當您編寫模板時,可能需要配置一組關聯參數。如果其中一個參數的取值不同,可能需要配置的關聯參數也不同。本文以計費方式為例,為您介紹如何在計費方式為訂用帳戶時動態呈現訂用帳戶的單位和時間長度。
模板文法
您可以在參數中指定AssociationProperty和對應的AssociationPropertyMetadata,以便在指定計費方式下動態呈現對應參數。其中,AssociationPropertyMetadata需定義Visible欄位,欄位中使用函數定義參數是否呈現,具體如下:
Visible:
Condition: Object #呈現當前參數時所依賴的條件。
Condition支援的函數和樣本如下:
Fn::Equals:
"Fn::Equals": ['${targetInstanceChargeType}', "PostPaid"]
。Fn::Not:
"Fn::Not": ${condition}
。Fn::And:
"Fn::And": [${condition1}, ${condition2}, ...]
。Fn::Or:
"Fn::Or": [${condition1}, ${condition2}, ...]
。
模板樣本
在以下樣本中,AssociationProperty表示計費方式,AssociationPropertyMetadata表示對不同參數添加篩選條件,以便在建立資源時進行參數篩選。
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 單一實例自訂鏡像模板樣本,支援建立基礎資源配置(VPC、VSwitch、SecurityGroup)或者選擇已有基礎資源配置,並支援配置ECS的計費方式為訂用帳戶或者隨用隨付。
en: This template supports single-instance with custom image, including scenarios using existing or creating new VPC, VSwitch, SecurityGroup and creating ECS by prepaid or postpaid model.
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: Valid values when PeriodUnit is set to Week: 1, 2, 3, and 4. Valid values when PeriodUnit is set to Month: 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, and 60.'
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
參數說明:
targetInstanceChargeType:計費方式。AssociationProperty取值為ChargeType,表示根據計費方式的取值篩選。
targetPeriodUnit:訂用帳戶計費方式的時間長度單位。AssociationPropertyMetadata取值為
{"Visible": {"Condition": {"Fn::Not": {"Fn::Equals": ["${targetInstanceChargeType}","PostPaid"]}}}}
,表示targetInstanceChargeType取值不為PostPaid時,呈現targetPeriodUnit。說明targetInstanceChargeType取值為PrePaid或PostPaid。
targetPeriod:購買訂用帳戶資源的時間長度。AssociationPropertyMetadata取值為
{"Visible": {"Condition": {"Fn::Not": {"Fn::Equals": ["${targetInstanceChargeType}","PostPaid"]}}}}
,表示targetInstanceChargeType取值不為PostPaid時,呈現targetPeriod。
控制台配置項
當您使用模板樣本建立資源棧時,如果計費方式為訂用帳戶,ROS控制台將呈現如下關聯參數。