资源编排支持通过定义AssociationPropertyMetadata实现参数之间的依赖关系。

依赖数组字符串

该示例模板中,Disk中的InstanceType属性依赖InstanceTypes中的某个示例规格。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  RegionId:
    Type: String
    AssociationProperty: RegionId
  InstanceTypes:
    Type: Json
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      Multiple: true
      RegionId: ${RegionId}
  Disk:
    Type: String
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      RegionId: ${RegionId}
      InstanceType: ${InstanceTypes.2}
AssociationPropertyMetadata参数说明:
  • RegionId:${RegionId}表示引用外层的RegionId
  • InstanceType:${InstanceTypes.2}表示引用InstanceTypes中选中的示例规格。

    其中InstanceTypes.2等价于InstanceTypes[2]

依赖对象属性

该示例模板中,InstanceTypes中的ZoneId依赖VSWObj对象中ZoneId属性的值。

ROSTemplateFormatVersion: '2015-09-01'
Description: ''
Parameters:
  RegionId:
    Type: String
    AssociationProperty: RegionId
  VSWObj:
    Type: Json
    AssociationPropertyMetadata:
      Parameters:
        ZoneId:
          Type: String
          AssociationProperty: ZoneId
          AssociationPropertyMetadata:
            AutoChangeType: false
            RegionId: ${RegionId}
        VSWId:
          Type: String
          AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
          AssociationPropertyMetadata:
            RegionId: ${RegionId}
            ZoneId: ${.ZoneId}
  InstanceTypes:
    Type: Json
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      Multiple: true
      RegionId: ${RegionId}
      ZoneIds: ${VSWObj.ZoneId}
AssociationPropertyMetadata参数说明:
  • RegionId:${RegionId}表示引用外层的RegionId
  • ZoneId:${.ZoneId}表示引用同级中的ZoneId
  • ZoneIds:${VSWObj.ZoneId}表示引用VSWObj中的ZoneId

依赖对象数组元素

  • 依赖对象数组的某个元素

    该示例模板中,InstanceTypes中的ZoneId依赖VSWObj中第一个ZoneId的值,同时,VSWObj中的VSWId依赖同级ZoneId的值。

    ROSTemplateFormatVersion: '2015-09-01'
    Description: ''
    Parameters:
      RegionId:
        Type: String
        AssociationProperty: RegionId
      VSWObj:
        Type: Json
        AssociationProperty: List[Parameters]
        AssociationPropertyMetadata:
          Parameters:
            ZoneId:
              Type: String
              AssociationProperty: ZoneId
              AssociationPropertyMetadata:
                AutoChangeType: false
                RegionId: ${RegionId}
            VSWId:
              Type: String
              AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
              AssociationPropertyMetadata:
                RegionId: ${RegionId}
                ZoneId: ${.ZoneId}
      InstanceTypes:
        Type: Json
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          Multiple: true
          RegionId: ${RegionId}
          ZoneId: ${VSWObj[0].ZoneId}
    AssociationPropertyMetadata参数说明:
    • RegionId:${RegionId}表示引用外层的RegionId
    • ZoneId:${.ZoneId}表示引用同级中的ZoneId
    • ZoneId:${VSWObj[0].ZoneId}表示引用VSWObj中第一个ZoneId的值。
  • 依赖对象数组的某组元素

    该示例模板中,InstanceTypes中的ZoneIds依赖VSWObj中选择的所有ZoneId的值。

    ROSTemplateFormatVersion: '2015-09-01'
    Description: ''
    Parameters:
      RegionId:
        Type: String
        AssociationProperty: RegionId
      VSWObj:
        Type: Json
        AssociationProperty: List[Parameters]
        AssociationPropertyMetadata:
          Parameters:
            ZoneId:
              Type: String
              AssociationProperty: ZoneId
              AssociationPropertyMetadata:
                AutoChangeType: false
                RegionId: ${RegionId}
            VSWId:
              Type: String
              AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
              AssociationPropertyMetadata:
                RegionId: ${RegionId}
                ZoneId: ${.ZoneId}
      InstanceTypes:
        Type: Json
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          Multiple: true
          RegionId: ${RegionId}
          ZoneIds: ${VSWObj[].ZoneId}
    AssociationPropertyMetadata参数说明:
    • RegionId:${RegionId}表示引用外层的RegionId
    • ZoneId:${.ZoneId}表示引用同级中的ZoneId
    • ZoneIds:${VSWObj[].ZoneId}表示引用VSWObj中所有ZoneId的值。