書き換えポリシーを使用すると、リクエストの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後の書き換え |
|
|
|
|
| 一致しない | ||
|
|
|
|
ワイルドカードの書き直し
ワイルドカード書き換えメソッドは、ほとんどのビジネス要件を満たすことができる単純なマッチングメソッドを提供します。
ワイルドカード書き換え方法では、アスタリスク (*) をワイルドカード文字として使用して、一致ルールで任意の長さの文字列を指定できます。 置換ルールは、マッチングルール内のワイルドカード文字の位置に基づいて、マッチングされた文字列を参照することができる。 たとえば、一致するルールが /api/*
で、置換ルールが /$1
の場合、URI /api/getFunctionName
はリクエスト内で /getFunctionName
に書き換えられます。 次の表に、ワイルドカードの書き換え方法を使用した照合の例を示します。
ワイルドカード書き換えメソッドでは、アスタリスク (*
) とキャレット (^
) を含む文字列を除き、すべての文字列が一致し、通常の文字列として処理されます。
*
: 任意の長さの文字列に一致します。^
: 文字列の先頭から照合を開始することを指定します。
一致ルール | 置換ルール | 元のURI | URI後の書き換え |
|
|
|
|
|
| ||
|
|
|
|
| 一致しない | ||
|
|
|
|
|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
| 一致しない |
正規表現の書き直し
正規表現の書き換え方法では、一致ルールと置換ルールは標準の正規表現を使用します。 正規表現構文の詳細については、「RE2正規表現構文」をご参照ください。 次の表に、regex writeメソッドを使用したマッチングの例を示します。
正規表現の書き換え方法は高度な方法であり、ワイルドカードの書き換え方法や正確な書き換え方法よりも構文が複雑です。 特別なシナリオを除いて、完全な書き換え方法を使用することを推奨します。
一致ルール | 置換ルール | 元のURI | URI後の書き換え |
|
|
|
|
| 一致しない | ||
|
|
|
|
|
|
順序と優先度の一致
ルーティングルールでポリシーの書き換えに前述のすべての方法を使用すると、リクエストは次の順序でポリシーと一致します。ポリシーは厳密な書き換え方法を使用し、ポリシーはワイルドカード書き換え方法を使用し、ポリシーは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
に書き換えられます。
前提条件
手順
カスタムドメイン名を作成するときに、書き換えポリシーを設定できます。 既存のカスタムドメイン名に書き換えポリシーを追加することもできます。
カスタムドメイン名を作成するときの書き換えポリシーの設定
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。 [カスタムドメイン] ページで、[カスタムドメイン名の追加] をクリックします。
[カスタムドメイン名の追加] ページで、[ドメイン名] パラメーターを設定し、[ルート] パラメーターの右側にある [ポリシーの書き換え] をクリックします。
[書き換えポリシーの設定] パネルで、[+ 書き換えポリシーの追加] をクリックし、ドロップダウンリストからポリシーを選択し、[OK] をクリックします。
既存のカスタムドメイン名の書き換えポリシーを追加する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[カスタムドメイン] ページで、目的のカスタムドメイン名を見つけ、[操作] 列の [変更] をクリックします。
[書き換えポリシーの設定] パネルで、[+ 書き換えポリシーの追加] をクリックし、ドロップダウンリストからポリシーを選択し、[OK] をクリックします。