このガイドでは、非推奨の Firebase Extensions 環境から、Firebase(第 2 世代)コードベースの独自の Cloud Functions にインストールしてデプロイできる関数キットに拡張機能を移行する方法について説明します。
Firebase Extensions は、拡張機能の作成、更新、削除のすべての側面を管理していました。関数キットは、拡張機能の機能を一般的な第 2 世代の Cloud Functions for Firebase としてパッケージ化します。関数キットは標準の Cloud Functions であるため、Firebase プロジェクト内の Firebase CLI を使用して作成、更新、削除、トラブルシューティングを行います。このガイドでは、関数の管理方法と、更新が利用可能になったときにそれを適用する方法について説明します。
このガイドでは、Cloud Firestore から BigQuery へのストリーミング拡張機能(firestore-bigquery-export)を例として使用し、移行の各ステップのコマンドとコマンド出力を示します。
移行パスを決定する
Firebase は、すべての Firebase Extensions パブリッシャーに、拡張機能の代替として npm で公開される関数キットを作成することを推奨しています。拡張機能の関数キットの代替品が利用可能かどうかを確認するには、いくつかの方法があります。
- プロジェクトの Firebase コンソールの [拡張機能] ページに移動します。インストールした各拡張機能には、関数キットの代替が利用可能かどうかが示されます。
ターミナルで Firebase プロジェクト内で
firebase ext:listを実行して、インストールされている拡張機能のうち、公式の代替拡張機能があるものを表示します。firebase ext:list --project my-projecti extensions: ensuring required API firebaseextensions.googleapis.com is enabled... ✔ extensions: required API firebaseextensions.googleapis.com is enabled i extensions: list of extensions installed in my-project: ┌────────────────────────────────────┬───────────┬────────────────────────────────┬────────┬─────────┬─────────────────────┬───────────────────────────────────────────────────┐ │ Extension │ Publisher │ Instance ID │ State │ Version │ Your last update │ Replacement Kit │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/firestore-bigquery-export │ firebase │ firestore-bigquery-export-zbrp │ ACTIVE │ 0.3.2 │ 2026-06-10 18:35:03 │ @firebase-function-kits/firestore-bigquery-export │ ├────────────────────────────────────┼───────────┼────────────────────────────────┼────────┼─────────┼─────────────────────┼───────────────────────────────────────────────────┤ │ firebase/storage-resize-images │ firebase │ storage-resize-images │ ACTIVE │ 0.3.6 │ 2026-06-03 17:41:24 │ │ └────────────────────────────────────┴───────────┴────────────────────────────────┴────────┴─────────┴─────────────────────┴───────────────────────────────────────────────────┘ ⚠ Notice: Firebase Extensions will shut down on March 31, 2027. Learn more: https://firebase.google.com/docs/extensions/faq-and-troubleshooting
拡張機能に公式の関数キットの代替品がある場合は、npm の関数キットに移行するセクションの手順に沿って移行できます。
公開されている代替拡張機能が見つからない場合は、拡張機能のコードをフォークして独自の代替拡張機能を作成できます。これは、すべての拡張機能がオープンソースであるためです。これを行うには、独自に作成した関数キットに移行するガイドに沿って操作します。
| 移行パスを選択します。 | npm の関数キットに移行する 独自に作成した関数キットに移行する |
npm の関数キットに移行する
移行に関する既知の制限事項を確認する
拡張機能インスタンスの移行を開始する前に、回避策が必要な機能や、関数キットでまだサポートされていない機能が設定で使用されているかどうかを確認します。
- カスタム Docker リポジトリと KMS 鍵には手動の回避策が必要 Cloud Functions for Firebase は、カスタム Docker リポジトリまたは顧客管理の暗号鍵(KMS 鍵)を構成するための置換システム パラメータをサポートしていません。拡張機能でこれらのパラメータのいずれかを構成する場合は、よくある質問の回避策をご覧ください。
始める前に
Firebase CLI を設定し、Firebase プロジェクトを初期化する必要があります。CLI を使用する場合は、新しい移行コマンドと関数キットコマンドを含む firebase-tools バージョン >= 15.32.0 を使用していることを確認してください。
必要なアカウントの権限とロール
移行中に Firebase CLI で作成および構成する必要があるものに応じて、Firebase と Google Cloud での認証に使用するアカウントには、次のロールが必要です。
roles/firebaseextensions.editorroles/cloudbuild.builds.editorroles/artifactregistry.writerroles/run.developerroles/iam.serviceAccountUserroles/iam.serviceAccountCreatorroles/cloudfunctions.admin(パブリック エンドポイントにsetIamPermissionsを行う必要がある場合)roles/secretmanager.admin(シークレットを使用する場合)roles/serviceusage.serviceUsageAdmin(新しい API を有効にする必要がある場合)
これらの権限のほとんどはすでに付与されているため、以前に拡張機能をインストールして関数をデプロイしたアカウントを使用することをおすすめします。移行するアカウントにさらにロールが必要な場合は、Google Cloud IAM の手順に沿って追加します。
CLI ワークフローを選択する
拡張機能インスタンスから npm で利用可能な関数キットに移行するには、次のいずれかのオプションを選択します。
- (推奨)
ext:migrateCLI コマンドを使用して移行します。このコマンドは、置き換える拡張機能をアンインストールする前に、関数キットの置き換えをデプロイします。 - Function Kits CLI コマンドを使用して移行します。拡張機能の更新、関数キットのインストール、拡張機能と同様の構成、キットのデプロイ、拡張機能のアンインストールには、個別のコマンドを使用できます。これにより、コマンドの並べ替えや、ステップ間での追加作業の実行をより柔軟に行うことができます。
ext:migrate を使用して移行する
拡張機能インスタンスごとに 1 回、次のコマンドを実行して移行を開始します。
firebase ext:migrate --project <project-id>
このコマンドでは、次の手順について説明します。
- 移行する拡張機能を選択します。この拡張機能には、公式の関数キットの代替品が用意されています。
- その拡張機能の特定のインスタンスを選択する。
- 必要に応じて、拡張機能を最新バージョンに更新する。
- 関数キットをインストールし、拡張機能インスタンスの構成と同じようにインスタンスを構成する。
- 機能キットをデプロイしています。
- 関数キットが正常にデプロイされ、ライフサイクル フック(存在する場合)がすべて実行されたことを確認する。
- 拡張機能インスタンスをアンインストールしています。
移行する特定の拡張機能または拡張機能インスタンスがわかっている場合は、次のコマンドライン フラグを使用して指定します。
firebase ext:migrate --extension firebase/firestore-bigquery-export --project <project-id>
# or
firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --project <project-id>
移行先の特定のパッケージがわかっている場合、特に Google がリストに掲載している公式の代替パッケージではない場合は、--package フラグを使用して指定します。
firebase ext:migrate --ext-instance firestore-bigquery-export-abcd --package @firebase-function-kits/firestore-bigquery-export --project <project-id>
関数キットのデプロイを確認する
キットの firebase deploy にエラーがないことを確認するには、デプロイログを調べて、ライフサイクル フックがトリガーされたかどうかを確認します。Cloud Firestore から BigQuery へのストリーミングなどの一般的な拡張機能では、ライフサイクル フックが使用されます。ライフサイクル フックがトリガーされたときの例を次に示します。
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project
これらのログメッセージは、次のことを確認します。
- ライフサイクル フックが見つかり、実行されました。
- ライフサイクル フックに関連付けられたタスクキューにタスクがキューに入れられた。
- Cloud Logging へのリンクが提供されているため、タスクがエラーなしで完了したことを確認できます。
ログリンクから Google Cloud コンソールに移動し、ログにエラーがなく、タスクキュー イベントが正常に処理されたことを確認します。ライフサイクル イベントが正常に実行されなかった場合は、次のコマンドを実行して再トリガーできます。
firebase functions:lifecycle:run <hook-name> <codebase>
関数キット インスタンスを初めてデプロイする場合は、次のコマンドを実行します。
firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>
検証中にこの移行を停止または元に戻す場合は、拡張機能をアンインストールするの手順に沿ってキットをアンインストールできます。
関数キットの初期デプロイが正常に完了したことを確認したら、キットの機能が実際に想定どおりに動作していることを検証する必要があります。拡張機能自体はまだ実行されているため、拡張機能が動作していること、今後も動作することを確認するだけでなく、2 つのうちの 1 つが動作していることを確認する必要があります。
処理が変更されておらず、拡張機能とキットから重複する結果が表示されない場合は、キットの機能をトリガーした後にキットのログを直接確認することをおすすめします。
実施例: Cloud Firestore から BigQuery へのストリーミング
Stream Cloud Firestore to BigQuery 拡張機能を使用すると、同じイベントがキットと拡張機能に配信された場合、未加工の変更ログテーブル(*_raw_changelog)と最新のビューテーブル(*_raw_latest)の両方への書き込みが重複除去されます。そのため、BigQuery に行や重複行が存在するかどうかを使用して、キットが機能していることを検証することはできません。
firebase functions:logs を使用して Firestore コレクションに書き込んだ直後に関数ログを表示し、書き込みが正常に処理されたことを示すログエントリを探します。デフォルトのインスタンス ID が firestore-bigquery-export のこのキットは、次のようになります。
2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2
ログが多数ある場合は、次のコマンドを使用して特定の Kit 関数に絞り込むことができます。
firebase functions:log --only <function name>
キット インスタンスの特定の関数名を確認するには、次のコマンドを使用します。
firebase functions:list | grep kit-<kit instance id>
この例では、次のようになります。
firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery │ v2 │ google.cloud.firestore.document.v1.written │
│ kit-firestore-bigquery-export-initBigQuerySync │ v2 │ taskQueue │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2 │ taskQueue │
│ kit-firestore-bigquery-export-syncBigQuery │ v2 │ taskQueue │
関数キットの README を確認する
一部のキットでは、ファンクション キットによって自動的に処理される作業以外の追加作業が必要になる場合があります。インストールするキットの README を確認し、追加の手順に沿って操作します。
Function Kits CLI を使用して移行する
始める前に、キットに移行する拡張機能のインスタンス ID と、代替キットの npm パッケージ名を特定して書き留めておきます。どちらも firebase ext:list の出力で確認できます。ext:list の使用例については、移行パスの決定をご覧ください。
1. 拡張機能インスタンスを最新バージョンにアップグレードする
拡張機能インスタンスと代替キットの差を最小限に抑えるには、拡張機能を最新バージョンに更新する必要があります。拡張機能がアップグレードされていない場合、拡張機能インスタンスとキットの代替品との間に、互換性を損なう重大な変更が生じる可能性があります。バージョン間でパラメータが変更されているため、エクスポートされた構成がキットで想定されているものと一致しない場合があります。
拡張機能を更新するには、インストール場所に応じて次のいずれかのオプションを使用します。
- Firebase コンソールから
- Firebase CLI から、次のコマンドを使用します。
firebase ext:update <extension-instance-id> --project <project-id> firebase deploy --only extensions --project <project-id>
この手順をスキップすると、拡張機能が最新バージョンでない場合、構成のエクスポート時に CLI からアップグレードを求められます。
2. 交換用の機能キット インスタンスを確認して取り付ける
関数キットをインストールするには、次の CLI コマンドを使用します。
firebase functions:kits:install --template migration --no-configure --package <npm-package-name> --project <project-id>
インストール時にキットのインスタンス ID を選択する際は、移行手順で後で使用できるように、必ずメモしておいてください。
キットがインストールされると、Firebase プロジェクト内に function-kits/<kit-name>/source のような場所を持つ新しいディレクトリが作成されます。このディレクトリには、拡張機能を置き換えるキットを含む npm パッケージと、Firebase がカスタム構成をデプロイして設定するためにこれらの関数をエクスポートする基本的な index.ts ファイルが含まれています。
キットの README を確認し、そこに記載されている追加の手順に沿って操作します。
同じプロジェクトにキットのインスタンスが複数ある場合は、このコマンドを繰り返して、同じキットの新しいインスタンスを作成できます。また、1 つのキット インスタンスを、異なる構成の 2 つの Firebase プロジェクト(ステージング プロジェクトと本番環境プロジェクトなど)にデプロイすることもできます。これらの高度な設定の詳細については、高度な移行をご覧ください。
実施例:
firebase functions:kits:install --template migration --no-configure --package @firebase-function-kits/firestore-bigquery-export --project my-project
3. 関数キット インスタンスを拡張機能と同じように構成する
このキット インスタンスを、置き換える拡張機能と同じ構成でカスタマイズする必要があります。拡張機能インスタンスの構成を .env ファイルにエクスポートできます。このファイルには、キットを含むすべての Cloud Functions のパラメータ、環境変数、シークレット参照の構成データが保存されます。キットの構成ファイルに直接エクスポートするには、次のコマンドを実行します。
firebase ext:export --mode functions --instance <extension-instance-id> --kit-instance <kit-instance-id> --project <project-id>
この手順の最後に、このインスタンスの構成情報が、インスタンス構成ディレクトリ内のプロジェクト固有の .env ファイルに保存されます。例: function-kits/<kit-name>/config-<instance-id>/.env.<project-id>
4. キットの交換をデプロイして確認する
キットがインストールされ、一連の関数として使用できるようになったので、キットの置換をデプロイできます。関数キットは標準の関数と同様に機能します。各キット インスタンスは、関数を整理するための個別のコードベースとして機能します。すべての関数をデプロイすることも、特定のキット インスタンスのみをデプロイすることもできます。1 つの拡張機能インスタンスを移行する場合は、そのキット インスタンスのみをデプロイします。
移行元の拡張機能インスタンスに存在しなかった新しいパラメータをキットで使用している場合、Firebase CLI はデプロイ プロセスの開始時にそれらのパラメータを求めるプロンプトを表示します。この例では、最新の firestore-bigquery-export 拡張機能を使用しているため、このようなことは想定されていませんが、多くのキットでは、キットで使用されるイベント トリガー ソースに新しいパラメータを求めるプロンプトが表示されます。この移行の一環として、以前は拡張機能で第 1 世代の関数を使用していた更新済みのキットでは、第 2 世代の関数が使用されます。第 2 世代では、関数はイベントソースの近くに配置され、追加のパラメータとして追加されます。今後のアップデートで新しいパラメータが追加されると、CLI は次のデプロイ時にプロンプトを表示します。
実施例:
firebase deploy --only functions:firestore-bigquery-export --project my-project
出力:
=== Deploying to 'my-project'...
i deploying functions
i functions: Loaded environment variables from function-kits/firestore-bigquery-export/config-firestore-bigquery-export/.env.my-project
i functions: ensuring required API bigquery.googleapis.com is enabled...
i functions: ensuring required API cloudtasks.googleapis.com is enabled...
✔ functions: required APIs are enabled
i functions: granting declarative IAM roles to managed service account:
- BigQuery Data Editor
- BigQuery User
- Cloud Datastore User
- Eventarc Event Receiver
- roles/run.invoker
✔ functions: successfully granted IAM roles
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-fsexportbigquery(us-central1)...
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-initBigQuerySync(us-central1)...
i functions: creating Node.js 22 (2nd Gen) function kit-firestore-bigquery-export-setupBigQuerySync(us-central1)...
✔ functions[kit-firestore-bigquery-export-fsexportbigquery(us-central1)] Successful create operation.
✔ functions[kit-firestore-bigquery-export-initBigQuerySync(us-central1)] Successful create operation.
✔ functions[kit-firestore-bigquery-export-setupBigQuerySync(us-central1)] Successful create operation.
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/us-central1/queues/kit-firestore-bigquery-export-initBigQuerySync.
✔ Deploy complete!
キットの firebase deploy にエラーがないことを確認するには、デプロイログを調べて、ライフサイクル フックがトリガーされたかどうかを確認します。Cloud Firestore から BigQuery へのストリーミングなどの一般的な拡張機能では、ライフサイクル フックが使用されます。トリガーされたときのライフサイクル フックの例を次に示します。
i functions: Executing afterFirstDeploy lifecycle hook targeting: kit-firestore-bigquery-export-initBigQuerySync...
✔ functions: Successfully queued task for lifecycle hook kit-firestore-bigquery-export-initBigQuerySync in queue projects/my-project/locations/europe-west1/queues/kit-firestore-bigquery-export-initBigQuerySync.
i functions: View logs for afterFirstDeploy at: https://console.cloud.google.com/logs/query;query=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22kit-firestore-bigquery-export--initbigquerysync%22%0Aresource.labels.location%3D%22europe-west1%22;project=my-project
これらのログメッセージは、次のことを確認します。
- ライフサイクル フックが見つかり、実行されました。
- ライフサイクル フックに関連付けられたタスクキューにタスクがキューに入れられた。
- Cloud Logging へのリンクが提供されているため、タスクがエラーなしで完了したことを確認できます。
ログリンクから Google Cloud コンソールに移動し、ログにエラーがなく、タスクキュー イベントが正常に処理されたことを確認します。ライフサイクル イベントが正常に実行されなかった場合は、次のコマンドを実行して再トリガーできます。
firebase functions:lifecycle:run <hook-name> <codebase>
関数キット インスタンスを初めてデプロイする場合は、次のコマンドを実行します。
firebase functions:lifecycle:run afterFirstDeploy <kit-instance-id>
検証中にこの移行を停止または元に戻す場合は、拡張機能をアンインストールするの手順に沿ってキットをアンインストールできます。
関数キットの初期デプロイが正常に完了したことを確認したら、キットの機能が実際に想定どおりに動作していることを検証する必要があります。拡張機能自体はまだ実行されているため、拡張機能が動作していること、今後も動作することを確認するだけでなく、2 つのうちの 1 つが動作していることを確認する必要があります。
処理が変更されておらず、拡張機能とキットから重複する結果が表示されない場合は、キットの機能をトリガーした後にキットのログを直接確認することをおすすめします。
実施例: Cloud Firestore から BigQuery へのストリーミング
Stream Cloud Firestore to BigQuery 拡張機能を使用すると、同じイベントがキットと拡張機能に配信された場合、未加工の変更ログテーブル(*_raw_changelog)と最新のビューテーブル(*_raw_latest)の両方への書き込みが重複除去されます。そのため、BigQuery に行や重複行が存在するかどうかを使用して、キットが機能していることを検証することはできません。
firebase functions:logs を使用して Firestore コレクションに書き込んだ直後に関数ログを表示し、書き込みが正常に処理されたことを示すログエントリを探します。デフォルトのインスタンス ID が firestore-bigquery-export のこのキットは、次のようになります。
2026-09-25T19:52:46.328612Z I kit-firestore-bigquery-export-fsexportbigquery: Started execution of extension
2026-09-25T19:52:46.328644Z I kit-firestore-bigquery-export-fsexportbigquery: {"message":"Firestore event received by onDocumentWritten trigger","document_name":"projects/extensions-eventarc-testing/databases/(default)/documents/exported-messages/cmGP6XLyksqGdw2OgTOq","operation":0,"event_id":"9f59a2a4-1a5e-4c41-a32d-561e3c734502"}
2026-09-25T19:52:46.616064Z I kit-firestore-bigquery-export-fsexportbigquery: Completed execution of extension
2026-09-2
ログが多数ある場合は、次のコマンドを使用して特定の Kit 関数に絞り込むことができます。
firebase functions:log --only <function name>
キット インスタンスの特定の関数名を確認するには、次のコマンドを使用します。
firebase functions:list | grep kit-<kit instance id>
この例では、次のようになります。
firebase functions:list | grep kit-firestore-bigquery-export
│ kit-firestore-bigquery-export-fsexportbigquery │ v2 │ google.cloud.firestore.document.v1.written │
│ kit-firestore-bigquery-export-initBigQuerySync │ v2 │ taskQueue │
│ kit-firestore-bigquery-export-setupBigQuerySync │ v2 │ taskQueue │
│ kit-firestore-bigquery-export-syncBigQuery │ v2 │ taskQueue │
5. 拡張機能をアンインストールする
デプロイした関数キットを確認したら、拡張機能をアンインストールして、キットと拡張機能で動作が重複しないようにします。--immediate フラグを渡すと、インストール方法に関係なく、Firebase CLI からすべての拡張機能をアンインストールできます。
firebase ext:uninstall <extension-instance-id> --project <project-id> --immediate
実施例:
firebase ext:uninstall firestore-bigquery-export --project my-project --immediate
出力:
i extensions: uninstalling firestore-bigquery-export...
i extensions: deleting extension instance resources in project my-project...
✔ extensions: successfully uninstalled firestore-bigquery-export
高度な移行
複数の Firebase プロジェクトに拡張機能があり、それらを 1 つのコードベースで管理したい場合があります。たとえば、同じインフラストラクチャを testing 環境と production 環境にデプロイし、それぞれに BigQuery にエクスポートする documents Cloud Firestore インスタンスがある場合、firestore-bigquery-export 拡張機能の 2 つのインスタンスがインストールされている可能性があります。
export-documents-testingexport-documents-production
Firebase CLI を使用して、これら 2 つの拡張機能インスタンスを 1 つのコードベース内の 2 つの関数キット インスタンスに移行し、firebase deploy --project testing と firebase deploy --project production を使用してデプロイした場合、各デプロイで testing 環境と production 環境の両方に 2 つのインスタンスが作成されます。
代わりに、2 つの拡張機能インスタンスを、複数のプロジェクトにデプロイされた firestore-bigquery-export の 1 つの関数キット インスタンスに置き換えます。各プロジェクトには独自の構成があります。インスタンスの構成ディレクトリは次のようになります。
config-export-documents/.env.testing.env.production
testing と production へのデプロイごとに、対応する構成を持つキットのインスタンスが 1 つ作成されます。既存の CLI コマンドは、ext:migrate または functions:kits:install の呼び出しごとに --project フラグを渡す限り、この設定を作成します。
実施例:
firebase functions:kits:install --package @firebase-function-kits/firestore-bigquery-export --project testing --no-configure --template migration
✔ What would you like to name this kit? firestore-bigquery-export
✔ What would you like to name this instance? export-documents
✔ Wrote function-kits/firestore-bigquery-export/source/package.json
✔ Wrote function-kits/firestore-bigquery-export/source/tsconfig.json
✔ Wrote function-kits/firestore-bigquery-export/source/.gitignore
✔ Wrote function-kits/firestore-bigquery-export/source/src/index.ts
i functions: Running npm install
✔ Wrote configuration info to firebase.json
✔ functions: Function kit firestore-bigquery-export successfully installed.
# This creates the export-documents instance with an empty .env.testing file
# for the testing project. Now populate it via export:
firebase ext:export --mode functions --instance export-documents-testing \
--kit-instance export-documents --project testing
# Repeat the export for production into the same kit instance to create
# .env.production from the export-documents-prod instance:
firebase ext:export --mode functions --instance export-documents-prod \
--kit-instance export-documents --project production
これで、testing プロジェクトと production プロジェクトにそれぞれの構成でデプロイするように構成された単一のキット インスタンスが作成されました。testing プロジェクトでインスタンスを作成し、production プロジェクトで同じパッケージに対して functions:kits:install コマンドを実行すると、testing 用に構成されたインスタンスを再利用するか、2 番目のインスタンスをインストールするかを選択するよう求められます。