すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:リクエストプロキシをデプロイする

最終更新日:Nov 18, 2025

複雑なネットワーク環境では、デフォルトの ApsaraVideo VOD ドメイン名 (*.aliyuncs.com) がキャリアによってハイジャックされ、アクセス障害を引き起こす可能性があります。専用のプロキシサービスをデプロイすることで、リクエストの成功率と安定性を向上させることができます。

開始する前に

このトピックでは、Alibaba Cloud Function Compute (FC) 3.0 を例として使用します。開始する前に、「Function Compute の課金」についてご確認ください。

手順

デプロイメントの手順は次のとおりです。

説明

FC コンソールが次の図のように表示される場合は、右上隅にある [Experience Function Compute 3.0] をクリックして新しいコンソールに切り替えます。

image

ステップ 1: 関数を作成する

  1. FC コンソールの [関数] ページに移動し、[関数の作成] をクリックします。image

  2. [タスク関数] を選択し、[タスク関数の作成] をクリックします。

    • [実行環境] で、[組み込みランタイム] > [Python] を選択します。

    • 他のパラメーターはデフォルト値のままにするか、必要に応じて変更します。image

  3. 構成が正しいことを確認し、[作成] をクリックします。

ステップ 2: コードをデプロイする

  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:
            # イベントがバイト単位の場合は、まずデコードします。
            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 が 1 つだけになるようにします。
            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. [関数の詳細] ページに戻り、[コードのデプロイ] をクリックします。

ステップ 3: トリガーを作成する

  1. [関数の詳細] ページで、[トリガー] タブをクリックします。image

  2. [トリガーの作成] をクリックし、[HTTP トリガー] を選択します。[認証方法][認証なし] に設定します。他のパラメーターはデフォルト値のままにするか、必要に応じて変更します。image

  3. 構成が正しいことを確認し、[OK] をクリックします。

ステップ 4: デプロイメントを検証する

  1. プレーヤーで、customVodServer プロパティを生成されたドメイン名 (パブリックアクセスアドレス) に設定します。次に、プロキシサービスにアクセスして接続をテストします。image

  2. 接続が成功すると、リクエストプロキシが正常にデプロイされたことを示します。

参考