全部產品
Search
文件中心

ApsaraVideo VOD:部署請求代理

更新時間:Nov 18, 2025

在網路環境複雜時,預設ApsaraVideo for VOD網域名稱(*.aliyuncs.com)可能被電訊廠商劫持,導致訪問失敗。建議部署專屬代理服務以提升請求成功率和穩定性。

部署前須知

本文以阿里雲Function Compute(FC)3.0為例進行部署,在部署前請先瞭解Function Compute計費

部署步驟

部署步驟如下:

說明

若阿里雲Function Compute(FC)控制台顯示如下樣式,請點擊右上方體驗Function Compute3.0進入新版控制台。

image

步驟一:建立函數

  1. 進入Function Compute(FC)控制台函數頁面,點擊建立函數image

  2. 選擇任務函數,單擊建立任務函數。其中:

    • 運行環境:建議選擇內建運行時 > Python

    • 其他參數保持預設或根據您的實際需求變更。image

  3. 確認配置無誤後,點擊建立

步驟二:部署代碼

  1. 函數詳情頁,點擊代碼標籤。image

  2. 單擊開啟WebIDE按鈕,進入代碼編輯頁。image

  3. 將如下代碼拷貝至編輯框內。

    範例程式碼

    import json
    import logging
    import http.client
    from urllib.parse import urlencode
    
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger()
    
    def get_target_domain(region_id):
        # 如果沒有指定 region_id,使用預設值
        if not region_id:
            return "vod.cn-shanghai.aliyuncs.com"
        return f"vod.{region_id}.aliyuncs.com"
    
    def handler(event, context):
        try:
            # 如果是 bytes,先解碼
            if isinstance(event, bytes):
                event = json.loads(event.decode('utf-8'))
    
            # 擷取 queryParameters
            query_params = event['queryParameters']
            logger.info(f"queryParameters: {query_params}")
    
            # 擷取並移除 regionId 參數
            region_id = query_params.pop('RegionId', None)
            target_domain = get_target_domain(region_id)
    
            # 構建查詢字串
            query_string = urlencode(query_params)
            path = f"/?{query_string}"
    
            logger.info(f"Forwarding to: {target_domain}{path}")
    
            # 轉寄請求
            conn = http.client.HTTPSConnection(target_domain)
            conn.request('GET', path)
    
            # 擷取響應
            response = conn.getresponse()
            body = response.read()
    
            # 處理回應標頭,確保只有一個 Access-Control-Allow-Origin
            headers = dict(response.getheaders())
            # 設定單個 CORS 頭
            headers['Access-Control-Allow-Origin'] = '*'
    
            return {
                'statusCode': response.status,
                'headers': headers,
                'body': body.decode('utf-8')
            }
    
        except Exception as e:
            logger.error(f"Error: {str(e)}")
            return {
                'statusCode': 500,
                'body': str(e)
            }
        finally:
            if 'conn' in locals():
                conn.close()
  4. 回到函數詳情頁,點擊部署代碼

步驟三:建立觸發器

  1. 函數詳情頁,點擊觸發器標籤。image

  2. 點擊建立觸發器,進入編輯頁,選擇HTTP觸發器。其中,認證方式建議選擇無需認證,其他參數保持預設或根據您的實際需求變更。image

  3. 確認配置無誤後,點擊確定

步驟四:驗證部署

  1. 在播放器端將customVodServer屬性設定為產生的網域名稱地址(公網訪問地址)訪問代理服務,測試連通性。image

  2. 訪問成功,證明請求代理部署完成。

相關文檔