A função Fn::MergeMapToList combina vários mapeamentos source em uma lista de mapeamentos, unindo os valores por posição.
Declaração
-
JSON
{ "Fn::MergeMapToList": [ { "key_1": ["key_1_item_1", "key_1_item_2", ...] }, { "key_2": ["key_2_item_1", "key_2_item_2", ...], }, ... ] } -
YAML
-
Sintaxe do nome completo da função:
Fn::MergeMapToList: - key_1: - key_1_item_1 - key_1_item_2 - ... - key_2: - key_2_item_1 - key_2_item_2 - ... - ... -
Sintaxe da forma abreviada:
!MergeMapToList [{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]}, ...]
-
Parâmetros
[{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]},...]: mapeamentos source. Cada mapeamento source deve conter uma lista de valores.
A mesclagem obedece às seguintes regras:
A chave e o primeiro valor de cada mapeamento source compõem o primeiro mapeamento da lista resultante.
A chave e o segundo valor formam o segundo mapeamento, e assim sucessivamente para os demais valores.
O tamanho da lista final corresponde à maior quantidade de valores entre todos os mapeamentos source. Se os mapeamentos tiverem quantidades diferentes de valores, o último valor do mapeamento mais curto se repete para preencher as posições restantes.
Valor de retorno
Lista de mapeamentos mesclados.
Exemplos de sintaxe
-
Três mapeamentos source com a mesma quantidade de valores:
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_2Resultado:
- 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 -
Três mapeamentos source com quantidades diferentes de valores:
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_2Resultado:
- 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
Exemplo de uso
O modelo a seguir adiciona todas as instâncias criadas pelo WebServer ao grupo de servidores de uma instância do 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