すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:Fn::MergeMapToList (Alibaba Cloud ROS)

最終更新日:Jan 16, 2025

組み込み関数 Fn::MergeMapToList は、複数のマッピングを新しいマッピングリストにマージします。

宣言

  • JSON

    {
      "Fn::MergeMapToList": [
        {
          "key_1": ["key_1_item_1", "key_1_item_2", ...] // key_1
        },
        {
          "key_2": ["key_2_item_1", "key_2_item_2", ...], // key_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, ...]},...]: ソースマッピング。各ソースマッピングには値のリストが必要です。

この関数は、次のルールに基づいてソースマッピングを新しいマッピングリストにマージします。

  1. 各ソースマッピングのキーと最初の値を、新しいリストの最初のマッピングにマージします。

  2. 各ソースマッピングのキーと2番目の値を、新しいリストの2番目のマッピングにマージします。すべてのキーと値は同じルールに従います。

  3. 新しいリストのマッピングの数は、すべてのソースマッピングの中で、ソースマッピングの値の最大数に基づいて変化します。ソースマッピングの値の数が異なる場合、システムは短いソースマッピングの最後の値を繰り返し使用して、新しいリストの各マッピングの値の数が同じになるようにします。

戻り値

マージされたマッピングのリスト。

構文例

  • 次の例では、3つのソースマッピングがマージされます。各ソースマッピングの値の数は同じです。

    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
  • 次の例では、3つのソースマッピングがマージされます。ソースマッピングの値の数は異なります。

    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 で作成されたすべてのインスタンスが、サーバーロードバランサー(SLB)インスタンスのサーバーグループに追加されます。

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 // サーバーID
          - Weight: // 重み
              - 20
              - 100

サポートされている関数