不要な実行を避ける
clientMetadata を確認します。特に、複数のアプリケーションに共通する単一の clientMetadata 値を確認する場合に有効です。clientMetadata を使用すると、新しいクライアントの追加が容易になるほか、Rule コードも読みやすくなります。特に、多数のアプリケーションが定義されている場合は、環境間で必要になるコード変更や設定値を減らせます。
アプリケーションのクライアントメタデータは、 で Application Settings > Advanced Settings > Application Metadata に移動して手動で設定することも、Auth0 の Update a client endpoint を使用してプログラムから設定することもできます。
早めに終了する
return と組み合わせて (Rule の) 関数を終了します。
API リクエストを最小限に抑える
global オブジェクトは、API 呼び出しで取得した情報をキャッシュするために使用でき、その情報は後続でパイプライン内のすべての Rules から利用できます。API を繰り返し呼び出すのではなく、情報の保存にはこれを使用することを推奨します。さらに、global オブジェクトは、Rules の実行間でほかの情報をキャッシュするためにも使用できます。
有料サービスへの呼び出しを制限する
- 公開サインアップを無効にして、サインアップして有料サービスへの呼び出しを発生させる可能性のあるユーザー数を減らす
- Rule が、許可された一部のユーザーやその他の適切な条件に対してのみトリガーされるようにする。たとえば、有料サービスへの呼び出しをトリガーする前に、ユーザーのメールアドレスのドメイン、ロール/グループ、サブスクリプションレベルなどを確認するロジックを追加するとよいでしょう。
Management API の呼び出しを抑える
auth0 オブジェクトを使用する場合でもその点を考慮する必要があります (そのため、使用は必要最小限にとどめてください) 。詳しくは、Management API Endpoint Rate Limitsを参照してください。
また、Management API の関数は処理時間がそれぞれ異なるため、それに応じてレイテンシも異なります。たとえば、Management API の List or Search users endpoint の呼び出しは、回数を最小限に抑え、どうしても必要な場合にのみ実行してください。これは auth0 オブジェクト経由で実行する場合でも同様です。
Rules の context オブジェクトで利用できる接続関連のプロパティを拡張したため、接続情報は Auth0 Management API を呼び出さなくても context オブジェクトから取得できるようになりました。詳しくは、Rules の Context Object Properties を参照してください。
実際の動作を確認するには、Check if user email domain matches configured domain Ruleテンプレートを使用している場合、GitHub の最新バージョンを確認する か、Auth0 Dashboard > Auth Pipeline > Rules に移動して Create を選択してください。注: 今回の変更で機能自体は変わりませんが、これまで Management API の呼び出しに依存していた Rules のパフォーマンスは向上します。
Management API への呼び出し (および適切なアクセストークンを取得するために必要な追加の呼び出し) をなくすことで、Rule コードのパフォーマンスと信頼性が向上します。
API 呼び出し時には明示的にタイムアウトを設定する
Auth0 への呼び出しを減らす
/.well-known/*のレスポンスをキャッシュする: この情報は頻繁に変わらないため、通常はキャッシュすることで Auth0 への呼び出し回数を減らせます。- ユーザー情報を取得するために
/userinfoを呼び出す代わりに、id_tokenをリクエストすることを検討してください。 - 一括削除や一括ロック解除などの一括呼び出しを減らしてください。