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

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

最終更新日:Jul 24, 2024

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

背景

Function Computeでは、書き換えポリシーはリクエストURIのpathパラメーターとqueryパラメーターの変更をサポートします。 ただし、リクエストURIのschemehostportfragmentのパラメーターは変更できません。

Function Computeでは、カスタムドメイン名の書き換えポリシーを設定して、関数に送信されたリクエストURIを書き換えることができます。

パターンの書き換え

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

正確な書き換え

厳密な書き換えパターンとは、要求内のpathパラメータが一致ルールと完全に一致する場合、path文字列が置換ルール内の文字列に置き換えられることを意味します。 たとえば、一致するルールに文字列 /oldが含まれ、置換ルールに文字列 /newが含まれている場合、リクエストの /oldは書き換えられ、/newに置き換えられます。 次の表は、特定の置換ルールに基づく一致例を示しています。

一致ルール

置換ルール

元のURI

書き換えURI

/old

/new

/old

/new

/test/old

Mismatch

/serviceName.Qualifier

/serviceA

/serviceName.Qualifier

/serviceA

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

ワイルドカード書き換えパターンは、ほとんどのシナリオに適用できる単純なマッチング方法を提供します。

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

説明

ワイルドカード書き換えパターンでは、アスタリスク (*) とキャレット (^) は特別な意味を持ち、残りの文字列は共通の文字列として照合されます。

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

  • ^: 文字列の先頭から文字列に一致します。

一致ルール

置換ルール

元のURI

書き換えURI

/old

/new

/old

/new

/test/old

/new

^/old

/new

/old

/new

/test/old

Mismatch

/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

Mismatch

正規表現の書き直し

正規表現の書き換えパターンでは、照合ルールと置換ルールは標準の正規表現に準拠しています。 正規表現の構文については、「RE2正規表現構文」をご参照ください。 次の表に、正規表現書き込みパターンを使用する一致例を示します。

説明

正規表現書き換えパターンは、複雑な構文規則を有する高度な書き換え方法である。 このパターンは特別なシナリオに適しています。 ほとんどの場合、正確な書き換えパターンを使用することをお勧めします。

一致ルール

置換ルール

元のURI

書き換えURI

^/old/[a-z]+/

/new

/old/ab/

/new

/test/a-b/

Mismatch

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

/api/v2/$1

/api/v1/test

/api/v2/test

/api/v1-pre/test

/api/v2/test

順序と優先度の一致

3つの書き換えパターンの優先度は、exact rewrite、wildcard rewrite、regex rewriteの順に並べられています。

Function Computeでは、ルーティングルールで複数の書き換えポリシーを設定できます。 要求は、複数の書き換えポリシーに一致させることができる。 リクエストが書き換えパターン内の複数の書き換えポリシーと一致する場合、Function Computeは、ポリシーを作成した時点に基づいて、リクエストをポリシーと照合します。 リクエストが最初にポリシーと一致すると、一致が停止し、リクエスト内の文字列が書き換えられて置き換えられます。

次のサンプルコードでは、書き換えルールの例を示します。

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

var rule2 = &WildcardRules{
    Match:       "/api/*/*",
    Replacement: "/api/v3/$2",
}
  • 書き換えポリシー [rule1, rule2] がユーザーに設定されている場合、リクエスト内の文字列 /api/v1/getFunctionNameが書き換えられ、/api/v2/getFunctionNameに置き換えられます。

  • 書き換えポリシー [rule2, rule1] がユーザーに設定されている場合、リクエスト内の文字列 /api/v1/getFunctionNameが書き換えられ、/api/v3/getFunctionNameに置き換えられます。

前提条件

関数が作成されます。 詳細については、「関数の管理」トピックの「関数の作成」セクションをご参照ください。

手順

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

新しいカスタムドメイン名の書き換えポリシーを設定する

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

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

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

  4. では、書き換えポリシーの設定パネル、クリック+ 書き換えポリシーの追加ビジネス要件に基づいてポリシーパターンを選択し、ポリシーのパラメーターを設定してから、OK.

    edit-rewriterule

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

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

  2. 上部のナビゲーションバーで、リージョンを選択します。 ドメイン名リストで、管理するドメイン名を見つけて、[操作] 列の [変更] をクリックします。

  3. [カスタムドメイン名の変更] ページで、ルーティング設定セクションをクリックし、設定の下で書き換えポリシーパラメーターを使用します。

  4. では、書き換えポリシーの設定パネル、クリック+ 書き換えポリシーの追加ビジネス要件に基づいてポリシーパターンを選択し、ポリシーのパラメーターを設定してから、OK.

    edit-rewriterule