概览

在创建和执行模板时,使用参数(Parameters)可提高模板灵活性和可复用性。

定义参数

根据模板的需要,您可以在模板(Template)中的Parameters字段内定义参数,包括参数名、参数描述和参数类型、默认值以及校验规则等。

参数语法

Parameters:
  parameter-name-1: # 参数名,有效字符为[a-zA-Z0-9\_-],不允许有空格。建议采用首字母小写的骆驼式风格,如instanceId。
    Type: String # 可选,类型,支持List, Number, String, Boolean, Json。默认: String
    Description: description # 可选,描述,描述参数的用途
    AssociationProperty: DateTime # 可选,此处可以指定某些类型参数的属性,效果是会更便于您创建执行时设置参数。一旦对参数指定了某属性,当创建执行设置参数时,控制台中该参数输入框将不再是一个简单的参数框,而会变为更易于输入参数的展示形式,比如变为一个下拉框,下拉框中包含参数的可选项,或者变为可选择时间的tab或者代码编辑框等。假如该参数目的是想获得一个InstanceType,则可以指定属性为ALIYUN::ECS::Instance::InstanceType,那么设置参数parameter-name-1时,输入该参数的位置则会展示一个下拉框,下拉框包含所有可选择的InstanceType;如果该参数目的是想获得几行的shell,那么一个小小的参数输入框可能不太便于您输入shell,此时则可以指定属性为Code,当设置参数时,该参数的位置将是一个代码编辑框。当前支持的属性包括ALIYUN::ECS::Instance::InstanceType、ALIYUN::ECS::SecurityGroup::SecurityGroupId、ALIYUN::VPC::VSwitch::VSwitchId、ALIYUN::ECS::Image::ImageId、Targets、RateControl、Code、DateTime、Cron、TimeZone ;当然如果您指定属性同时想细粒度定义属性也是可以的,通过如下AssociationPropertyMetadata关键字既可实现,比如属性指定为DateTime,那么您可通过在AssociationPropertyMetadata关键字中定义时间日期格式,来确定您最终设置该参数的展示形式。
    AssociationPropertyMetadata:
      Format: 'YYYY-MM-DDThh:mm:ssZ'   # 对AssociationProperty展示属性的形式进行具体定义,定义该关键字后,参数parameter-name-1的展示形式将是经筛选后符合AssociationPropertyMetadata定义的形式,比如经Format: 'YYYY-MM-DDThh:mm:ssZ'进一步定义后,时间tab将是可选日期+时间的形式进行展示;若本关键字值为Format: hh:mm:ssZ,那么时间tab则将只是可选时间的形式展示。
    Default: default-value # 可选,默认值,参数的默认值
    AllowedValues: # 可选,包含参数允许值的列表。
      - value1
      - value2
    AllowedPattern: regular-expression # 可选,参数的值必须匹配的正则表达式,适用于String
    MinLength: 1 # 可选,参数值的最小长度(即参数值长度 = MinLength),适用于String
    MaxLength: 10 # 可选,参数值的最大长度(即参数值长度 = MaxLength),适用于String
{
  "Parameters": {
    "parameter-name-1": {
      "Type": "String",
      "Description": "description",
      "AssociationProperty": "DateTime",
      "AssociationPropertyMetadata": {
        "Format": "YYYY-MM-DDThh:mm:ssZ"
      },
      "Default": "default-value",
      "AllowedValues": [
        "value1",
        "value2"
      ],
      "AllowedPattern": "regular-expression",
      "MinLength": 1,
      "MaxLength": 10
    }
  }
}

引用参数

在Tasks字段的属性内您可以引用上述定义的参数。引用的语法如下:

"some text {{ parameter_name }} some text {{parameter_name_2}} ..."                

举例如下:

注意,因为YAML的语法特点,引用参数时,需要在英文半角的双引内进行。

"{{ parameter-name }}" # 直接引用
"this is the {{ parameter-name }}" # 在一个固定的字符串中引用
"hello {{ parameter-last-name }} {{ parameter-first-name }}" # 在一个固定的字符串中引用多个参数

伪参数

为了方便获取执行中的执行环境等信息,OOS提供了伪参数,这些参数您无需定义即可直接使用。目前支持的伪参数如下,如您需要更多的伪参数,请开工单联系我们并提供您的使用场景,我们将尽快反馈和支持。

名称

类型

用途

示例

ACS::TemplateName

String

执行使用的模板名称

test

ACS::ExecutionId

String

执行ID

exec-2123445567

ACS::RegionId

String

执行所在地域

cn-hangzhou

ACS::AccountId

String

执行所在的账号

1234567890****

ACS::TaskLoopItem

String

代表Loop的items中被迭代的元素

i-bpzxcvb1234****

ACS::OOSUtilVersion

String

OOS代理版本

1.01

ACS::CurrentDate

String

当前UTC日期

2020-12-29T

ACS::CurrentUTCTime

String

当前UTC时间

2020-12-29T10:00:30Z

ACS::ExecuteUser

String

触发执行的RAM用户名称

zhangsan

ACS::ExecuteUserType

String

触发执行的RAM类型

RamRole或RamUser或AlibabaCloudAccount