再書き込みポリシーを使用すると、リクエストの Uniform Resource Identifier (URI) を変更できます。再書き込みポリシーを設定して、カスタムドメイン名を通じて関数に送信されるリクエストのリクエスト URI を変更できます。この Topic では、再書き込みパターンについて説明し、Function Compute コンソールでカスタムドメイン名の再書き込みポリシーを設定する方法について説明します。
背景情報
Function Compute では、再書き込みポリシーは URI の path と query のみを変更できます。scheme、host、port、または fragment は変更できません。
Function Compute では、カスタムドメイン名に再書き込みポリシーを設定して、関数のリクエスト URI を再書き込みできます。
再書き込みパターン
カスタムドメイン名は、ルートレベルの再書き込みをサポートしています。Function Compute は、完全一致再書き込み、ワイルドカード再書き込み、正規表現再書き込みの 3 つの再書き込みパターンをサポートしています。
完全一致再書き込み
完全一致再書き込みでは、リクエストの path が一致ルールと完全に一致する場合、path は置換ルールの文字列に置き換えられます。たとえば、一致ルールが /old で、置換ルールが /new の場合、/old へのリクエストは /new に再書き込みされます。次の表に、その他の例を示します。
一致ルール | 置換ルール | 元の URI | 再書き込み後の URI |
|
|
|
|
| 不一致 | ||
|
|
|
|
ワイルドカード再書き込み
ワイルドカード再書き込みパターンは、ほとんどのシナリオで機能するシンプルな一致メソッドです。
ワイルドカード再書き込みでは、アスタリスク (*) を使用して任意の文字列に一致させます。アスタリスクの順序に基づいて、置換ルールで一致した文字列を参照できます。たとえば、一致ルールが /api/* で、置換ルールが /$1 の場合、/api/getFunctionName へのリクエストは /getFunctionName に再書き込みされます。次の表に、その他の例を示します。
ワイルドカード再書き込みパターンでは、アスタリスク (*) とキャレット (^) 文字には特別な意味があります。その他の文字はリテラル文字列として扱われます。
*: 任意の文字列に一致します。^: 文字列の先頭に一致します。
一致ルール | 置換ルール | 元の URI | 再書き込み後の URI |
|
|
|
|
|
| ||
|
|
|
|
| 不一致 | ||
|
|
|
|
|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
| 不一致 |
正規表現再書き込み
正規表現再書き込みパターンでは、一致ルールと置換ルールは標準の正規表現構文に従います。構文の詳細については、「正規表現の構文」をご参照ください。次の表に、正規表現再書き込みの一致例を示します。
正規表現再書き込みは、特別なシナリオ向けの複雑な構文を持つ高度な機能です。ほとんどの場合、ワイルドカード再書き込みパターンを使用してください。
一致ルール | 置換ルール | 元の URI | 再書き込み後の URI |
|
|
|
|
| 不一致 | ||
|
|
|
|
|
|
一致順序と優先度
パターンの優先度は、高いものから順に、完全一致再書き込み → ワイルドカード再書き込み → 正規表現再書き込み です。
Function Compute では、単一のルーティングルールに対して複数の再書き込みポリシーを設定できます。そのため、1 つのリクエストが複数の再書き込みポリシーに一致する可能性があります。リクエストが同じ再書き込みパターンの複数のポリシーに一致する場合、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に再書き込みされます。
前提条件
手順
再書き込みポリシーは、カスタムドメイン名の作成時、または既存のカスタムドメイン名に対して設定できます。
カスタムドメイン名の作成時に再書き込みポリシーを設定する
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のメニューバーで、リージョンを選択します。[ドメイン管理] ページで、[カスタムドメイン名の追加] をクリックします。
[カスタムドメイン名の追加] ページで、[ドメイン名] を入力します。[ルーティング設定] セクションで、[再書き込みポリシー] の下にある [設定] をクリックします。
[再書き込みポリシーの設定] パネルで、[+再書き込みポリシーの追加] をクリックし、ポリシーを設定してから [OK] をクリックします。

既存のカスタムドメイン名に再書き込みポリシーを設定する
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のメニューバーで、リージョンを選択します。ドメイン名リストで、ターゲットドメイン名を見つけ、[アクション] 列の [編集] をクリックします。
カスタムドメイン名を編集するページで、[ルーティング設定] セクションの [再書き込みポリシー] の下にある [設定] をクリックします。
[再書き込みポリシーの設定] パネルで、[+再書き込みポリシーの追加] をクリックし、ポリシーを設定してから [OK] をクリックします。