全部產品
Search
文件中心

HTTPDNS:配置基於Function Compute的自訂解析

更新時間:Dec 05, 2025

本文介紹如何配置基於Function Compute的自訂解析。

前提條件

1. 授權服務關聯角色

HTTPDNS調用Function Compute實現自訂解析功能時,需要在HTTPDNS控制台授權服務關聯角色以允許HTTPDNS使用Function Compute。

操作步驟

  1. 登入EMAS控制台

  2. 在左側導覽列選擇解析管理> 自訂解析

  3. 點擊添加自訂解析,策略類型選擇Function Compute策略時,如果沒有許可權會看到授權說明,點擊授權

  4. 在彈出的服務關聯角色授權頁面,單擊確定 即可完成授權動作,如不授權,則無法使用Function Compute策略功能。

說明

在初次使用Function Compute策略時需要授權,有兩個時機會觸發授權:

  • 建立自訂解析記錄,選擇Function Compute策略時。

  • 進入策略管理列表後,Function Compute策略列表中會提示需要授權。

image

2. 建立自訂解析函數

您需先開通阿里雲Function Compute服務,並開發自訂解析函數。開發完成後,請發布服務和函數,並產生正式的版本或別名。

為確保 HTTPDNS Function Compute策略的安全穩定運行,配置策略時請勿使用預設的 Latest 版本,應明確指定發行的服務與函數版本。

HTTPDNS 同時支援 FC 2.0 和 FC 3.0,但推薦使用 FC 3.0(FC 2.0 已不推薦)。如需瞭解兩者區別,請參見:2.0和3.0區別

如仍需建立2.0 函數,請參考建立2.0函數

建立3.0函數

  1. 登入 Function Compute控制台,在頂部功能表列,選擇地區

  2. 在左側選擇函數菜單,在函數列表頁面點擊建立函數image

  3. 在建立函數頁面,選擇“事件函數”,按需配置參數,程式碼範例可選擇“HTTPDNS自訂解析”模板,參數配置完成後,點擊建立進入函數編寫。image

  4. 編輯器初始化完成後,輸入函數代碼,函數代碼配置請參考3. 編寫自訂解析函數代碼,如選擇了“HTTPDNS自訂解析”模板可忽略這一步。

  5. 接下來測試您的函數,函數的入參設定具體請參見3. 編寫自訂解析函數代碼,單擊測試函數,確認函數能正確執行且返回的資料符合預期。image

  6. 測試完成後,點擊部署代碼,確認代碼部署完成。

  7. 點擊版本管理,輸入提示內容,建立一個版本。image

