移行を計画する
移行を計画するときのヒント
- フラグを使って、コストがかかる操作や1回限りの操作が重複しないようにします。
- 変更は、影響やトラフィックが最も少ない時間帯や時期に行います。
- 移行のスクリプトを作成し、一括または繰り返してテストと実装が行えるように、Auth0 Deploy CLIの使用を考慮します。
制限事項を理解する
- Actionsは、アクセストークンやAPI応答などのデータを複数の実行にわたって保持することはできません。
- Actionsには、HooksのようにManagement APIのアクセストークンやグローバル
auth0オブジェクトへのアクセスが提供されていません。
コードを変換する
コードを変換するときのヒント
- 一般的に、Actionsの
eventオブジェクトについて、Hooks機能に渡されたオブジェクトの読み取り専用プロパティを確認します。 - コードを書くときは、Auth0 DashboardのActions Code Editorを使います。エラーがハイライトされたり、オートコンプリート機能によって提案が自動入力されたりするので、便利です。
- 稼働させる前に、新しいActionsのテストをステージング環境やテスト環境で念入りに行います。
フックコードを新しいアクションにコピーする
フックのコードを新しいアクションにコピーし、Auth0 DashboardのActionsコードエディターで使用することをお勧めします。コードにある未解決の問題が特定できます。
- 運用テナントにログインし、変換元となるフックのコードをコピーします。
- 非運用テナントに切り替えて、[Auth0 Dashboard] > [Actions(アクション)] > [Library(ライブラリ)]に移動します。
-
[Build Custom(カスタムの構築)] を選択した後、
- 変換するフックの名前と一致するアクションの Name(名前) を入力します。
-
[Trigger(トリガー)] で、適切なトリガーを選択します 。
フックのタイプ アクションのトリガー Client Credentials Exchange(クライアント資格情報交換) M2M/Client-Credentials(M2M/クライアント資格情報) Pre-User-Registration(ユーザー登録前) Pre User Registration(ユーザー登録前) Post-User-Registration(ユーザー登録後) Post User Registration(ユーザー登録後) Post-Change-Password(パスワード変更後) Post Change Password(パスワード変更後) Send Phone Message(電話メッセージの送信) Send Phone Message(電話メッセージの送信) - [Runtime(ランタイム)] で、 [Node 16] を選択します。
- [Create(作成)] を選択します。
- Actionsコードエディターのコードブロックで、変換したいフックコードをエクスポートされた関数の下に貼り付けます。
-
コードを関数に移動するときに、この記事で後述している変更を加えます。Actionsの新しいトリガーに関連付けられた
eventオブジェクトについてもお読みください。このガイドの後半で「データへのアクセス方法を変更する」セクションに移動すると、関連するドキュメントへのリンクが表示されます。
関数宣言を変更する
| フックの種類 | 名前付きエクスポート |
|---|---|
| Client Credentials Exchange(クライアント資格情報交換) | onExecuteCredentialsExchange |
| Pre-User Registration(ユーザー登録前) | onExecutePreUserRegistration |
| Post-User Registration(ユーザー登録後) | onExecutePostUserRegistration |
| Post-Change Password(パスワード変更後) | onExecutePostChangePassword |
| Send Phone Message(電話メッセージ送信) | onExecuteSendPhoneMessage |
依存関係を変換する
npmレジストリで利用可能なパッケージを要求することができます。
npmモジュールが最新バージョンでないなら、今こそアップデートする絶好の機会です!- フックコード内の
requireステートメントを検索してください。 - バージョン番号を削除しますが、これらの番号はメモしておいてください。
- 依存関係がコアNodeJSモジュールでない場合は、「初めてアクションを作成する」の「依存関係を追加する」セクションの手順に従って依存関係を追加してください。依存関係がコアNodeJSモジュールである場合は、追加する必要はありません。
- 見つけた
requireステートメントをfunction宣言の外に移動してください。
シークレットを変換する
- 操作中の特定のアクションに必要な値を保存します。
- アクション内からアクセスする必要がある値ごとにシークレットを追加します。方法については、「初めてアクションを作成する」の「 シークレットを追加する 」セクションをお読みください。
- コードを変換します。
データへのアクセス方法を変更する
eventオブジェクトに移動します。プロパティの多くはそのまま移行されましたが、わかりやすくするために一部が結合されました。
eventオブジェクトは、変換するフックの種類によって変化します:
- クライアント資格情報の交換 - Actionsイベントオブジェクト
- パスワード変更後- Actionsイベントオブジェクト
- ユーザー登録後 - Actionsイベントオブジェクト
- ユーザー登録前 - Actionsイベントオブジェクト
- 電話メッセージの送信 - Actionsイベントオブジェクト
フックの
contextオブジェクトとは異なり、eventオブジェクトのプロパティで保管・変更されたデータは、他のアクションでは使用できません。フックが、これらのプロパティでデータを設定することでコア機能をトリガーしている場合は、アクション間でデータを保持するために、Machine to Machine(M2M)やPre User Registration(ユーザー登録前)のアクションフローにあるapiインターフェイスを使う必要があります。コールバックを変換する
callback()関数を呼び出して、実行を完了する必要があります。それとは逆に、Actionsはコールバックのメカニズムを使用しないため、Actionsの関数からcallback()のすべてのインスタンスを削除する必要があります。
callback()関数を使ってクライアント資格情報交換やユーザー登録前のフックで要求を失敗させたりユーザーを更新したりしていた場合でも、Actionsでは新しいapiインターフェースを通じてこれを行うことができます。