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

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

最終更新日:Sep 17, 2026

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

事前準備

以下の例では、Alibaba Cloud の Function Compute (FC) 3.0 を使用します。始める前に、「Function Compute の課金」をご確認ください。

操作手順

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

説明

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

ステップ1:関数の作成

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

  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:
            # イベントがバイト形式の場合は、まずデコードします。
            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. FC コンソールのトリガー管理ページで、作成した HTTP トリガーを見つけ、その [パブリックアクセスアドレス] をコピーします。ブラウザでこのアドレスにアクセスして、接続をテストします。また、プレーヤーの customVodServer プロパティにこのアドレスを設定して、プロキシサービスにアクセスすることもできます。

  2. 接続が成功すれば、リクエストプロキシのデプロイは完了です。

関連ドキュメント