Fungsi bawaan Fn::MergeMapToList menggabungkan beberapa pemetaan menjadi daftar pemetaan baru.
Deklarasi
JSON
{ "Fn::MergeMapToList": [ { "key_1": ["key_1_item_1", "key_1_item_2", ...] }, { "key_2": ["key_2_item_1", "key_2_item_2", ...], }, ... ] }YAML
Sintaks untuk nama fungsi lengkap:
Fn::MergeMapToList: - key_1: - key_1_item_1 - key_1_item_2 - ... - key_2: - key_2_item_1 - key_2_item_2 - ... - ...Sintaks untuk bentuk pendek:
!MergeMapToList [{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]}, ...]
Parameter
[{key_1: [key_1_item_1, key_1_item_2, ..]}, {key_2: [key_2_item_1, key_2_item_2, ...]},...]: Pemetaan sumber. Setiap pemetaan sumber harus memiliki daftar nilai.
Fungsi ini menggabungkan pemetaan sumber ke dalam daftar pemetaan baru berdasarkan aturan berikut:
Menggabungkan kunci dan nilai pertama di setiap pemetaan sumber ke dalam pemetaan pertama di daftar baru.
Menggabungkan kunci dan nilai kedua di setiap pemetaan sumber ke dalam pemetaan kedua di daftar baru. Semua kunci dan nilai mengikuti aturan yang sama.
Jumlah pemetaan dalam daftar baru ditentukan oleh jumlah nilai terbesar dalam pemetaan sumber di antara semua pemetaan sumber. Jika jumlah nilai dalam pemetaan sumber berbeda, sistem akan menggunakan nilai terakhir dari pemetaan sumber yang lebih pendek secara berulang untuk memastikan bahwa setiap pemetaan dalam daftar baru memiliki jumlah nilai yang sama.
Nilai kembali
Daftar pemetaan yang telah digabungkan.
Contoh sintaks
Pada contoh berikut, tiga pemetaan sumber digabungkan. Setiap pemetaan sumber memiliki jumlah nilai yang sama.
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_2Hasil:
- 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_2Pada contoh berikut, tiga pemetaan sumber digabungkan. Pemetaan sumber memiliki jumlah nilai yang berbeda.
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_2Hasil:
- 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
Contoh penggunaan
Pada template sampel berikut, semua instance yang dibuat di WebServer ditambahkan ke grup server dari 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