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

Function Compute:書き換えポリシーの設定 (パブリックレビュー)

最終更新日:Sep 09, 2024

書き換えポリシーを使用すると、リクエストのURI (Uniform Resource Identifier) を変更できます。 書き換えポリシーを設定して、カスタムドメイン名を使用して関数にアクセスするリクエストのURIを変更できます。 このトピックでは、カスタムドメイン名の書き換え方法と、Function Computeコンソールでカスタムドメイン名の書き換えポリシーを設定する方法について説明します。

背景情報

Function Computeの書き換えポリシーを使用して、URIのpathパラメーターとqueryパラメーターのみを変更できます。

カスタムドメイン名を使用して関数にアクセスするリクエストのURIを変更するには、function Computeコンソールでカスタムドメイン名の書き換えポリシーを設定します。

書き換え方法

Function Computeでは、ルートレベルでカスタムドメイン名の書き換えポリシーを設定でき、完全書き換え、ワイルドカード書き換え、正規表現書き換えの書き換え方法をサポートしています。

正確な書き換え

正確な書き換え方法では、リクエストのURIのpathパラメーターの値を置換ルールの文字列に置き換えることができるのは、pathパラメーターの値が一致するルールの文字列と完全に一致する場合のみです。 たとえば、一致するルールが /oldで、置換ルールが /newの場合、URI /oldはリクエスト内の /newに書き換えられます。 次の表は、完全書き換え方法を使用した照合の例を示しています。

一致ルール

置換ルール

元のURI

URI後の書き換え

/old

/new

/old

/new

/test/old

一致しない

/serviceName.Qualifier

/serviceA

/serviceName.Qualifier

/serviceA

ワイルドカードの書き直し

ワイルドカード書き換えメソッドは、ほとんどのビジネス要件を満たすことができる単純なマッチングメソッドを提供します。

ワイルドカード書き換え方法では、アスタリスク (*) をワイルドカード文字として使用して、一致ルールで任意の長さの文字列を指定できます。 置換ルールは、マッチングルール内のワイルドカード文字の位置に基づいて、マッチングされた文字列を参照することができる。 たとえば、一致するルールが /api/* で、置換ルールが /$1の場合、URI /api/getFunctionNameはリクエスト内で /getFunctionNameに書き換えられます。 次の表に、ワイルドカードの書き換え方法を使用した照合の例を示します。

説明

ワイルドカード書き換えメソッドでは、アスタリスク (*) とキャレット (^) を含む文字列を除き、すべての文字列が一致し、通常の文字列として処理されます。

  • *: 任意の長さの文字列に一致します。

  • ^: 文字列の先頭から照合を開始することを指定します。

一致ルール

置換ルール

元のURI

URI後の書き換え

/old

/new

/old

/new

/test /old

/new

^ /old

/new

/old

/new

/test /old

一致しない

/api/*

/$1

/api/getFunctionName

/getFunctionName

/api/getFunctionName&Version=1

/getFunctionName&Version=1

/css/*

/public/static/css/$1

/css/style.css

/public/static/css/style.css

/ServiceName/*/FunctionName/*/Qualifier/*

/$1.$3/$2

/ServiceName/svc-a/FunctionName/func-a/Qualifier/1

/svc-a.1/func-a

/f .. c

/helloworld

/f .. c

/helloworld

/func

一致しない

正規表現の書き直し

正規表現の書き換え方法では、一致ルールと置換ルールは標準の正規表現を使用します。 正規表現構文の詳細については、「RE2正規表現構文」をご参照ください。 次の表に、regex writeメソッドを使用したマッチングの例を示します。

説明

正規表現の書き換え方法は高度な方法であり、ワイルドカードの書き換え方法や正確な書き換え方法よりも構文が複雑です。 特別なシナリオを除いて、完全な書き換え方法を使用することを推奨します。

一致ルール

置換ルール

元のURI

URI後の書き換え

^/old/[a-z]+/

/new

/old /ab/

/new

/test /a-b/

一致しない

^/api/.+?/(.*)

/api/v2/$1

/api/v1/test

/api/v2/test

/api/v1-pre /test

/api/v2/test

順序と優先度の一致

ルーティングルールでポリシーの書き換えに前述のすべての方法を使用すると、リクエストは次の順序でポリシーと一致します。ポリシーは厳密な書き換え方法を使用し、ポリシーはワイルドカード書き換え方法を使用し、ポリシーはregex書き込み方法を使用します

Function Computeでは、ルーティングルールで複数の書き換えポリシーを設定できます。 したがって、要求は、複数の書き換えポリシーと照合され得る。 リクエストが同じ書き換え方法を使用する複数の書き換えポリシーと一致する場合、Function Computeはポリシーの構成順序に基づいてリクエストをこれらのポリシーと照合します。 マッチングは停止し、リクエストがポリシーと最初に正常にマッチングされるまでリクエストのURIが置き換えられます。

たとえば、ワイルドカードの書き換え方法を使用する次のポリシーが設定されています。

var rule1 = &WildcardRules{
    Match:       "/api/v1/*",
    Replacement: "/api/v2/$1",
}

var rule2 = &WildcardRules{
    Match:       "/api/*/*",
    Replacement: "/api/v3/$2",
}
  • 書き換えポリシーが [rule1, rule2] の場合、リクエスト内でURI /api/v1/getFunctionName/api/v2/getFunctionNameに書き換えられます。

  • 書き換えポリシーが [rule2, rule1] の場合、リクエスト内でURI /api/v1/getFunctionName/api/v3/getFunctionNameに書き換えられます。

前提条件

サービスと関数が作成されます。 詳細については、「サービスの作成」および「関数の作成」をご参照ください。

手順

カスタムドメイン名を作成するときに、書き換えポリシーを設定できます。 既存のカスタムドメイン名に書き換えポリシーを追加することもできます。

カスタムドメイン名を作成するときの書き換えポリシーの設定

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[詳細機能] > [カスタムドメイン] を選択します。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [カスタムドメイン] ページで、[カスタムドメイン名の追加] をクリックします。

  3. [カスタムドメイン名の追加] ページで、[ドメイン名] パラメーターを設定し、[ルート] パラメーターの右側にある [ポリシーの書き換え] をクリックします。

  4. [書き換えポリシーの設定] パネルで、[+ 書き換えポリシーの追加] をクリックし、ドロップダウンリストからポリシーを選択し、[OK] をクリックします。 edit-rewriterule

既存のカスタムドメイン名の書き換えポリシーを追加する

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[詳細機能] > [カスタムドメイン] を選択します。

  2. [カスタムドメイン] ページで、目的のカスタムドメイン名を見つけ、[操作] 列の [変更] をクリックします。

  3. [書き換えポリシーの設定] パネルで、[+ 書き換えポリシーの追加] をクリックし、ドロップダウンリストからポリシーを選択し、[OK] をクリックします。 edit-rewriterule