セルベースのアーキテクチャ用にサーバーレスセルルーターを設定する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

セルベースのアーキテクチャ用にサーバーレスセルルーターを設定する

作成者: Mian Tariq (AWS) と Ioannis Lioupras (AWS)

コードリポジトリ: Serverless-Cell-Router

環境:PoC またはパイロット

テクノロジー: サーバーレス、コンテンツ配信、インフラストラクチャ

ワークロード: オープンソース

AWS サービス: Amazon API Gateway、AWSCLI、AWS CloudFormation、Amazon CognitoAmazon DynamoDBAWSLambda、Amazon S3、AmazonSQS、AWSStep Functions

[概要]

グローバルセルベースのアプリケーションのシステムへのエントリポイントとして、セルルーターはユーザーを適切なセルに効率的に割り当て、ユーザーにエンドポイントを提供する責任があります。セルルーターは、マッピングの保存 user-to-cell、セル容量のモニタリング、必要に応じて新しいセルのリクエストなどの機能を処理します。中断が発生する可能性がある間は、セルルーターの機能を維持することが重要です。

このパターンのセルルーター設計フレームワークは、耐障害性、スケーラビリティ、全体的なパフォーマンスの最適化に焦点を当てています。このパターンは静的ルーティングを使用し、クライアントは初回ログイン時にエンドポイントをキャッシュし、セルと直接通信します。このデカップリングは、セルルーターの障害発生時にセルベースのアプリケーションの中断のない機能を確保できるようにすることで、システムの耐障害性を向上させます。

このパターンは、 AWS CloudFormation テンプレートを使用してアーキテクチャをデプロイします。テンプレートのデプロイの詳細、または を使用して同じ設定をデプロイするには AWS Management Console、「追加情報」セクションを参照してください。

重要: このパターンで示されているデモンストレーション、コード、 AWS CloudFormation テンプレートは、説明のみを目的としています。提供されるマテリアルは、設計パターンを説明し、理解を支援する目的のみを目的としています。デモとコードは本番稼働用ではないため、ライブ本番稼働アクティビティには使用しないでください。本番環境でコードまたはデモを使用しようとすることは強くお勧めせず、お客様の責任となります。このパターンまたはそのコンポーネントを本番環境に実装する前に、適切な専門家に相談し、徹底的なテストを実行することをお勧めします。

前提条件と制限

前提条件

  • アクティブな Amazon Web Services (AWS) アカウント

  • AWS Command Line InterfaceAWS CLI) の最新バージョン

  • AWS CloudFormation スタック、 AWS Lambda 関数、および関連リソースを作成するために必要なアクセス許可を持つAWS 認証情報

製品バージョン

  • Python 3.12

アーキテクチャ

次の図は、セルルーターの大まかな設計を示しています。

セルルーターの 5 ステッププロセス。

図は、以下のワークフローをステップスルーします。

  1. ユーザーは、セルルーターAPIエンドポイントのフロントとして機能する Amazon API Gateway に連絡します。

  2. Amazon Cognito は認証と認可を処理します。

  3. AWS Step Functions ワークフローは、次のコンポーネントで構成されます。

    • Orchestrator - は、 Orchestrator AWS Step Functions を使用してワークフローまたはステートマシンを作成します。ワークフローは、セルルーター によってトリガーされますAPI。は、リソースパスに基づいて Lambda 関数Orchestratorを実行します。

    • ディスパッチャー - Dispatcher Lambda 関数は、登録された新しいユーザーごとに 1 つの静的セルを識別して割り当てます。この関数は、ユーザー数が最も少ないセルを検索し、ユーザーに割り当てることで、エンドポイントを返します。

    • マッパーMapperオペレーションは、 user-to-cell AWS CloudFormation テンプレートによって作成された RoutingDB Amazon DynamoDB データベース内のマッピングを処理します。トリガーされると、Mapper関数は、既に割り当てられたユーザーにエンドポイントを提供します。

    • Scaler - Scaler関数は、セルの占有率と使用可能な容量を追跡します。必要に応じて、Scaler関数は Amazon Simple Queue Service (Amazon SQS) を介して Provision and Deploy レイヤーにリクエストを送信して、新しいセルをリクエストできます。

    • ValidatorValidator関数はセルエンドポイントを検証し、潜在的な問題を検出します。

  4. は、セル情報と属性 (APIエンドポイント、 AWS リージョン状態、メトリクス) RoutingDBを保存します。

  5. セルの使用可能な容量がしきい値を超えると、セルルーターは Amazon 経由でプロビジョニングおよびデプロイサービスSQSを要求して新しいセルを作成します。

