Resource kustom memungkinkan Anda menulis logika konfigurasi kustom dalam template. Resource Orchestration Service (ROS) menjalankan logika ini setiap kali Anda membuat, memperbarui (jika Anda telah mengubah resource kustom), atau menghapus tumpukan. Sebagai contoh, Anda dapat menggunakan resource kustom untuk menyertakan jenis resource yang tidak didukung di ROS. Dengan cara ini, Anda dapat mengelola semua resource terkait dalam satu tumpukan.
Anda dapat menggunakan tipe resource ALIYUN::ROS::CustomResource atau Custom::MyCustomResourceTypeName untuk mendefinisikan resource kustom dalam template Anda. Resource kustom memerlukan properti untuk menentukan target ke mana ROS mengirim permintaan. Properti tersebut adalah token layanan yang bisa berupa topik atau antrian Message Service (MNS), fungsi Function Compute, atau URL HTTP atau HTTPS.
Resource kustom harus mengirimkan respons ke URL respons yang telah ditandatangani sebelumnya. Jika mereka tidak dapat mengirim respons ke ROS, ROS tidak menerima respons dan operasi tumpukan gagal. ResponseURL digunakan di Internet dan InnerResponseURL digunakan di jaringan internal Alibaba Cloud.
Cara kerja resource kustom
Operasi resource kustom melibatkan tiga pihak:
- pengembang template
- Pengembang template membuat template yang mencakup tipe resource kustom. Pengembang template menentukan token layanan dan semua data input dalam template.
- penyedia resource kustom
- Penyedia resource kustom memiliki resource kustom dan menentukan bagaimana menangani serta merespons permintaan dari ROS. Penyedia resource kustom harus memberikan token layanan untuk pengembang template.
- ROS
- Selama operasi tumpukan, ROS mengirim permintaan ke token layanan yang ditentukan dalam template dan menunggu respons sebelum melanjutkan.
- Pengembang template mendefinisikan resource kustom dalam template. Template tersebut berisi token layanan dan semua parameter data input. Resource kustom menentukan apakah parameter data input diperlukan. Token layanan selalu diperlukan.
Token layanan menentukan lokasi ke mana ROS mengirim permintaan, seperti ke ARN topik MNS atau ke ARN fungsi Function Compute. Untuk informasi lebih lanjut, lihat ALIYUN::ROS::CustomResource. Token layanan dan struktur data input ditentukan oleh penyedia resource kustom.
- Ketika sebuah template digunakan untuk membuat, memperbarui, atau menghapus resource kustom, ROS mengirim permintaan ke token layanan yang ditentukan. Tidak ada batasan pada wilayah token layanan.
Permintaan ROS berisi informasi seperti tipe permintaan dan URL yang telah ditandatangani sebelumnya ke mana resource kustom mengirim permintaan. Untuk informasi lebih lanjut, lihat Objek permintaan resource kustom.
Data sampel berikut menunjukkan konten yang terkandung dalam permintaan ROS:
{ "RequestType" : "Create", "RequestId" : "id unik untuk permintaan pembuatan ini", "ResponseURL" : "pre-signed-url-for-create-response", "InnerResponseURL" : "pre-signed-inner-url-for-create-response", "ResourceType" : "Custom::MyCustomResourceType", "LogicalResourceId" : "nama resource dalam template", "StackId" : "id tumpukan", "StackName" : "nama tumpukan", "ResourceOwnerId": "id pemilik resource", "CallerId": "id pemanggil", "RegionId": "id wilayah", "ResourceProperties" : { "key1" : "string", "key2" : [ "list" ], "key3" : { "key4" : "map" } } } - Penyedia resource kustom memproses permintaan ROS dan mengembalikan respons SUCCESS atau FAILED ke URL yang telah ditandatangani sebelumnya. Penyedia resource kustom memberikan URL respons yang berisi data respons dalam format JSON.
Penyedia resource kustom juga dapat menyertakan pasangan nama-nilai yang dapat diakses oleh pengembang template dalam respons. Sebagai contoh, respons dapat berisi data keluaran jika permintaan berhasil atau pesan kesalahan jika permintaan gagal. Untuk informasi lebih lanjut, lihat Objek respons resource kustom.
Penyedia resource kustom bertanggung jawab untuk mendengarkan dan merespons permintaan. Sebagai contoh, penyedia resource kustom harus mendengarkan dan merespons notifikasi topik MNS yang dikirim ke ARN topik tertentu. ROS menunggu dan mendengarkan respons di lokasi URL yang telah ditandatangani sebelumnya.
Data sampel berikut menunjukkan konten yang dapat disertakan oleh resource kustom dalam respons:
{ "Status" : "SUCCESS", "RequestId" : "id unik untuk permintaan pembuatan ini (disalin dari permintaan)", "LogicalResourceId" : "nama resource dalam template (disalin dari permintaan)", "StackId" : "id tumpukan (disalin dari permintaan)", "PhysicalResourceId" : "id fisik yang didefinisikan vendor yang unik untuk vendor tersebut", "Data" : { "keyThatCanBeUsedInGetAtt1" : "data untuk key 1", "keyThatCanBeUsedInGetAtt2" : "data untuk key 2" } } - Setelah menerima respons SUCCESS, ROS melanjutkan operasi tumpukan. Jika respons FAILED atau tidak ada respons yang dikembalikan, itu menunjukkan bahwa operasi gagal. Semua data keluaran dari resource kustom disimpan di lokasi URL yang telah ditandatangani sebelumnya. Pengembang template dapat mengambil data tersebut dengan menggunakan fungsi Fn::GetAtt.