3. 編寫自訂解析函數代碼

  1. 編寫函數代碼

    在函數編輯器中輸入您的自訂解析邏輯。函數需接收 HTTPDNS 傳入的上下文參數(如用戶端 IP、地區、電訊廠商等),並返回處理後的解析結果。例如:

    該樣本程式設計語言為nodejs6或者nodejs8

    'use strict';
    exports.handler = (event, context, callback) => {
      // 將傳入的參數格式化成對象
      const eventObj = JSON.parse(event.toString());
      const {
        location, // 地區
        ips, // 權威返回的解析結果
        ttl, // 原始ttl
      } = eventObj;
    
      if (location.province === 'zhejiang' && location.isp === 'chinanet') {
        // 當 浙江電信 的使用者訪問該網域名稱時,返回指定的IP
        callback(null, {
          ips: ips.concat(['1.1.X.X']), // 將指定的IP加入返回的IP數組中
          ttl: event.ttl * 2, // 修改ttl
          extra: "", // 攜帶給用戶端額外的參數
        });
      } else {
        // 預設返回
        callback(null, {
          ips,
          ttl,
          extra: "",
        });
      }
    };
  2. 配置測試入參

    單擊測試函數前,請先設定類比的入參資料,以驗證函式行為是否符合預期。測試事件應類比真實 HTTPDNS 調用格式,例如:

    {
      "domainName": "www.aliyun.com", // 當前正在解析的網域名稱
      "clientIp": "192.168.1.4", // 用戶端 IP
      "location": {
        "continent": "asia", // 用戶端IP所屬大洲
        "region": "cn", // 用戶端IP所屬國家或地區
        "isp": "bgp", // 用戶端IP所屬電訊廠商線路 
        "province": "zhejiang" // 用戶端IP所屬省份
      },
      "ips": ["192.168.1.3"], // 解析結果清單,BEFORE_READ_CACHE階段沒有此結果
      "ttl": 60, // 解析結果 TTL,BEFORE_READ_CACHE階段沒有此結果
      "hookType": "BEFORE_WRITE_CACHE", // 函數啟動並執行階段
      "parameters":{ // 解析攜帶的參數對象
        "param1":"p1",   //對應URL中的參數"sdns-param1=p1"
        "param2":"p2"
       }
    }
  3. 執行測試並驗證結果

    單擊測試函數,檢查返回結果是否包含預期的 ipsttlextra 欄位,且格式正確。樣本返回:

    {
        "ips": event.ips.concat(['192.168.1.2']),
        "ttl": event.ttl * 2,
        "extra": "some-thing-send-to-user"
        // ,"domainName": "www.alibabacloud.com" 僅限BEFORE_READ_CACHE階段有效
        // ,"cacheKey": "cache-key-001" 僅限BEFORE_READ_CACHE、BEFORE_WRITE_CACHE階段有效
     }
    說明

    如需瞭解自訂解析函數運行機制、完整入參/出參欄位說明等內容,請參閱詳細文檔:編寫自訂解析函數代碼

4. 綁定函數解析計算到解析網域名稱

每個需要自訂解析的網域名稱可以配置多個地區的Function Compute服務,多個自訂解析網域名稱的Function Compute策略可以配置相同的Function Compute服務。

操作步驟

  1. 登入EMAS控制台

  2. 在左側導覽列選擇解析管理> 自訂解析

  3. 點擊添加自訂解析,策略類型選擇Function Compute策略image

  4. 您可以做以下配置,配置完成後,點擊確定會回到策略列表中。

    參數

    說明

    地區

    必填,選擇Function Compute服務所在的地區,比如:您在上海地區建立了一個Function Compute服務,這裡就選擇上海。

    FC版本

    現在同時支援FC2.0和FC3.0的函數配置,預設是FC3.0,推薦使用FC3.0。

    Function Compute3.0和2.0版本差異及相容性說明

    服務

    必填,選擇地區下對應的Function Compute服務,FC2.0版本才有該欄位。

    服務版本/別名

    必填,選擇對應服務的版本或者別名,FC2.0版本才有該欄位。

    說明

    不推薦使用Function ComputeLATEST版本。

    BEFORE_READ_CACHE階段的自訂解析函數

    在讀取HTTPDNS服務端緩衝前鉤子階段,可在此階段配置對應的Function Compute函數。可選擇不啟用。

    查看Function Compute策略鉤子說明

    BEFORE_WRITE_CACHE階段的自訂解析函數

    在HTTPDNS服務端遞迴解析後寫入緩衝前鉤子階段,可在此階段配置對應的Function Compute函數。可選擇不啟用。

    查看Function Compute策略鉤子說明

    BEFORE_WRITE_RESPONSE階段的自訂解析函數

    在HTTPDNS服務端寫入緩衝後構造返回內容前鉤子階段,可在此階段配置對應的Function Compute函數。可選擇不啟用。

    查看Function Compute策略鉤子說明

    hook函數功能單元測試

    用來測試HTTPDNS服務和Function Compute服務的連通性:

    • 測試成功:代表HTTPDNS服務可正常連通已配置的Function Compute服務。

    • 測試失敗:代表HTTPDNS服務還不能夠連通已經配置的Function Compute服務。

後續步驟

參考以上內容,您已經配置了基於Function Compute的自訂解析,請參考整體使用流程繼續完成後續步驟。