新しいセルが作成されると、 RoutingDBはプロビジョニングおよびデプロイレイヤーから更新されます。ただし、このプロセスはこのパターンの範囲を超えています。セルベースのアーキテクチャ設計の前提の概要と、このパターンで使用されるセルルーター設計の詳細については、「追加情報」セクションを参照してください。

ツール

AWS のサービス

  • Amazon API Gateway は、、、および をあらゆる規模で作成、公開REST、維持、モニタリングHTTP、 WebSocket APIs保護するのに役立ちます。

  • AWS CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および のライフサイクル全体を通じてリソースを管理するのに役立ちます AWS リージョン。

  • Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、ユーザー管理を提供します。

  • Amazon DynamoDB は、高速で予測可能でスケーラブルなパフォーマンスを提供するフルマネージドの NoSQL データベースサービスです。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

  • Amazon Simple Storage Service (Amazon S3) は、任意の量のデータを保存、保護、取得する上で役立つクラウドベースのオブジェクトストレージサービスです。

  • Amazon Simple Queue Service (Amazon SQS) は、安全で耐久性があり、利用可能なホストキューを提供し、分散ソフトウェアシステムとコンポーネントの統合と分離に役立ちます。

  • AWS Step Functions は、Lambda 関数とその他を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。

その他のツール

  • Python」は汎用のコンピュータープログラミング言語です。

コードリポジトリ

このパターンのコードは、 GitHub Serverless-Cell-Router リポジトリで使用できます。

ベストプラクティス

セルベースのアーキテクチャを構築する際のベストプラクティスについては、以下の AWS Well-Architected ガイダンスを参照してください。

エピック

タスク説明必要なスキル

サンプルコードリポジトリをクローンします。

Serverless-Cell-Router GitHub リポジトリをコンピュータにクローンするには、次のコマンドを使用します。

git clone https://github.com/aws-samples/Serverless-Cell-Router/
開発者

AWS CLI 一時的な認証情報を設定します。

の認証情報 AWS CLI を使用して を設定します AWS アカウント。このチュートリアルでは、 AWS IAMIdentity Center コマンドラインまたはプログラムによるアクセスオプションによって提供される一時的な認証情報を使用します。これによりAWS_ACCESS_KEY_ID、、AWS_SECRET_ACCESS_KEY、および AWS_SESSION_TOKEN AWS 環境変数が、 で使用する適切な認証情報で設定されます AWS CLI。

開発者

S3 バケットを作成する。

AWS CloudFormation テンプレートによるデプロイのために Lambda 関数を保存してアクセス Serverless-Cell-Routerするために使用される S3 バケットを作成します。S3 バケットを作成するには、次のコマンドを使用します。

aws s3api create-bucket --bucket <bucket name> --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1
開発者

.zip ファイルを作成します。

Functions ディレクトリにある Lambda 関数ごとに 1 つの .zip ファイルを作成します。これらの .zip ファイルは、Lambda 関数のデプロイに使用されます。Mac では、次のzipコマンドを使用します。

zip -j mapper-scr.zip Functions/Mapper.py zip -j dispatcher-scr.zip Functions/Dispatcher.py zip -j scaler-scr.zip Functions/Scaler.py zip -j cp validator-scr.zip Functions/Validator.py zip -j dynamodbDummyData-scr.zip Functions/DynamodbDummyData.py
開発者

.zip ファイルを S3 バケットにコピーします。

すべての Lambda 関数の .zip ファイルを S3 バケットにコピーするには、次のコマンドを使用します。

aws s3 cp mapper-scr.zip s3://<bucket name> aws s3 cp dispatcher-scr.zip s3://<bucket name> aws s3 cp scaler-scr.zip s3://<bucket name> aws s3 cp validator-scr.zip s3://<bucket name> aws s3 cp dynamodbDummyData-scr.zip s3://<bucket name>
開発者
タスク説明必要なスキル

