組み込み関数 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, ...]},...]: ソースマッピング。各ソースマッピングには値のリストが必要です。
この関数は、次のルールに基づいてソースマッピングを新しいマッピングリストにマージします。
各ソースマッピングのキーと最初の値を、新しいリストの最初のマッピングにマージします。
各ソースマッピングのキーと2番目の値を、新しいリストの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_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