背景紹介
お客様のオリジンサーバーがTencent Cloud COSである場合、新しいホットリソースがオリジンサーバーにアップロードされた後(例:APKインストールパッケージ、ホット動画、コースファイルなど)、通常はキャッシュプレヒートを通じてリソースを事前にEdgeOneエッジノードへキャッシュし、クライアントの初回リクエスト時にノードにリソースがキャッシュされていないことによるオリジンへのリクエスト発生を防ぐ必要があります。ただし、キャッシュプレヒートでは、ファイルをTencent Cloud COSにアップロードした後、手動でEdgeOneコンソールにプレヒート対象のURLを送信する必要があります。プレヒート対象のURL数が多い場合、漏れが発生しやすく、手動操作によって適時にプレヒートされない可能性があります。
自動プレヒートは、ファイルがTencent Cloud COSにアップロードされた後、Tencent Cloud SCFが自動的に検出し、EdgeOneのキャッシュプレヒートAPIインターフェースを呼び出してファイルのプレヒートを自動的に完了することを支援します。これにより、アップロード後にファイルが直ちにEdgeOneノードへプレヒートされ、キャッシュヒット率が向上し、オリジンへのリクエスト量が低減されます。
注意:
Tencent Cloud COSは有料機能であり、利用中に発生する可能性のある費用はTencent Cloud COSが請求します。具体的な料金については、COS課金概要をご参照ください。 SCFは有料機能であり、利用中に発生する可能性のある費用はSCFが請求します。具体的な料金については、SCF課金概要をご参照ください。 1日のプレヒート数には上限があります。異なる課金プランには異なる上限があり、詳細はプラン選択比較をご参照ください。 適用シーン
シナリオ1:新規コンテンツの公開
新しいバージョンのインストールパッケージまたはアップグレードパッケージがTencent Cloud COSにアップロードされた後、リソースは自動的にEdgeOneアクセラレーションノードへプレヒートされます。ファイルが正式に公開された後、大量のユーザーのダウンロードリクエストはアクセラレーションノードによって直接応答されます。これにより、ダウンロード速度が向上すると同時に、オリジンサーバーの負荷が大幅に低減されます。
シナリオ2:大規模運営イベント
運営イベントの公開前に、イベントページに関連する静的リソースを事前にCOSへアップロードすると、リソースは自動的にEdgeOneアクセラレーションノードへプレヒートされます。イベント開始後、ユーザーがアクセスする静的リソースはすべてアクセラレーションノードによって応答されるため、高トラフィックによる遅延や輻輳が低減されます。
操作手順
シナリオ例
お客様がゲームメーカーであり、サイトドメイン www.example.com をEdgeOneアクセラレーションに接続し、オリジンサーバーがTencent Cloud COSで、アドレスがprefetch-cos-1251558888.cos.ap-guangzhou.myqcloud.comであると仮定します。複数のゲームAPKを頻繁に更新する必要があるため、APKのアップロード後にリソースが自動的にEdgeOneエッジノードへプレヒートされることを期待します。
事前準備
1. COSとSCFを有効化済みです。該当ストレージバケット名とリージョン情報を記録してください。 2. サイト接続ガイドに従ってサイトを追加し、EdgeOneプランを購入し、該当サイトIDを取得します。サイトIDは、サイト接続後にサイトリスト内で確認およびコピーできます。例えば、zone-2p42mkcpwz0yです。 3. EdgeOneコンソールで加速ドメイン名www.example.comを追加済みであり、オリジンサーバー設定はTencent Cloud COSです。 ステップ1:EdgeOne自動ウォームアップ用SCFの作成とデプロイ
2. 関数サービスページで、新規作成をクリックし、テンプレートを使用して作成を選択し、あいまい検索ボックスにEdgeOne 自動プレヒートと入力して選択し、次へをクリックします。
3. 「関数設定」ページでは、以下の設定は必須項目です。その他の設定項目はデフォルト設定のままにすることをお勧めします。
基本設定
関数名:関数の作成時に自動的に関数名が生成されます。お客様は、識別しやすい関数名にカスタマイズして変更できます。
地域:COSストレージバケットの所在地域を選択してください。例えば、広州です。
説明:この関数の用途を説明します。例えば、本サンプルではトリガーとしてCOSを使用します。COSファイルがアップロードされると、SCFがトリガーされ、EdgeOneによるファイルのエッジノードへの自動プレヒートが完了します。
実行ロール:デフォルトでは有効にチェックが入っており、SCFテンプレートの実行ロールを設定して使用します。 既存のロールを使用する場合は、既存のロールにQcloudCOSFullAccessおよびQcloudTEOFullAccessのプリセットポリシーが含まれていることを確認してください。
関数コード:テンプレートには、EdgeOne自動プレヒート機能を実現するデフォルトの関数コードが組み込まれており、変更は不要です。
環境設定:
詳細設定をクリックし、環境設定を選択します。環境変数に以下のkeyと対応するvalue値を追加する必要があります。その他の設定はデフォルトのままで問題ありません:
ZoneId:自動プレヒートを実施する必要があるドメイン名サイトexample.comに対応するZoneIdを入力してください。サイトIDの取得方法については準備作業をご参照ください。 eoDomains:ZoneIdの下に追加済みの加速ドメイン名を入力してください。例えば、www.example.comです。
説明:
現在のサイト配下に複数のドメイン名のオリジンサーバーがあり、それらが同じCOSストレージバケットを使用している場合で、複数のドメイン名すべてで自動プレヒートをトリガーしたい場合は、環境設定の入力時に複数の環境変数を追加できます。環境変数名はeoDomainsで始めます。例えば、eoDomains_1、eoDomains_2のように指定します。以下に例を示します:
トリガー設定
トリガー設定で、COS BucketとしてこのSCFと同じリージョンのストレージバケットを選択します。ストレージバケット名を入力してあいまい検索ができます。例えば、prefetch-cos-1251558888.cos.ap-guangzhou.myqcloud.com。その他の設定項目はデフォルト設定のままで問題ありません。
4. 完了をクリックすると、EdgeOne自動プレヒート関数の作成が完了します。
ステップ2:有効性の確認
1. COSコンソールにログインし、左側のメニューバーでストレージバケットリストをクリックします。 2. ストレージバケットリストページで、APKマスターパッケージの保存に使用するストレージバケット名をクリックします。
3. ファイルリストページで、prefetch-cos-1251558888.cos.ap-guangzhou.myqcloud.comのルートディレクトリに入ります。
4. ファイルをアップロードをクリックし、初めてファイルをアップロードします。例えば、v2_src.apkです。アップロードをクリックします。
6. 関数管理ページで、トリガー管理>ログ検索>呼び出しログを選択します。呼び出しログを通じて関数実行のログ情報を取得できます。呼び出し成功が表示され、ログ内のkey情報が先ほどアップロードしたファイル名と一致する場合、ファイルのCOSへのアップロードによってSCFがトリガーされ、EdgeOneキャッシュプレヒートAPIが正常に呼び出されたことを示します。
8. プレヒートキャッシュページで、履歴記録をクリックし、プレヒート結果が成功したかどうかを確認します。プレヒート成功と表示された場合、現在のプレヒートが完了したことを示します。
9. ブラウザで開発者ツールを開いた後、そのファイルのアクセスパスを入力してアクセスします。例えば、www.example.com/v2_src.apkです。レスポンスヘッダー内のEO-Cache-Status値を確認します。リソースがプレヒートされていない場合、初回アクセス時にMISSと表示されます。下図でHITと表示されている場合、リソースがすでにエッジノードへ自動プレヒートされており、初回アクセスでもキャッシュにヒットできる状態であることを示します。
監視アラート(推奨)
EdgeOneはプレヒートタスクにクォータ制限を設定します。具体的なクォータについてはプラン選定比較をご参照ください。 クォータ上限を超えたプレヒートキャッシュタスクの場合、プレヒートキャッシュAPIインターフェースを呼び出す際にエラーが発生し、最終的にSCFの実行状態は「呼び出し失敗」となります。この問題に迅速に対応するため、Cloud Monitorを通じてSCFの監視アラートを設定することをお勧めします。設定方法については、SCFアラート設定およびSCF監視指標の説明をご参照ください。