Topik ini menjelaskan cara mengonfigurasi resolusi DNS kustom menggunakan Function Compute.
Prasyarat
Anda telah menambahkan nama domain yang ingin dikonfigurasi untuk resolusi DNS kustom. Untuk informasi selengkapnya, lihat 1. Tambahkan nama domain.
1. Otorisasi peran terkait layanan
Saat HTTPDNS memanggil Function Compute untuk menerapkan resolusi DNS kustom, Anda harus memberikan izin kepada peran terkait layanan di Konsol HTTPDNS agar HTTPDNS dapat menggunakan Function Compute.
Prosedur
Masuk ke Konsol EMAS.
Pada panel navigasi kiri, pilih Resolution Management > Custom Resolution.
Klik Add Custom Resolution. Jika Anda memilih Function Compute Policy sebagai tipe kebijakan dan belum memiliki izin yang diperlukan, pesan otorisasi akan muncul. Klik Authorize.
Pada halaman otorisasi peran terkait layanan, klik OK untuk menyelesaikan otorisasi. Tanpa otorisasi ini, Anda tidak dapat menggunakan fitur kebijakan Function Compute.
Anda harus memberikan izin saat pertama kali menggunakan kebijakan Function Compute. Otorisasi dipicu dalam skenario berikut:
Saat Anda membuat rekaman DNS kustom dan memilih Function Compute Policy.
Setelah Anda membuka daftar manajemen kebijakan, muncul prompt yang meminta Anda memberikan izin pada daftar kebijakan Function Compute.

2. Buat fungsi resolusi kustom
Pertama, aktifkan Alibaba Cloud Function Compute dan kembangkan fungsi resolusi kustom. Setelah pengembangan selesai, publikasikan layanan dan fungsinya, lalu hasilkan versi formal atau alias.
Untuk memastikan keamanan dan stabilitas kebijakan Function Compute HTTPDNS, jangan gunakan versi Latest default saat mengonfigurasi kebijakan. Anda harus menentukan versi layanan dan fungsi yang telah dipublikasikan.
HTTPDNS mendukung FC 2.0 dan FC 3.0, tetapi FC 3.0 direkomendasikan (FC 2.0 sudah tidak didukung). Untuk informasi selengkapnya mengenai perbedaan keduanya, lihat Perbedaan antara FC 2.0 dan FC 3.0.
Jika Anda masih perlu membuat fungsi FC 2.0, lihat Buat fungsi FC 2.0.
Buat fungsi FC 3.0
Masuk ke Konsol Function Compute. Pada bilah menu atas, pilih Region.
Pada panel navigasi kiri, pilih menu Functions. Pada halaman daftar fungsi, klik Create Function.

Pada halaman Create Function, pilih Event Function, konfigurasikan parameter sesuai kebutuhan, dan pilih templat HTTPDNS Custom Resolution untuk contoh kode. Setelah mengonfigurasi parameter, klik Create untuk mulai menulis fungsi.

Setelah editor diinisialisasi, masukkan kode fungsi. Untuk informasi cara mengonfigurasi kode fungsi, lihat 3. Tulis kode fungsi resolusi kustom. Jika Anda telah memilih templat HTTPDNS Custom Resolution, Anda dapat melewati langkah ini.
Selanjutnya, uji fungsi Anda. Untuk informasi cara menyetel parameter input fungsi, lihat 3. Tulis kode fungsi resolusi kustom. Klik Test Function dan pastikan fungsi berjalan dengan benar serta mengembalikan data yang diharapkan.

Setelah pengujian selesai, klik Deploy Code dan pastikan kode telah dideploy.
Klik Version Management, masukkan konten prompt, lalu buat versi.