AWS CloudFormation テンプレートをデプロイします。

AWS CloudFormation テンプレートをデプロイするには、次の AWS CLI コマンドを実行します。

aws cloudformation create-stack --stack-name serverless.cell-router \ --template-body file://Serverless-Cell-Router-Stack-v10.yaml \ --capabilities CAPABILITY_IAM \ --parameters ParameterKey=LambdaFunctionMapperS3KeyParameterSCR,ParameterValue=mapper-scr.zip \ ParameterKey=LambdaFunctionDispatcherS3KeyParameterSCR,ParameterValue=dispatcher-scr.zip \ ParameterKey=LambdaFunctionScalerS3KeyParameterSCR,ParameterValue=scaler-scr.zip \ ParameterKey=LambdaFunctionAddDynamoDBDummyItemsS3KeyParameterSCR,ParameterValue=dynamodbDummyData-scr.zip \ ParameterKey=LambdaFunctionsS3BucketParameterSCR,ParameterValue=<S3 bucket storing lambda zip files> \ ParameterKey=CognitoDomain,ParameterValue=<Cognito Domain Name> \ --region <enter your aws region id, e.g. "eu-central-1">
開発者

進捗確認。

にサインインし AWS Management Console、 で AWS CloudFormation コンソールを開きhttps://console.aws.amazon.com/cloudformation/、スタック開発の進行状況を確認します。ステータスが CREATE_COMPLETE の場合、スタックは正常にデプロイされています。

開発者
タスク説明必要なスキル

ユーザーにセルを割り当てます。

を開始するにはOrchestrator、次の curl コマンドを実行します。

curl -X POST \ -H "Authorization: Bearer {User id_token}" \ https://xxxxxx.execute-api.eu-central-1.amazonaws.com/Cell_Router_Development/cells

は関数の実行をOrchestratorトリガーしますDispatcher。次にDispatcher、 はユーザーの存在を検証します。ユーザーが見つかった場合、 は関連付けられたセル ID とエンドポイント Dispatcherを返しますURLs。ユーザーが見つからない場合、 はユーザーにセルをDispatcher割り当て、割り当てられたセルの残容量を評価するためにセル ID を Scaler関数に送信します。

Scaler 関数のレスポンスは次のとおりです。

"cellID : cell-0002 , endPoint_1 : https://xxxxx.execute-api.eu-north-1.amazonaws.com/ , endPoint_2 : https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/"

開発者

ユーザーセルを取得します。

を使用して Mapper関数Orchestratorを実行するには、次のコマンドを実行します。

curl -X POST \ -H "Authorization: Bearer {User id_token}" \ https://xxxxxxxxx.execute-api.eu-central-1.amazonaws.com/Cell_Router_Development/mapper

は、ユーザーに割り当てられたセルOrchestratorを検索し、次のレスポンスURLsでセル ID と を返します。

"cellID : cell-0002 , endPoint_1 : https://xxxxx.execute-api.eu-north-1.amazonaws.com/ , endPoint_2 : https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/"

開発者
タスク説明必要なスキル

リソースをクリーンアップします。

アカウントに追加料金が発生しないようにするには、以下を実行します。

  1. Lambda 関数用に作成した S3 バケットを空にします

  2. バケットを削除します。

  3. AWS CloudFormation スタックを削除します。

アプリ開発者

関連リソース

リファレンス

動画

Physalia: Amazon で高可用性を実現するセルベースのアーキテクチャ EBS

追加情報

セルベースのアーキテクチャ設計の前提

このパターンはセルルーターに焦点を当てていますが、環境全体を理解することが重要です。環境は、次の 3 つの個別のレイヤーで構成されています。

  • ルーティングレイヤー、またはセルルーターを含むシンレイヤー

  • さまざまなセルで構成されるセルレイヤー

  • セルをプロビジョニングしてアプリケーションをデプロイするプロビジョニングレイヤーとデプロイレイヤー

各レイヤーは、他のレイヤーに影響を与える障害が発生した場合でも機能を維持します。障害分離境界として機能し AWS アカウント ます。

次の図は、レイヤーの概要を示しています。セルレイヤーとプロビジョニングおよびデプロイレイヤーは、このパターンの範囲外です。

