コードコピーは主に、エッジ関数のコードを変更する際に、オンライントラフィックに影響を与えずに、新しいコードロジックを安全に検証し、リリースリスクを低減するために使用されます。
背景紹介
エッジ関数を使用してビジネスリクエストを処理する際、コードの反復(例:ビジネスロジックの追加、不具合の修正、パフォーマンスの最適化)には、直接リリースして本番トラフィックに影響を与えるリスクが常に存在します。EdgeOneエッジ関数はコードコピーの作成をサポートしており、検証対象の新しいバージョンのコードをコピーにデプロイし、指定リクエストヘッダーEO-Function-Replica-Name:<コピー名>を設定することで、特定のテストトラフィックをそのコピーバージョンにルーティングして検証できます。通常の本番トラフィックは引き続き正式バージョンの関数によって処理され、両者は完全に分離されており、互いに影響を与えません。
コードコピー機能を使用することで、次のことができます:
ゼロリスク検証:新しいコードは指定リクエストヘッダーを含むテストリクエストにのみ有効であり、本番トラフィックにはまったく影響しません。
柔軟な反復:コピーコードを随時変更し、繰り返しテストできます。毎回正式バージョンにリリースする必要はありません。
クイックリリース:検証完了後、コピーコードを正式バージョンに直接昇格させ、効率的にリリースを完了します。
前提条件
2. エッジ関数 > 関数管理で少なくとも1つのエッジ関数を作成しました。
操作紹介
コードコピーの作成
1. EdgeOneにログインし、左側のメニューバーでエッジ関数 > 関数管理をクリックして、関数リストページに移動します。 2. 関数リストで、更新する関数名をクリックして、関数詳細ページに進みます。
3. 関数詳細ページで、新規コピーをクリックします。本番コードのコピーまたはカスタム作成がサポートされています。
4. コードの編集を完了した後、保存をクリックし、コピー名を入力すると作成が完了します。コピー名には1~50文字を入力でき、使用できる文字はa-z、0-9、-です。また、-を単独で使用したり連続して使用したりすることはできず、先頭や末尾に配置することもできません。作成後の変更はできません。
説明:
1. 1つの関数内で作成できるコードコピーは最大2つです。
2. コピーコードは本番コードから完全に分離されており、コピーへの変更は本番関数の正常な動作に影響しません。
3. 環境変数とシークレットはコピーコードに対しても同様に有効です。
リクエストヘッダーを含むテストリクエストを送信し、コードの効果を検証する
想定シナリオ
コンソールで名前がtest-2xkazsasyf6k-1206341531の関数を作成しました。デフォルトアクセスドメインは以下の通りです:
https://test-2xkazsasyf6k-1206341531.eo-edgefunctions.comに、トリガールールをHOST = www.example.com AND URL_Path = /pic、コピー名をtest-replicaとして設定します。指定リクエストヘッダー EO-Function-Replica-Name: test-replicaを付与し、関数のカスタムドメインパスまたはデフォルトアクセスドメインにリクエストを送信すると、特定のテストトラフィックを該当コピーバージョンにルーティングして検証できます。
操作手順
1. cURL、Postman、またはその他のHTTPクライアントツールを使用して、関数のカスタムドメインパスまたはデフォルトアクセスドメインにリクエストを送信し、EO-Function-Replica-Nameリクエストヘッダーを付与します。curlを例にすると:
カスタムドメインパスによるテスト
curl -H "EO-Function-Replica-Name: test-replica" https://www.example.com/pic
デフォルトアクセスドメインによるテスト
curl -H "EO-Function-Replica-Name: test-replica" https://test-2xkazlasyf6k-1206341531.eo-edgefunctions.com
2. レスポンス内容を観察し、コピーコードの実行結果が期待どおりかどうかを確認します。
説明:
1. リクエストヘッダー名と値はどちらも大文字と小文字を区別します。テスト時に送信するリクエストヘッダーがここの設定と完全に一致することを確認してください。
2. 指定リクエストヘッダーを含まない通常のリクエストは引き続き本番コードによって処理されます。テストプロセス全体が本番コードに影響を与えることはないため、安心して実施できます。
検証成功後、コピーコードを本番コードに同期する
1. 関数詳細ページのコードコピーモジュールで、検証済みのコピーを選択し、本番コードへ比較して同期をクリックします。
2. 内容に誤りがないことを確認した後、同期を確認をクリックします。
3. 再確認後、コピー内のコードが本番コードを上書きし、すべての本番トラフィックの処理を開始します。
説明:
1. 本番コードへ同期した後、元のコードは置き換えられ、元に戻すことはできません。変更前にバックアップを作成することをお勧めします。