データベースアクションスクリプトは、カスタムデータベース接続用に作成する Node.js 関数です。ログイン、パスワード変更、ユーザー削除などの処理において、Auth0 が外部ユーザーストアとどのように連携するかを定義します。
データベースアクションスクリプトは、サーバーレス Webtask コンテナーのインスタンス内で、一連の JavaScript 関数として呼び出され実行されます。
各データベースアクションスクリプトの関数シグネチャには、最後のパラメータとして callback 関数が含まれます。Auth0 はこの callback 関数を提供し、操作の完了を通知します。
すべてのデータベースアクションスクリプトでは、完了する直前に (暗黙的に、または return ステートメントで明示的に) callback 関数を必ず1回だけ呼び出す必要があります。callback 関数が実行されないと、実行が停止し、最終的にエラーが返されます。
トラブルシューティングのために、Error オブジェクトを callback 関数に渡すことで、データベースアクションスクリプトからエラーを返すことができます。
callback() のように引数なしで callback 関数を呼び出すことは、callback(null) を呼び出すことと同じです。
データベースアクションスクリプトでは、Promise オブジェクトや async functions など、非同期 JavaScript の機能をサポートしています。非同期機能を使用すると、アクションスクリプトからノンブロッキング操作を実行できます。
アクションスクリプトで非同期処理を使用する場合は、非同期処理が完了するまで callback 関数の呼び出しを延期する必要があります。非同期操作は、Webtask コンテナーの実行制限内に完了する必要があります。
npm モジュールを使用すると、アクションスクリプト全体のサイズを削減できるほか、幅広い既成機能を利用できます。
Auth0 のサーバーレス Webtask コンテナーでは、多くのサポート対象の公開 npm モジュールを使用できます。ほかのモジュールが必要な場合は、Auth0 の担当者に依頼するか、サポートチケットを起票してください。
アクションスクリプトでは、プライベートリポジトリの npm モジュールはサポートされていません。
Webtask コンテナーと Auth0 (Auth0 テナント自体) から提供される複数のアーティファクトを含む、特定の環境を提供します。
Auth0 のサーバーレス Webtask コンテナーは、各 Auth0 テナントに関連付けられたプールからプロビジョニングされます。コンテナーインスタンス内で実行されるすべてのアクションスクリプトは、コンテナー固有のグローバル変数として機能する global オブジェクトにアクセスできます。
global オブジェクトを使用すると、コンテナーインスタンスで実行されるすべてのアクションスクリプトで使用する情報や関数を定義したり、サードパーティ (ログ記録) API 用の や、クライアント認証情報フローを介して取得した、Auth0 で定義した独自の API 用アクセストークンを保存するなど、取得コストの高いリソースをキャッシュしたりできます。
ユーザー固有の情報を global オブジェクトに保存しないでください。Auth0 ではアクションスクリプトの実行時にコンテナーアフィニティがないため、アクションスクリプトは実行中の任意のコンテナーインスタンス、またはプールに追加された新しいコンテナーインスタンスで実行される可能性があります。
global オブジェクト内のすべての代入宣言には、初期化処理も含める必要があります。これは、Webtask コンテナーが再利用またはインスタンス化されると global オブジェクトがリセットされるためです。
データベースアクションスクリプトで設定パラメータを指定すると、configuration オブジェクトを通じて、すべてのスクリプトから値を利用できるようになります。値は暗号化されます。
configuration オブジェクトは読み取り専用として扱い、アクションスクリプト内で値をハードコーディングしないために使用してください。たとえば、外部アイデンティティストアへのアクセスに使用する資格情報や API キーなどの機密情報を保存したり、tenant 固有の値を持つ変数を定義したりできます。
Organizationsを使用している場合、context オブジェクトを有効にすると、organizationデータをデータベースアクションスクリプトで利用できるようになります。これにより、id、name、metadata などの組織の詳細を含む追加の context 引数が、カスタムデータベーススクリプトに渡されます。
context オブジェクトは、一度有効にすると無効にできません。Delete スクリプトには、常に空の context オブジェクトが渡されます。
-
アクションスクリプトの合計サイズは、import する
npm モジュールを除き、100 KBを超えることはできません。サイズが大きいほど、Webtask プラットフォームでのパッケージ化および転送処理によるレイテンシーが増加し、システムのパフォーマンスに影響します。
-
各アクションスクリプトのコンテナーには約20秒の実行時間制限があり、制限を超えるとコンテナーは再利用されます。これにより、アクションスクリプトで保留中の処理が終了し、エラーが発生する可能性があります。