ルーティングレイヤー、複数のセルアカウントを持つセルレイヤー、プロビジョニングとデプロイレイヤー。

セルベースのアーキテクチャの詳細については、「セルベースのアーキテクチャによる影響範囲の削減: セルルーティング」を参照してください。

セルルーター設計パターン

セルルーターは、セル間で共有されるコンポーネントです。潜在的な影響を軽減するには、Routing レイヤーができるだけ薄いシンプルで水平方向にスケーラブルな設計を使用することが重要です。ルーティングレイヤーは、システムのエントリポイントとして機能し、ユーザーを適切なセルに効率的に割り当てるために必要なコンポーネントのみで構成されます。このレイヤー内のコンポーネントは、セルの管理や作成には関与しません。

このパターンは静的ルーティングを使用します。つまり、クライアントは初回ログイン時にエンドポイントをキャッシュし、その後セルとの直接通信を確立します。クライアントとセルルーター間の定期的なインタラクションが開始され、現在のステータスを確認したり、更新を取得したりできます。この意図的なデカップリングにより、セルルーターのダウンタイム発生時に既存のユーザーに対して中断のないオペレーションが可能になり、システム内で継続的な機能と回復力を提供します。

このパターンでは、セルルーターは次の機能をサポートしています。

  • プロビジョニングおよびデプロイレイヤーのセルデータベースからセルデータを取得し、ローカルデータベースを保存または更新します。

  • セル割り当てアルゴリズムを使用して、アプリケーションの新しい登録ユーザーごとにセルを割り当てます。

  • マッピングを user-to-cellsローカルデータベースに保存します。

  • ユーザー割り当て中にセルの容量を確認し、自動販売機のイベントをプロビジョニングおよびデプロイレイヤーに引き上げてセルを作成します。

  • セル作成基準アルゴリズムを使用してこの機能を提供します。

  • 静的セルURLsの を指定して、新しく登録されたユーザーリクエストに対応します。これらは、存続する時間 () でクライアントにキャッシュURLsされますTTL。

  • 新規または更新された を指定URLして、 の既存のユーザーリクエストに応答しますURL。

AWS CloudFormation テンプレートでセットアップされているデモセルルーターをさらに理解するには、以下のコンポーネントとステップを確認してください。

  1. Amazon Cognito ユーザープールを設定および設定します。

  2. セルルーターの API Gateway をセットアップして設定APIします。

  3. DynamoDB テーブルを作成します。

  4. SQS キューを作成して設定します。

  5. を実装しますOrchestrator

  6. Lambda 関数を実装します: DispatcherScalerMapperValidator

  7. 評価して検証します。

前提は、プロビジョニングレイヤーとデプロイレイヤーが既に確立されていることです。実装の詳細は、このアーティファクトの範囲を超えています。

これらのコンポーネントは AWS CloudFormation テンプレートによって設定および設定されるため、次の手順は説明的で高レベルに示されています。前提は、セットアップと設定を完了するために必要な AWS スキルがあることです。

1. Amazon Cognito ユーザープールのセットアップと設定

にサインインし AWS Management Console、 で Amazon Cognito コンソールを開きますhttps://console.aws.amazon.com/cognito/。アプリケーション統合、ホストされた UICellRouterPool、および必要なアクセス許可を使用して、 という名前の Amazon Cognito ユーザープールを設定および設定します。

2. セルルーターの API Gateway をセットアップおよび設定APIする

で API Gateway コンソールを開きますhttps://console.aws.amazon.com/apigateway/。Amazon Cognito ユーザープール と統合された Amazon Cognito オーソライザーを使用してCellRouter、 APIという名前の を設定および設定しますCellRouterPool。次の要素を実装します。

  • CellRouter API POSTメソッドを含む リソース

  • ステップ 5 で実装された Step Functions ワークフローとの統合

  • Amazon Cognito オーソライザーによる承認

  • 統合リクエストとレスポンスのマッピング

  • 必要なアクセス許可の割り当て

3. DynamoDB テーブルを作成する

で DynamoDB コンソールを開きhttps://console.aws.amazon.com/dynamodb/、次の設定tbl_routerで という名前の標準 DynamoDB テーブルを作成します。

  • パーティションキー marketId

  • ソートキー cellId

  • キャパシティモード ‒ プロビジョニング済み

  • Point-in-time リカバリ (PITR) ‒ オフ

