全部產品
Search
文件中心

Resource Orchestration Service:Fn::MergeMapToList

更新時間:Jun 19, 2024

調用內建函式Fn::MergeMapToList,將多個Map合并成一個以Map為元素的列表。

函式宣告

  • JSON

    {
      "Fn::MergeMapToList": [
        {
          "key_1": ["key_1_item_1", "key_1_item_2", ...]
        },
        {
          "key_2": ["key_2_item_1", "key_2_item_2", ...],
        },
        ...
      ]
    }
  • YAML

    • 完整函數的文法。

      Fn::MergeMapToList:
        - key_1:
            - key_1_item_1
            - key_1_item_2
            - ...
        - key_2:
            - key_2_item_1
            - key_2_item_2
            - ...
        - ...
    • 縮寫形式。

      !MergeMapToList [{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]}, ...]

參數資訊

[{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]},...]:將要合并的源列表,列表中包含多個Map,每個Map的Value都必須是一個列表。

合并規則:

  1. 分別取源列表中每個Map中的Key和第一個Value,放入合并後列表的第一個Map中。

  2. 再分別取源列表中每個Map中的Key和第二個Value,放入合并後列表的第二個Map中;以此類推。

  3. 最終合并後的列表長度是由源列表中Map的最大Value的長度決定。如果存在源列表中Map的Value長度不一致時,會重複取Value長度較小的列表的最後一個元素, 使最終合并之後列表中每個Map的元素個數都一樣。

傳回值

以合并後的Map為元素的列表。

使用樣本

  • 合并三個Map,每個Map中索引值對應的列表長度一致。

    Fn::MergeMapToList:
      - key_1:
          - key_1_item_1
          - key_1_item_2
      - key_2:
          - key_2_item_1
          - key_2_item_2
      - key_3:
          - key_3_item_1
          - key_3_item_2

    合并結果如下:

    - key_1: key_1_item_1
      key_2: key_2_item_1
      key_3: key_3_item_1
    - key_1: key_1_item_2
      key_2: key_2_item_2
      key_3: key_3_item_2
  • 合并三個Map,每個Map中索引值對應的列表長度不一致。

    Fn::MergeMapToList:
      - key_1:
          - key_1_item_1
          - key_1_item_2
      - key_2:
          - key_2_item_1
          - key_2_item_2
          - key_2_item_3
      - key_3:
          - key_3_item_1
          - key_3_item_2

    合并結果如下:

    - key_1: key_1_item_1
      key_2: key_2_item_1
      key_3: key_3_item_1
    - key_1: key_1_item_2
      key_2: key_2_item_2
      key_3: key_3_item_2
    - key_1: key_1_item_2
      key_2: key_2_item_3
      key_3: key_3_item_2

完整樣本

以下模板樣本中,把WebServer中建立的所有執行個體,都加入到一個負載平衡的虛擬伺服器組中。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  WebServer:
    Type: ALIYUN::ECS::InstanceGroupClone
    Properties:
      SourceInstanceId: i-xxxxx
      Password: Hello****
      MinAmount: 1
      MaxAmount: 1
  CreateVServerGroup:
    Type: ALIYUN::SLB::VServerGroup
    Properties:
      LoadBalancerId: lb-****
      VServerGroupName: VServerGroup-****
      BackendServers:
        !MergeMapToList
          - Port:
              - 6666
              - 9090
              - 8080
          - ServerId: !GetAtt WebServer.InstanceIds
          - Weight:
              - 20
              - 100

支援的函數