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

ApsaraVideo VOD:リクエストプロキシのデプロイ

最終更新日:Jun 22, 2026

複雑なネットワーク環境では、通信事業者がデフォルトの ApsaraVideo VOD ドメイン名 (*.aliyuncs.com) をハイジャックし、アクセス障害が発生する場合があります。リクエストの成功率と安定性を向上させるには、専用プロキシサービスのデプロイを推奨します。

事前準備

このトピックでは、Alibaba Cloud Function Compute (FC) 3.0 を例に説明します。始める前に、Function Compute の料金をご確認ください。

手順

次の手順に従ってください。

説明

FC コンソールで 2.0 のインターフェースが表示される場合は、右上隅にある [Function Compute 3.0 へ移動] をクリックして、新しいコンソールに切り替えてください。

ステップ1:関数の作成

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

  2. [タスク関数] を選択し、[タスク関数の作成] をクリックします。次のパラメータを設定します。

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

    • その他のパラメータはデフォルト設定のままにするか、必要に応じて設定します。関数タイプは [タスク関数] を選択します。弾性設定では、インスタンスタイプを [弾性インスタンス] に設定し、0.35 vCPU、512 MB のメモリ、512 MB のディスクを設定します。最小インスタンス数を 0 (推奨) に設定し、単一インスタンスの同時実行数を 1 に設定します。コードのアップロード方法は、[サンプルコードを使用] を選択します。次に、[作成] をクリックします。

  3. 設定を確認し、[作成] をクリックします。

ステップ2:コードのデプロイ

  1. [関数の詳細] ページの [コード] タブをクリックします。

  2. [WebIDE を開く] をクリックして、コードエディターを開きます。

  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:
            # event がバイト型の場合は、まずデコードします。
            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. [関数の詳細] ページの [トリガー] タブをクリックします。

  2. [トリガーの作成] をクリックし、[HTTP トリガー] を選択します。[認証方式][認証なし] に設定し、その他のパラメータはデフォルト設定のままにするか、必要に応じて変更することを推奨します。トリガー名を入力し、バージョンまたはエイリアスを [LATEST] に設定し、[GET][POST][PUT][DELETE] のリクエストメソッドを選択します。

  3. 設定を確認し、[OK] をクリックします。

ステップ4:デプロイの検証

  1. Function Compute コンソールのトリガー管理ページで、作成した HTTP トリガーを見つけ、その[パブリックアクセスアドレス]をコピーします。ブラウザーでこのアドレスにアクセスして接続性をテストします。また、プレーヤーの customVodServer プロパティをこのアドレスに設定して、プロキシサービスにアクセスすることもできます。

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

関連ドキュメント