Indexes タブで、 という名前のグローバルセカンダリインデックスを作成しますmarketId-currentCapacity-indexScaler Lambda 関数は、インデックスを使用して、割り当てられたユーザーの数が最も少ないセルを効率的に検索します。

次の属性を使用してテーブル構造を作成します。

  • marketId ‒ 欧州

  • cellId ‒ cell-0002

  • currentCapacity ‒ 2

  • endPoint_1 ‒ <最初のリージョンのエンドポイント>

  • endPoint_2 ‒ <第 2 リージョンのエンドポイント>

  • IsHealthy ‒ True

  • maxCapacity ‒ 10

  • regionCode_1eu-north-1

  • regionCode_2eu-central-1

  • userIds ‒ <E メールアドレス>

4. SQSキューの作成と設定

で Amazon SQSコンソールを開きhttps://console.aws.amazon.com/sqs/Amazon SQSキー暗号化でCellProvisioning設定された という標準SQSキューを作成します。

5. Orchestrator の実装

Orchestrator ルーターの として機能する Step Functions ワークフローを作成します。ワークフローは、セルルーター を介して呼び出すことができますAPI。ワークフローは、リソースパスに基づいて指定された Lambda 関数を実行します。ステップ関数をセルルーター API の API Gateway と統合しCellRouter、Lambda 関数を呼び出すために必要なアクセス許可を設定します。

以下の図に、ワークフローを示しています。選択状態は、Lambda 関数のいずれかを呼び出します。Lambda 関数が成功すると、ワークフローは終了します。Lambda 関数が失敗すると、フェイル状態が呼び出されます。

4 つの関数があり、失敗状態で終わるワークフローの図。

6. Lambda 関数の実装

DispatcherMapperScaler、および Validator関数を実装します。デモンストレーションで各関数を設定および設定するときは、関数のロールを定義し、DynamoDB テーブル で必要な操作を実行するために必要なアクセス許可を割り当てますtbl_router。さらに、各関数をワークフロー に統合しますOrchestrator

ディスパッチャー関数

このDispatcher関数は、新しい登録ユーザーごとに 1 つの静的セルを識別して割り当てる責任があります。新しいユーザーがグローバルアプリケーションに登録すると、リクエストは Dispatcher関数に送信されます。関数は、次のような事前定義された評価基準を使用してリクエストを処理します。

  1. リージョン - ユーザーがいるマーケットのセルを選択します。例えば、ユーザーが欧州からグローバルアプリケーションにアクセスする場合は、欧州 AWS リージョン で を使用するセルを選択します。

  2. 近接度またはレイテンシー - ユーザーに最も近いセルを選択します。例えば、ユーザーがオランダからアプリケーションにアクセスする場合、関数はフランクフルトとアイルランドを使用するセルを考慮します。どのセルが最も近いかの決定は、ユーザーのロケーションとセルリージョン間のレイテンシーなどのメトリクスに基づいています。このパターン例では、情報は Provision and Deploy レイヤーから静的に供給されます。

  3. HealthDispatcher関数は、指定されたセル状態 (Healthy = true または false) に基づいて、選択したセルが正常かどうかを確認します。

  4. キャパシティ - ユーザーディストリビューションはセルロジック内の最小ユーザー数に基づいているため、ユーザーは最小ユーザー数を持つセルに割り当てられます。

注: これらの基準は、この例のパターンを説明するためにのみ表示されます。実際のセルルーターの実装では、より洗練されたユースケースベースの基準を定義できます。

は Dispatcher 関数をOrchestrator呼び出して、ユーザーをセルに割り当てます。このデモ関数では、市場値は として定義される静的パラメータですeurope

このDispatcher関数は、セルが既にユーザーに割り当てられているかどうかを評価します。セルがすでに割り当てられている場合、Dispatcher関数はセルのエンドポイントを返します。ユーザーにセルが割り当てられていない場合、 関数はユーザー数が最も少ないセルを検索し、ユーザーに割り当て、エンドポイントを返します。セル検索クエリの効率は、グローバルセカンダリインデックスを使用して最適化されます。

マッパー関数

