文档

计算巢服务模板实例规格与可用区约束

更新时间:

服务商在编写服务ROS模板时,大部分场景中,模板均涉及实例规格、可用区等内容。由于每个地域的实例规格有库存和是否可用的限制,因此服务商在编写模板时,若未加入实例规格、可用区等限制将会导致用户在创建服务实例时出现无库存或当前可用区无法使用实例等问题。本文以在模板中定义ECS实例规格和可用区为例,介绍如何正确加入相关的约束限制,使用户在创建服务时选到的规格一定是有库存、可用的,从而保证用户在创建服务实例时一定成功。

规则介绍

模板约束规则

编写模板时,模板中主要定义了需要创建的资源(Resources)、创建资源时需要输入的参数(Parameters)和创建完成后输出的参数(Outputs)这三个模板要素。

  1. 在模板Parameters中,针对ECS实例的InstanceType参数配置中指定AssociationProperty以获取所选地域下对应的资源,指定AssociationpropertyMetadata对不同参数添加筛选条件。以便在用户创建服务实例时,动态选择参数配置。更多信息,请参见AssociationProperty和AssociationPropertyMetadata1.png

  2. Metadata中,设置模板Parameters中配置项在控制台创建页面的展示顺序。2.png

    如上图所示,在Metadata参数中实例规格配置放置在可用区配置前,因此创建服务实例时,将先展示实例规格后展示可用区,且选择实例规格后,可用区将自动调整可选内容(即可用区参数受实例规格约束);反之如果先展示可用区后展示实例规格,则选择可用区后,实例规格会自动调整(即通过可用区限制实例规格)。

    未选择实例规格时,可用区展示如下:2023-07-12_14-55-07.png

    已选择实例规格后,可用区展示如下:

    2023-07-12_14-58-12.png

    如上图所示,通过选择不同的实例规格,限制了可选的可用区。

套餐约束规则

套餐功能同样具备约束能力,但与模板规则约束有一定的区别。套餐的展示顺序与套餐中参数在Metadata中定义的展示顺序有关,若套餐中任意一个参数在Metadata中定义的展示顺序为第一个,那么套餐中其它参数无论在Metadata中定义的展示顺序是什么,都会与顺序在前的参数保持一致。

例如,套餐参数中的付费类型在Metadata中定义的展示顺序为第一个,实例类型在Metadata中定义的展示顺序为最后一个,若将实例类型加入到套餐参数中,那么实例类型参数也会跟随套餐参数展示在第一顺序。示例如下。

  1. 在该模板的Metadata中,付费类型配置与可用区配置在实例规格配置之前。

    Metadata:
      ALIYUN::ROS::Interface:
        ParameterGroups:
         - Parameters:
         	- PayType
    			- PayPeriodUnit
    			- PayPeriod
    	 Label:
    	   default:
    		 en: PayType Configuration
             zh-cn: 付费类型配置
         - Parameters:
         	- ZoneId
    		 Label:
    		   default:
    			 zh-cn: 可用区配置
                 en: Zone Configuration
                ……
         - Parameters:
         	- EcsInstanceType
    		 Label:
    		  default:
    			 zh-cn: ECS实例规格配置
                 en: ECS Instance Type Configuration
  2. 在创建服务时,配置套餐,将实例类型和付费类型设置为套餐参数并选中下方的支持自定义套餐2023-07-12_18-00-14.png

  3. 在创建服务实例界面中,选择自定义套餐并设置套餐中的实例类型,然后选择可用区。

    虽然实例类型在Metadata定义的展示顺序为最后一个,但由于其为套餐参数,且套餐参数中付费类型在Metadata中的展示顺序为第一个,因此所有套餐参数就被选为第一个参数,连带着实例类型参数也被放置到第一个。

    由于本模板中可用区的展示顺序在实例类型之前,因此按逻辑应该是可用区约束实例类型,但由于套餐原因实例类型可以先于可用区选择,因此会出现如下情况。

    • 若实例规格在已选择的可用区中,自定义套餐中的实例类型不变。如下图所示。5.png

    • 若实例规格不在已选择的可用区中,自定义套餐中的实例类型为空。2023-07-12_18-13-10.png

    如上图所示,由于该模板是可用区约束实例类型,虽然套餐中选择了实例类型,但是不生效,待选择可用区之后,计算巢会校验实例类型,发现选择的ecs.g6a.large不在可用区B中,因此自定义套餐的实例规格变为空。

    如果希望通过实例类型约束可用区,则可将原有模板的Metadata中配置项的顺序设置为:付费类型、实例类型、可用区,即可实现实例规格约束可用区。

    如果希望可用区限制实例类型,Metadata中配置项的顺序应调整为:可用区、付费类型、实例类型,即可实现可用区限制套餐和实例类型。

  • 本页导读 (0)
文档反馈