3. Tulis kode fungsi resolusi kustom
Tulis kode fungsi
Pada editor fungsi, masukkan logika resolusi kustom Anda. Fungsi harus menerima parameter konteks yang dikirimkan oleh HTTPDNS, seperti IP klien, wilayah, dan ISP, lalu mengembalikan hasil resolusi yang telah diproses. Contohnya:
Bahasa pemrograman pada contoh ini adalah
nodejs6ataunodejs8.'use strict'; exports.handler = (event, context, callback) => { // Format parameter input menjadi objek. const eventObj = JSON.parse(event.toString()); const { location, // Region ips, // Hasil resolusi dari server otoritatif ttl, // TTL asli } = eventObj; if (location.province === 'zhejiang' && location.isp === 'chinanet') { // Saat pengguna dari China Telecom Zhejiang mengakses nama domain, kembalikan alamat IP tertentu. callback(null, { ips: ips.concat(['1.1.X.X']), // Tambahkan alamat IP tertentu ke array IP yang dikembalikan. ttl: event.ttl * 2, // Ubah TTL. extra: "", // Bawa parameter tambahan untuk klien. }); } else { // Pengembalian default. callback(null, { ips, ttl, extra: "", }); } };Konfigurasikan parameter input pengujian
Sebelum mengklik Test Function, atur data parameter input tiruan untuk memverifikasi bahwa fungsi berperilaku sesuai harapan. Event pengujian harus mensimulasikan format panggilan HTTPDNS yang sebenarnya. Contohnya:
{ "domainName": "www.aliyun.com", // Nama domain yang sedang di-resolve "clientIp": "192.168.1.4", // IP klien "location": { "continent": "asia", // Benua dari IP klien "region": "cn", // Negara atau wilayah dari IP klien "isp": "bgp", // Jalur ISP dari IP klien "province": "zhejiang" // Provinsi dari IP klien }, "ips": ["192.168.1.3"], // Daftar hasil resolusi. Hasil ini tidak tersedia pada tahap BEFORE_READ_CACHE. "ttl": 60, // TTL dari hasil resolusi. Hasil ini tidak tersedia pada tahap BEFORE_READ_CACHE. "hookType": "BEFORE_WRITE_CACHE", // Tahap eksekusi fungsi "parameters":{ // Objek parameter yang dibawa dalam permintaan resolusi "param1":"p1", // Sesuai dengan parameter "sdns-param1=p1" pada URL "param2":"p2" } }Jalankan pengujian dan verifikasi hasilnya
Klik Test Function dan periksa apakah hasil yang dikembalikan berisi bidang ips, ttl, atau extra yang diharapkan serta dalam format yang benar. Contoh respons:
{ "ips": event.ips.concat(['192.168.1.2']), "ttl": event.ttl * 2, "extra": "some-thing-send-to-user" // ,"domainName": "www.alibabacloud.com" // Hanya berlaku pada tahap BEFORE_READ_CACHE // ,"cacheKey": "cache-key-001" // Hanya berlaku pada tahap BEFORE_READ_CACHE dan BEFORE_WRITE_CACHE }CatatanUntuk informasi selengkapnya mengenai mekanisme fungsi resolusi kustom dan deskripsi lengkap bidang parameter input dan respons, lihat dokumentasi lengkap: Tulis kode fungsi resolusi kustom.
4. Lampirkan layanan Function Compute ke nama domain untuk resolusi
Untuk setiap nama domain yang memerlukan resolusi kustom, Anda dapat mengonfigurasi layanan Function Compute di beberapa wilayah. Anda juga dapat mengonfigurasi layanan Function Compute yang sama untuk kebijakan Function Compute dari beberapa nama domain yang memerlukan resolusi kustom.
Prosedur
Masuk ke Konsol EMAS.
Pada panel navigasi kiri, pilih Resolution Management > Custom Resolution.
Klik Add Custom Resolution dan atur Policy Type menjadi Function Compute Policy.

Anda dapat melakukan konfigurasi berikut. Setelah menyelesaikan konfigurasi, klik OK untuk kembali ke daftar kebijakan.
Parameter
Deskripsi
Region
Wajib diisi. Pilih wilayah tempat layanan Function Compute berada. Misalnya, jika Anda membuat layanan Function Compute di wilayah China (Shanghai), pilih China (Shanghai).
FC Version
FC 2.0 dan FC 3.0 didukung. FC 3.0 merupakan versi default dan direkomendasikan.
Perbedaan dan kompatibilitas antara Function Compute 3.0 dan 2.0
Service
Wajib diisi. Pilih layanan Function Compute di wilayah yang ditentukan. Bidang ini hanya berlaku untuk FC 2.0.
Service Version/Alias
Wajib diisi. Pilih versi atau alias layanan. Bidang ini hanya berlaku untuk FC 2.0.
CatatanPenggunaan versi LATEST Function Compute tidak direkomendasikan.
Custom resolution function for the BEFORE_READ_CACHE stage
Pada tahap hook sebelum cache sisi server HTTPDNS dibaca, Anda dapat secara opsional mengonfigurasi fungsi Function Compute yang sesuai.
Custom resolution function for the BEFORE_WRITE_CACHE stage
Pada tahap hook setelah resolusi rekursif oleh sisi server HTTPDNS dan sebelum ditulis ke cache, Anda dapat secara opsional mengonfigurasi fungsi Function Compute yang sesuai.
Custom resolution function for the BEFORE_WRITE_RESPONSE stage
Pada tahap hook setelah sisi server HTTPDNS menulis ke cache dan sebelum tanggapan dibuat, Anda dapat secara opsional mengonfigurasi fungsi Function Compute yang sesuai.
Hook function unit test
Gunakan pengujian ini untuk memverifikasi konektivitas antara layanan HTTPDNS dan layanan Function Compute:
Pengujian berhasil: Layanan HTTPDNS dapat terhubung ke layanan Function Compute yang dikonfigurasi.
Pengujian gagal: Layanan HTTPDNS tidak dapat terhubung ke layanan Function Compute yang dikonfigurasi.
Langkah selanjutnya
Setelah Anda mengonfigurasi resolusi DNS kustom berdasarkan Function Compute seperti yang dijelaskan dalam topik ini, lihat Alur kerja keseluruhan untuk menyelesaikan langkah-langkah berikutnya.