La fonction Fn::MergeMapToList fusionne plusieurs mappages sources en une liste de mappages, en combinant les valeurs par position.
Déclaration
-
JSON
{ "Fn::MergeMapToList": [ { "key_1": ["key_1_item_1", "key_1_item_2", ...] }, { "key_2": ["key_2_item_1", "key_2_item_2", ...], }, ... ] } -
YAML
-
Syntaxe du nom complet de la fonction :
Fn::MergeMapToList: - key_1: - key_1_item_1 - key_1_item_2 - ... - key_2: - key_2_item_1 - key_2_item_2 - ... - ... -
Syntaxe de la forme courte :
!MergeMapToList [{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]}, ...]
-
Paramètres
[{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]},...] : les mappages sources. Chaque mappage source doit contenir une liste de valeurs.
La fusion suit ces règles :
La clé et la première valeur de chaque mappage source sont fusionnées dans le premier mappage de la liste.
La clé et la deuxième valeur sont fusionnées dans le deuxième mappage, et ainsi de suite pour les valeurs suivantes.
La longueur de la liste résultante correspond au nombre maximal de valeurs parmi tous les mappages sources. Si les mappages sources ont un nombre différent de valeurs, la dernière valeur d'un mappage plus court est répétée pour remplir les positions restantes.
Valeur de retour
La liste des mappages fusionnés.
Exemples de syntaxe
-
Trois mappages sources avec le même nombre de valeurs :
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_2Résultat :
- 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 -
Trois mappages sources avec un nombre différent de valeurs :
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_2Résultat :
- 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
Exemple d'utilisation
Le modèle suivant ajoute toutes les instances créées par WebServer au groupe de serveurs d'une instance Server Load Balancer (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
- Weight:
- 20
- 100