全部產品
Search
文件中心

Resource Orchestration Service:概覽

更新時間:Feb 05, 2024

在建立模板時,使用參數(Parameters)可提高模板的靈活性和可複用性。建立資源棧時,可根據實際情況,替換模板中的某些參數值。

文法

每個參數由參數名稱和參數屬性群組成。參數名稱必須為英文字母、數字,並且在同一個模板中不能與其他參數名稱重複。可以用Label欄位來定義參數別名。

參數屬性如下表所示。

參數屬性

必須

描述

Type

參數的資料類型。取值:

  • String:字串。例如:"ecs.s1.medium"

  • Number:整數或浮點數。例如:3.14。

  • CommaDelimitedList:多個值組成的字串,用半形逗號(,)分隔,可通過Fn::Select函數索引值。例如:"80,foo,bar"

  • Json:一個JSON格式的字串。例如:{"foo": "bar"}[1, 2, 3]

  • Boolean:布爾值。例如:true或者false

  • ALIYUN::OOS::Parameter::Value:儲存在OOS參數倉庫中的普通參數。更多資訊,請參見普通參數。例如:my_image

  • ALIYUN::OOS::SecretParameter::Value:儲存在OOS參數倉庫中的加密參數。更多資訊,請參見加密參數。例如:my_password

說明

ALIYUN::OOS::Parameter::ValueALIYUN::OOS::SecretParameter::Value不支援AllowedPattern校正。

Default

在建立資源棧時,如果使用者沒有傳入模板中給出的指定值,ROS會檢查模板中是否定義預設值。如果已定義預設值,則使用預設值,否則報錯。

說明

預設值可以設定為null,表示該參數取值為空白並且忽略對該參數的驗證。

AllowedValues

包含參數允許取值的列表。

AllowedPattern

Regex,用於檢查使用者輸入的字串類型的參數是否匹配該Regex。如果使用者輸入的不是字串類型,則報錯。

如果使用以下特殊字元,需要在字元前輸入兩個反斜線(\\)進行轉義:

*.?+-$^[ ]( ){ }|\/
說明

短劃線(-)在緊挨邊界時無需轉義,例如:[a-z-]。

MaxLength

一個整數值,輸入的String型別參數值的最大長度。

MinLength

一個整數值,輸入的String型別參數值的最小長度。

MaxValue

一個數字值,允許Number類型使用的最大數字值。

MinValue

一個數字值,允許Number類型使用的最小數字值。

NoEcho

如果將值設定為true,則只輸出星號(*)。您可以在建立資源棧或查看資源棧時,查看是否輸出參數值。

Confirm

NoEcho取值為true時,參數是否需要二次輸入確認。預設值為false

說明

只有String類型的參數,且NoEcho取值為true時,Confirm可以為true

Description

描述參數的字串。取值:

  • zh-cn:使用中文對參數進行描述。

  • en:使用英文對參數進行描述。

說明

對應描述只在控制台的對應語言中體現。

ConstraintDescription

違反參數的約束條件時,說明對應參數約束條件的字串。

Label

參數別名,支援UTF-8字元。通過模板產生Web表單時,可映射為label

AssociationProperty

是Parameters的一個特性組件,用於自動驗證參數值的合法性,並且給參數提供可選值。

ROS支援的AssociationProperty及其樣本,請參見AssociationProperty和AssociationPropertyMetadata

AssociationPropertyMetadata

AssociationProperty定義約束條件,篩選出合格結果。

該屬性屬於Map類型。AssociationProperty對應的AssociationPropertyMetadata及其樣本,請參見AssociationProperty和AssociationPropertyMetadata

TextArea

參數是否支援換行。取值:

  • true:支援換行。

  • false(預設值):不支援換行。

例如:以下代碼錶示參數Content支援換行。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  Content:
    Type: String
    TextArea: true
Outputs:
  TestContent:
    Value:
      Ref: Content

Required

設定參數是否必填。取值:

  • true:參數必填,不可為空白。

  • false:參數非必填。

例如:以下代碼錶示參數ECSInstanceId是否顯示必填。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  CreateNewECS:
    Type: Boolean
    Label: 是否建立新的執行個體
    Default: false
  ECSInstanceId:
    Type: String
    Required: true  # 通過Required控制參數是否必填(前端效果)
    Default: Null
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${CreateNewECS}
            - false
說明

該參數僅在前端體現效果,並不影響參數的驗證。

Placeholder

支援參數輸入框自訂提示。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  Placeholder:
    Type: String
    Placeholder:
      en: Placeholder
      zh-cn: 中文 Placeholder

樣本:為Web應用建立資源棧

如果您想通過建立資源棧建立1個Web應用,其中包含1個Server Load Balancer執行個體、2個ECS執行個體和1個RDS執行個體。如果該Web應用負載較高,可以在建立資源棧時選擇高配的ECS執行個體;反之可以在建立資源棧時選擇低配的ECS執行個體。您可以按照如下樣本,在模板中定義ECS執行個體規格參數。

Parameters:
  InstanceType:
    Type: String
    AllowedValues:
      - ecs.t1.small
      - ecs.s1.medium
      - ecs.m1.medium
      - ecs.c1.large
    Default: ecs.t1.small
    Label: ECS規格類型
    Description: 請選擇建立ECS樣本的配置,預設為ecs.t1.small,可選ecs.t1.small, ecs.s1.medium, ecs.m1.medium,ecs.c1.large。

樣本中,定義的InstanceType參數允許使用者在使用模板建立資源棧時,對InstanceType進行重新賦值。如果使用者不設定參數值,則使用預設值:ecs.t1.small

在定義資源時,可以引用該參數:

Webserver:
  Type: ALIYUN::ECS::Instance
  InstanceType:
    Ref: InstanceType