本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

局部變數(Locals)

更新時間:2024-11-01 20:08

您在建立模板時,使用局部變數(Locals)可以有效地對常用的功能邏輯或值計算規則進行抽象與封裝,提升模板的可維護性和一致性,同時減少了代碼冗餘。

文法

Locals由變數名稱以及變數屬性群組成。

  • 變數名稱必須為英文字母、數字,並且在同一個模板中不能與其他局部變數、參數名以及資源名稱重複。

  • 局部變數屬性如下表所示。

    局部變數屬性

    必須

    描述

    局部變數屬性

    必須

    描述

    Type

    局部變數的資料類型。取值:

    • Macro(預設值):宏替換,不會計算局部變數的實際值,直接進行宏替換。

    • Eval:值計算,計算局部變數的實際值,然後進行值替換。

    • 資料來源資源類型:資料來源資源(DataSource)用於查詢雲端服務的資源資料,查詢後的資料只能被局部變數使用,如Type: DATASOURCE::VPC::Vpcs

    Value

    局部變數的值,在Macro和Eval類型下,Value是必填的。

    Properties

    資料來源資源的屬性。

說明

在使用局部變數Locals時,存在以下限制:

  • 嵌套資源棧不支援使用Locals。

  • Locals支援嵌套使用,最多支援5層嵌套。

  • 只支援 Ref 引用局部變數,不支援 ${LocalName} 引用的方式。

  • Locals進行值計算時,設定的值只能引用參數(Parameters)和局部變數(Locals),支援使用函數。

參數(Parameters)和局部變數(Locals)的區別:Parameters是外部輸入,用於接收使用者或環境的配置,而Locals是內部計算的,用於在ROS配置內部儲存和複用值。

樣本

宏替換(Macro)

  1. 定義一個局部變數Description,並在建立VPC資源時,將這個值作為資源的Description屬性。這種方式可以提高模板的可維護性和一致性,同時減少代碼冗餘。

    ROSTemplateFormatVersion: 2015-09-01
    Locals:
      Description:
        Value: test
    Resources:
      Vpc:
        Type: ALIYUN::ECS::VPC
        Properties:
          Description:
             Ref: Description
  2. 定義了局部變數VpcCount,它的值是通過Fn::AddFunction Compute得出的,即參數P1和P2的值相加的結果。這些變數在模板內部使用,但不是由使用者直接提供的。

    ROSTemplateFormatVersion: 2015-09-01
    Parameters:
      P1:
        Type: Number
        Default: 1
      P2:
        Type: Number
        Default: 2
    Locals:
      VpcCount:
        Value:
          Fn::Add:
            - Ref: P1
            - Ref: P2
    Resources:
      Vpc:
        Type: ALIYUN::ECS::VPC
        Count: 
          Ref: VpcCount

值計算(Eval)

在本樣本中,局部變數Vpcs為資料來源資源,用來查詢VpcNametest的資料,並通過計算局部變數CreateVpc的值來判斷是否建立VPC資源。

ROSTemplateFormatVersion: "2015-09-01"
Locals:
  Vpcs:
    Type: DATASOURCE::VPC::Vpcs
    Properties:
      VpcName: test
  CreateVpc:
    Type: Eval
    Value:
      Fn::Equals:
        - Fn::Length:
            Ref: Vpcs
        - 0
Conditions:
  CreateVpc:
    Ref: CreateVpc
Resources:
  Vpc:
    Condition: CreateVpc
    Type: ALIYUN::ECS::VPC
  • 本頁導讀 (1, M)
  • 文法
  • 樣本
  • 宏替換(Macro)
  • 值計算(Eval)
文檔反饋
phone 聯絡我們

立即和Alibaba Cloud在線服務人員進行交談,獲取您想了解的產品信息以及最新折扣。

alicare alicarealicarealicare