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

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

最終更新日:Aug 04, 2026

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

ドメイン名ハイジャックのシナリオに加えて、ApsaraVideo VOD の IP アドレスは動的に割り当てられ、随時変更されるため、固定の IP 範囲を提供することはできません。お客様のビジネスで、セキュリティコンプライアンスのためにサーバーのファイアウォールに IP ホワイトリストを設定する必要があり、ドメイン名だけでは不十分な場合は、リクエストプロキシをデプロイして固定のパブリック送信元 IP アドレスを取得し、その IP アドレスへのアクセスを制限することができます。以下で説明する Function Compute (FC) のデプロイソリューションを使用するか、独自の NGINX リバースプロキシを設定することができます。

事前準備

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

操作手順

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

説明

お使いの FC コンソールのインターフェイスが 2.0 の場合は、右上の [Go to Function Compute 3.0] をクリックして新しいコンソールに切り替えてください。

ステップ 1:関数の作成

  1. Function Compute (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:
            # イベントがバイト形式の場合は、まずデコードします。
            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. 接続に成功すると、リクエストプロキシがデプロイされたことになります。

関連ドキュメント