このMapper関数は、データベース内のマッピングの user-to-cellストレージとメンテナンスを監督します。登録された各ユーザーに単一のセルが割り当てられます。各セルには 2 つの異なる URLs- 各AWSリージョンに 1 つずつあります。API Gateway でホストされるAPIエンドポイントとして機能するこれらのURLs関数は、グローバルアプリケーションを指すインバウンドとして機能します。

Mapper 関数がクライアントアプリケーションからリクエストを受信すると、DynamoDB テーブルでクエリを実行して、 user-to-cell指定された E メール ID に関連付けられているマッピングtbl_routerを取得します。割り当てられたセルが見つかった場合、Mapper関数はセルの 2 つの をすぐに提供しますURLs。また、このMapper関数はセル の変更を積極的にモニタリングしURLs、ユーザー設定の通知または更新を開始します。

Scaler 関数

Scaler 関数はセルの残容量を管理します。新しいユーザー登録リクエストごとに、Scaler関数はDispatcher、関数がユーザーに割り当てられたセルの利用可能な容量を評価します。指定された評価基準に従ってセルが所定の制限に達した場合、関数は Amazon SQSキューを介して Provision and Deploy レイヤーへのリクエストを開始し、新しいセルのプロビジョニングとデプロイを要求します。セルのスケーリングは、次のような一連の評価基準に基づいて実行できます。

  1. 最大ユーザー数 - 各セルには最大ユーザー数が 500 人まで指定できます。

  2. バッファ容量 - 各セルのバッファ容量は 20% です。つまり、各セルはいつでも 400 ユーザーに割り当てることができます。残りの 20% のバッファ容量は、将来のユースケースや予期しないシナリオ (セルの作成やプロビジョニングサービスが利用できない場合など) の処理用に予約されています。

  3. セルの作成 - 既存のセルが容量の 70% に達すると、追加のセルを作成するリクエストがトリガーされます。

: これらの基準は、この例のパターンを説明するためにのみ表示されます。実際のセルルーターの実装では、より詳細なユースケースベースの基準を定義できます。

デモScalerコードは、 が新しく登録したユーザーにセルをDispatcher正常に割り当てOrchestratorた後、 によって実行されます。はScaler、 からセル ID を受信するとDispatcher、事前定義された評価基準に基づいて、指定されたセルに、追加のユーザーに対応するのに十分な容量があるかどうかを評価します。セルの容量が不十分な場合、Scaler関数は Amazon SQSサービスにメッセージをディスパッチします。このメッセージは、プロビジョニングおよびデプロイレイヤー内のサービスによって取得され、新しいセルのプロビジョニングを開始します。

バリデータ関数

このValidator関数は、セルアクセスに関連する問題を特定して解決します。ユーザーがグローバルアプリケーションにサインインすると、アプリケーションはユーザープロファイル設定URLsからセルの を取得し、ユーザーリクエストをセル内の 2 つの割り当てられたリージョンのいずれかにルーティングします。にアクセスできない場合、アプリケーションURLsは検証URLリクエストをセルルーターにディスパッチできます。セルルーターは をOrchestrator呼び出しますValidator。は検証プロセスValidatorを開始します。検証には、その他のチェックとして以下が含まれる場合があります。

  • リクエストURLs内のセルをデータベースURLsに保存して相互参照し、潜在的な更新を特定して処理する

  • ディープヘルスチェックの実行 (セルのエンドポイントへのHTTP GETリクエストなど)

結論として、 Validator関数はクライアントアプリケーションリクエストに応答し、必要な修復ステップとともに検証ステータスを提供します。

Validator は、ユーザーエクスペリエンスを向上させるように設計されています。インシデントによりセルが一時的に使用できなくなるため、特定のユーザーがグローバルアプリケーションにアクセスできないシナリオを考えてみましょう。Validator 関数は、一般的なエラーを提示する代わりに、指示的な修復ステップを提供できます。これらのステップには、次のアクションが含まれる場合があります。

  • インシデントについてユーザーに通知します。

  • サービスが利用できるまでのおおよその待機時間を指定します。

  • 追加情報を取得するためのサポート連絡先番号を指定します。

Validator 関数のデモコードは、リクエストURLs内のユーザーが指定したセルがtbl_routerテーブルに保存されたレコードと一致することを確認します。このValidator関数は、セルが正常かどうかも確認します。