自定義DNS功能適用于加速站點訪問等場景,本文介紹如何在函數計算控制臺為函數配置自定義DNS。

背景信息

resolv.conf文件為系統配置文件,您配置自定義DNS解析屬性后,原有resolv.conf將被覆蓋。關于resolv.conf文件的規范,您可以在Linux系統執行man 5 resolver查看,如果提示沒有man page,請先根據您使用的發行版本進行安裝。更多信息,請參見Linux manual page

使用限制

自定義DNS功能僅支持函數計算官方提供的Runtime和Custom Runtime。

前提條件

創建函數

配置DNS

說明 如需使用函數計算默認的DNS服務器,請在Name Servers中添加默認IP地址100.100.2.136100.100.2.138
  1. 登錄函數計算控制臺
  2. 在左側導航欄,單擊服務及函數
  3. 在頂部菜單欄,選擇地域。
  4. 服務列表頁面,單擊目標服務。
  5. 函數管理頁面,單擊目標函數操作列的配置
  6. 在編輯函數配置頁面下方的DNS 配置區域,按需配置以下參數,然后單擊保存
    dns-edit
    參數說明示例值
    Name ServersDNS服務器的IP地址。支持添加多個DNS服務器的IP地址。
    • 223.5.5.5
    • 223.6.6.6
    搜索域DNS搜索域。支持添加多個搜索域。當訪問的域名不能被DNS解析時,搜索域將被追加到無法被解析的域名后重新解析。mydomain.com
    DNS 選項resolv.conf文件中的配置項。每一項對應一個鍵值對,格式為key:value,其中鍵為必填。attempts:1
  7. 驗證配置的DNS解析屬性是否生效。
    1. 在函數詳情頁面,單擊函數代碼頁簽。
    2. 在代碼編輯器中編寫代碼,單擊部署代碼,然后單擊測試函數
      代碼示例(Python 3)如下:
      # -*- coding: utf-8 -*-
      import logging
      import subprocess
      
      def handler(event, context):
        logger = logging.getLogger()
        f = open('/etc/resolv.conf')
        logger.info("".join(f.readlines()))
        f.close()
        output = subprocess.check_output(["ping", "-c", "1", "www.aliyun.com"])
        return output
    3. 函數代碼頁簽,查看執行結果。在返回結果區域,查看resolv.conf生成的對應的內容,在日志輸出區域,查看返回的域名的IP地址。
      result