在Cloud Run和Eventarc的支持下,Cloud Functions for Firebase(第 2 代)有可能為您提供更強大的基礎架構、對性能和可擴展性的高級控制,以及對函數運行時的更多控制。此預覽文檔解釋了第二代預覽中的新功能和此時可用的功能,並提供了有關如何使用新 API 的一些指導,無論是單獨使用還是與 Cloud Functions for Firebase(第一代)API 一起使用。
Cloud Functions for Firebase(第 2 代)的新功能
Cloud Functions for Firebase(第 2 代)中當前可用的更改和增強功能包括:
- 函數實例現在可以一次執行多個請求。此功能適用於具有一個專用 CPU 或更高版本的功能。可以在每個函數的基礎上或使用
setGlobalOptions
方法跨所有函數設置並發級別。如果未指定,具有 1 個專用 CPU 或更高的新功能將默認為 80 個並發請求。請參閱允許並發請求。 - 使用新的
cors
設置保護您的可調用函數和 HTTP 函數。 HTTP 觸發器現在也有一個cors
設置,使 CORS 更易於管理。 - Cloud Functions 現在建立在Cloud Run之上。如果您不熟悉 Cloud Run,請不要擔心:構建函數與以前一樣簡單。 Cloud Run 是一種更現代的無服務器產品,可為您提供更好的性能、更好的配置、更好的監控等。
- Google 與行業領導者合作創建了CloudEvents 規範。事件處理函數現在使用這個開放標準作為它們的事件簽名。
- 新的觸發器類型包括Firebase Alerts 觸發器、Firebase Extensions 的自定義事件觸發器,以及用於在 Cloud Tasks 上運行資源密集型任務的任務隊列函數(任務隊列函數在第一代中也可用)。
-
firebase-functions
SDK 經過重新設計,更適合現代 JavaScript。您可以全局配置第二代功能,使用選項對象,並使用模塊化導入。 - 如果長時間運行的工作負載需要,HTTP 函數現在可以有1 小時的超時時間(之前為 9 分鐘) 。
- 函數實例現在默認為默認計算服務帳戶,而不是應用引擎服務帳戶。
預覽期間的限制
Cloud Functions 2nd gen 的預覽尚未包含完整的計劃功能集,也不提供與 Cloud Functions(第 1 代)完全相同的功能。它在觸發器和可用區域方面受到限制,並且具有本節中描述的其他當前限制。
當前可用的 Cloud Functions 位置
Cloud Functions 第二代目前在以下地區可用:
-
europe-north1
-
europe-west1
-
europe-west4
-
us-central1
-
us-east1
-
us-west1
當前可用的 Cloud Functions 觸發器
第二代 Cloud Functions 支持以下 Firebase 後台觸發器:
- Firebase 實時數據庫
- 雲儲存
- Firebase 警報
- 發布/訂閱
- 可調用物
- 雲任務
- HTTP
- 預定功能
- Firebase 身份驗證阻止功能
- Firebase 遠程配置
- Firebase 測試實驗室
Cloud Functions 2nd gen當前不支持以下觸發器:
- 雲端 Firestore
- Firebase 身份驗證
onCreate
和onDelete
- 谷歌分析
其他限制
這些限制也適用於第二代 Cloud Functions:
- 函數名稱僅限於小寫字母和數字。
- 完全可觀察性尚未內置到 Firebase CLI 或 Firebase 控制台中。要觀察您的函數實例,請使用底層Cloud Run 服務的 Google Cloud Console。
- Firebase Local Emulator Suite 目前在第二代中支持 HTTP、雲存儲和 Pub/Sub 功能。
- HTTP 函數尚不支持
cloudfunctions.net
URL;暫時,您會看到.run.app
URL。此限制還會影響可調用函數和任務隊列函數的調用(有關可接受的解決方法,請參閱相應的指南)。 - 2代還沒有優化冷啟動,暫時可能比1代慢很多。但是,由於並發性,最終用戶總體上應該經歷更少的冷啟動。