Mostre ou oculte parâmetros de modelo condicionalmente conforme o valor de outro parâmetro. Por exemplo, exiba a unidade de período e o período de assinatura apenas quando o método de faturamento for assinatura.
Sintaxe do modelo
Especifique AssociationProperty e AssociationPropertyMetadata para um parâmetro e controle sua visibilidade com base no valor de outro parâmetro. Em AssociationPropertyMetadata, defina um campo Visible que utilize uma função para determinar a exibição do parâmetro. A sintaxe é:
Visible:
Condition: Object # Condition to display this parameter.
O campo Condition aceita as seguintes funções:
Exemplo de modelo
Neste exemplo, AssociationProperty está definido no parâmetro targetInstanceChargeType para torná-lo o parâmetro de controle do método de faturamento. Além disso, AssociationPropertyMetadata é usado nos parâmetros dependentes para definir as condições de visibilidade. Isso permite filtrar parâmetros dinamicamente durante a criação da pilha.
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
Parâmetros:
targetInstanceChargeType: método de faturamento.AssociationPropertyestá definido comoChargeType, portanto, a visibilidade dos demais parâmetros depende deste valor.-
targetPeriodUnit: unidade de período.AssociationPropertyMetadataestá definido como{"Visible": {"Condition": {"Fn::Not": {"Fn::Equals": ["${targetInstanceChargeType}","PostPaid"]}}}}. Essa condição exibe o parâmetrotargetPeriodUnitapenas setargetInstanceChargeTypenão forPostPaid.NotaO parâmetro targetInstanceChargeType aceita PrePaid para o método de faturamento por assinatura e PostPaid para pagamento conforme o uso.
targetPeriod: período de assinatura.AssociationPropertyMetadataestá definido como{"Visible": {"Condition": {"Fn::Not": {"Fn::Equals": ["${targetInstanceChargeType}","PostPaid"]}}}}. Tal configuração torna o parâmetrotargetPeriodvisível somente quandotargetInstanceChargeTypedifere dePostPaid.
Configuração no console
Ao criar uma pilha com este modelo usando o método de faturamento por assinatura, o console ROS exibe os seguintes parâmetros dependentes: PeriodUnit (com opções Week ou Month) e Subscription period. Se PeriodUnit for Week, os valores válidos para o período de assinatura são 1, 2, 3 e 4. Já para PeriodUnit igual a Month, os valores válidos são 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48 e 60.