グローバル外部アプリケーション ロードバランサを使用すると、HTTP エラー ステータス コード(4xx
と 5xx
)が生成されたときの独自のエラー レスポンスをカスタマイズできます。ロードバランサ インスタンスとバックエンド インスタンスの両方によって生成されたエラーのエラー レスポンスをカスタマイズできます。Google Cloud Armor によってトラフィックが拒否されたときに生成されるエラー レスポンス コードのエラー レスポンスもカスタマイズできます。
次のカスタム エラー ページの例では、自社のブランディングとロゴ、関連ページへのリンク、カスタマイズされたメッセージを使用して、外部公開のコンシューマ アプリケーションのエラー レスポンスを構成しています。
カスタム エラー レスポンス ポリシーを使用すると、さまざまな HTTP エラー ステータス コード、URL ドメイン、URL パス、HTTP リクエスト ヘッダー、パラメータ フィールドにエラー レスポンスを構成できます。
カスタム エラー レスポンスには次のようなメリットがあり、ユーザー エクスペリエンスを向上させることができます。
- 一貫したブランディング エクスペリエンスを提供する
- コンテキスト情報と関連性のある情報を提供して、ユーザビリティとユーザー エクスペリエンスを向上させる
- ダウンタイムとクライアントサイドのエラーによる悪影響を軽減する
- ネットワーク セキュリティを強化する
カスタム エラー レスポンス ポリシーを構成しない場合は、図 2 に示すように、ブランド化されていない一般的なエラー オブジェクトが表示されます。
ユースケース
カスタム エラー レスポンス機能は多くのユースケースに対応しています。このセクションでは、その一部を紹介します。
独自のメンテナンス ページを定義する
バックエンドが異常な状態またはメンテナンス モードの場合は、会社のブランディングと情報を含むエラーページを返すことができます。コンテキストに応じたエラーページを作成し、コンタクト センターの電話番号や、ユーザーがウェブサイトに再度アクセスするタイミングなどの有用な情報を提供できます。ホスト名や HTTP エラーコードなどのエラー条件に基づいてエラーページをカスタマイズできます。
独自のデフォルト エラー ページを定義する
特定のエラーコードごとにエラー レスポンスをカスタマイズできます。たとえば、401 (Unauthorized)
HTTP レスポンス コードに対して「ログインまたは登録」のメッセージを表示するエラーページを設定できます。また、他のすべての 4xx
シリーズと 5xx
シリーズの HTTP エラーコードに対して、会社のブランディングなどの関連情報を表示するデフォルトのエラーページを設定することもできます。
セキュリティ ルールのエラー レスポンスを定義する
Google Cloud Armor セキュリティ ポリシーによってトラフィックが拒否されたときに生成されるエラー レスポンス コードに対して、カスタム エラー ページを返すことができます。このエラーページは、Google Cloud Armor セキュリティ ルールに入力したのと同じ 4xx
シリーズまたは 5xx
シリーズの HTTP エラーコードで構成する必要があります。
ダウンタイムの影響を軽減する
200 (OK)
HTTP ステータス コードを返し、静的ウェブページを提供するようにエラー レスポンスを構成することもできます。これにより、ダウンタイム発生時にエラーページではなく、より状況に適した有益な情報を表示できます。
クライアント リクエストの種類に基づいてエラー レスポンスをカスタマイズする
HTTP リクエスト ヘッダーとパラメータ(Content-Type
ヘッダーなど)に基づいてエラー レスポンスをカスタマイズできます。元のリクエストをエラーサービスに転送する際に、ルーティングで Content-Type
ヘッダーが評価され、ウェブページ(ブラウザからのリクエストの場合)または JSON(ウェブ API からのリクエストの場合)が配信されます。
カスタム エラー レスポンス ポリシーの仕組み
カスタム エラー レスポンス ポリシーは、URL マップリソースの 3 つのレベル(ロードバランサ レベル、URL ドメインレベル、URL パスレベル)で定義できます。
ロードバランサ レベル。このポリシーは、ロードバランサが受信したすべてのトラフィックに適用されます。
URL ドメインレベル。このポリシーは、特定のドメイン名またはホスト名(
www.example.com
など)に送信されるトラフィックに適用されます。URL パスレベル。このポリシーは、特定のパス(
www.example.com/images/*
など)に送信されるトラフィックに適用されます。このレベルでは、HTTP リクエスト ヘッダーとパラメータで高度な一致条件(Content-Type:application/json
など)を使用することもできます。
次の表に、ロードバランサ レベル、URL ドメインレベル、URL マップの URL パスレベルで適用されるカスタム エラー レスポンス ポリシーを示します。
ポリシーレベル | API フィールド |
---|---|
ロードバランサ | urlMaps.defaultCustomErrorResponsePolicy |
URL ドメイン | pathMatchers[].defaultCustomErrorResponsePolicy |
URL パス |
|
URL マップリソースの複数のレベルでカスタム エラー レスポンス ポリシーを構成すると、URL マップの最下位レベルのカスタム エラー ポリシーに指定されているエラー オブジェクトが返されます。URL マップの下位レベルで定義されたエラー レスポンス ポリシーは、より具体的であり、URL マップの上位レベルで定義されたエラー レスポンス ポリシーよりも優先されます。
たとえば、ロードバランサ レベルのカスタム エラー レスポンス ポリシーは、ポリシーがエラー条件に一致し、下位レベル(つまり、URL ドメインまたは URL パス)のエラーコードに一致するポリシーが定義されていない場合にのみ適用されます。同様に、URL ドメインレベルのカスタム エラー レスポンス ポリシーは、ポリシーがエラー条件に一致し、下位レベルのエラーコードに一致するポリシーが定義されていない場合にのみ適用されます。この構成の詳細については、ドメイン、パス、エラー レスポンス コードごとに詳細なカスタム エラー レスポンス ポリシーを構成するをご覧ください。
HTTP エラー レスポンス コードと一致する複数のエラー レスポンス ルールを指定する
カスタム エラー レスポンス ポリシー内の任意のレベルで、複数のエラー レスポンス ルールを指定できます。これらのルールでは、HTTP エラー レスポンスを特定のエラーコードまたはエラーコードの範囲と照合できます。エラーコードの範囲のルールと特定のエラーコードのルールを指定すると、特定のエラーコードを持つルールが優先されます。
たとえば、401 (Unauthorized)
エラーコードのルールと、4xx
シリーズのすべてのエラーコードに別のルールを構成するとします。バックエンド サービスが 401
エラーコードを返すと、401
エラーに一致するルールが適用されます。ただし、バックエンド サービスが 403
エラーコードを返す場合は、4xx
エラーのルールが適用されます。
HTTP レスポンス コードをオーバーライドする
エラー レスポンス ルールを使用すると、ロードバランサから返される HTTP レスポンス コードを変更できます。つまり、サーバーによって生成されたレスポンス コードをオーバーライドして、リクエストの最終的なレスポンス コードを定義できます。200 (OK)
、4xx
シリーズ、5xx
シリーズのレスポンス コード、その他の 3 桁のレスポンス コードなど、任意の HTTP レスポンス コードを返すように指定できます。レスポンス コードのオーバーライドの詳細については、特定のホストの特定のエラーコードのエラーページを構成するをご覧ください。
制限事項
この機能は、グローバル外部アプリケーション ロードバランサでのみサポートされています。リージョン モードと従来モードはサポートされていません。
カスタム エラー オブジェクトをエラーサービスから取得できない場合(コンテンツパスが正しく構成されていない場合など)は、ブランド化されていない一般的なエラー オブジェクトが返されます。
カスタム エラー レスポンス ポリシーは、セキュリティ リスクについてエラーサービスから返されたオブジェクトのモニタリングやフィルタリングを行いません。したがって、脆弱性を排除し、漏えいの影響を最小限に抑える必要があります。
Cloud Storage バケットの使用時の構成ミスを防ぐには、Cloud Storage の一般的なベスト プラクティスをご覧ください。
料金
カスタム エラー レスポンスの使用に追加料金はかかりません。Google Cloud Load Balancing に標準料金が適用されます。詳細は、料金をご覧ください。