All Products
Search
Document Center

HTTPDNS:Konfigurasikan resolusi DNS kustom berdasarkan Function Compute

Last Updated:Mar 20, 2026

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

  1. Masuk ke Konsol EMAS.

  2. Pada panel navigasi kiri, pilih Resolution Management > Custom Resolution.

  3. 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.

  4. Pada halaman otorisasi peran terkait layanan, klik OK untuk menyelesaikan otorisasi. Tanpa otorisasi ini, Anda tidak dapat menggunakan fitur kebijakan Function Compute.

Catatan

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.

image

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

  1. Masuk ke Konsol Function Compute. Pada bilah menu atas, pilih Region.

  2. Pada panel navigasi kiri, pilih menu Functions. Pada halaman daftar fungsi, klik Create Function.

    image

  3. 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.

    image

  4. 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.

  5. 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.

    image

  6. Setelah pengujian selesai, klik Deploy Code dan pastikan kode telah dideploy.

  7. Klik Version Management, masukkan konten prompt, lalu buat versi.

    image

3. Tulis kode fungsi resolusi kustom

  1. 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 nodejs6 atau nodejs8.

    '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: "",
        });
      }
    };
  2. 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"
       }
    }
  3. 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
     }
    Catatan

    Untuk 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

  1. Masuk ke Konsol EMAS.

  2. Pada panel navigasi kiri, pilih Resolution Management > Custom Resolution.

  3. Klik Add Custom Resolution dan atur Policy Type menjadi Function Compute Policy.

    image

  4. 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.

    Catatan

    Penggunaan 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.

    Lihat deskripsi hook kebijakan Function Compute

    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.

    Lihat deskripsi hook kebijakan Function Compute

    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.

    Lihat deskripsi hook kebijakan Function Compute

    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.