1. 總覽

有了 Cloud Functions,您可以編寫簡單的單一用途函式,並將其附加到您的雲端基礎架構和服務產生的事件。一旦監控的事件發生,就會觸發您的 Cloud 函式。您的程式碼會在全方位代管環境下執行,因此您不須佈建任何基礎架構,也不必管理任何伺服器。
目前 Cloud Functions 可以使用 JavaScript、Python 或 Go 編寫。如果是 JavaScript,則會在 Google Cloud Platform 的 Node.js 環境中執行。只要在標準 Node.js 執行階段中執行 Cloud 函式,就能兼顧優異的可攜性和本機測試的便利性。
連結及擴充雲端服務
Cloud Functions 提供邏輯連接層,可讓您以撰寫程式碼的方式連結及擴充雲端服務。當您將檔案上傳至 Cloud Storage、記錄檔有所變更或收到來自 Cloud Pub/Sub 主題的訊息時,都能獲得相關資訊並進行回應。Cloud Functions 擴大現有的雲端服務,可讓您透過任意程式設計邏輯處理與日俱增的使用案例。Cloud Functions 可存取 Google 服務帳戶憑證,因此能順利地通過大多數 Google Cloud Platform 服務的驗證,例如 Datastore、Cloud Spanner、Cloud Translation API、Cloud Vision API 以及許多其他服務。

事件和觸發條件
Cloud 事件是雲端環境內發生的項目。這些項目可能是對資料庫資料進行的變更、新增至儲存空間系統的檔案,或是正在建立的新虛擬機器執行個體。
無論您是否選擇回應,事件都會發生。您可以使用觸發條件建立事件的回應。觸發條件是一個宣告,表明您對特定事件或一組事件感興趣。將函式繫結至觸發條件,可讓您擷取事件並對事件採取行動。如要進一步瞭解如何建立觸發條件並連結至函式,請參閱「事件和觸發條件」。
無伺服器
Cloud Functions 為您省下管理伺服器、設定軟體、更新架構以及修補作業系統的工作。軟體與基礎架構則由 Google 全代管,因此,您只需新增程式碼即可。另外,系統會自動佈建資源,以回應事件。這表示,函式可從一天幾次叫用擴展到數百萬次叫用,而您無需處理任何工作。
用途
像輕量級 ETL 這種非同步工作負載,或像觸發應用程式建構作業這種雲端自動化項目,現在都不再需要所屬伺服器和開發人員,就可以進行連接。您只需要部署繫結至事件的 Cloud 函式就可以了。
Cloud Functions 精細與隨需提供的性質也使其成為輕量級 API 與 Webhook 的最佳環境選擇。此外,在您部署 HTTP 函式時,系統會自動佈建 HTTP 端點,因此設定作業不像其他服務一樣複雜。
在本實作實驗室中,您將瞭解如何使用 Google Cloud 控制台建立、部署及測試 Cloud 函式。您將:
- 建立 Cloud 函式
- 部署及測試函式
- 查看記錄
2. 設定和需求
自修實驗室環境設定
請記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱 (上述名稱已遭占用,因此不適用於您,抱歉!)。本程式碼研究室稍後會將其稱為 PROJECT_ID。
- 接著,您必須在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。
完成本程式碼研究室的費用應該不高,甚至完全免費。請務必按照「清除」部分的指示操作,瞭解如何停用資源,避免在本教學課程結束後繼續產生帳單費用。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
Google Cloud Shell
雖然可以透過筆電遠端操作 Google Cloud 和 Cloud Functions,但在本程式碼研究室中,我們將使用 Google Cloud Shell,這是 Cloud 中執行的指令列環境。
這部以 Debian 為基礎的虛擬機器,搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 Google Cloud 運作,大幅提升網路效能並強化驗證功能。也就是說,您只需要瀏覽器 (Chromebook 也可以) 就能完成本程式碼研究室。
- 如要從 Cloud 控制台啟用 Cloud Shell,只要按一下「啟用 Cloud Shell」
即可 (佈建並連線至環境的作業需要一些時間才能完成)。
連至 Cloud Shell 後,您應該會看到驗證已完成,專案也已設為獲派的專案 ID PROJECT_ID。
gcloud auth list
指令輸出
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
指令輸出
[core] project = <PROJECT_ID>
如果專案未設定,請發出下列指令:
gcloud config set project <PROJECT_ID>
在尋找「PROJECT_ID」嗎?請檢查您在設定步驟中使用的 ID,或在 Cloud 控制台資訊主頁中尋找:
Cloud Shell 也會預設設定部分環境變數,這些變數在您執行後續指令時可能很有用。
echo $GOOGLE_CLOUD_PROJECT
指令輸出
<PROJECT_ID>
- 最後,設定預設可用區和專案。
gcloud config set compute/zone us-central1-f
你可以選擇各種不同區域。詳情請參閱「地區和區域」。
3. 建立函式
在這個步驟中,您會透過控制台建立 Cloud 函式。
- 在控制台中,依序點選「導覽選單」>「Cloud Functions」。

- 按一下「CREATE FUNCTION」:

- 將函式命名為
GCFunction,並保留其他預設值:記憶體配置、HTTP 做為觸發條件、內嵌編輯器、預設執行階段和預設範例程式碼。

- 在「建立函式」對話方塊中,按一下底部的「建立」來部署函式:

點選「建立」後,控制台會重新導向至 Cloud Functions 總覽頁面。
函式部署期間,函式旁邊會有一個小型旋轉圖示。部署完畢後,旋轉圖示會變成綠色勾號。如有任何問題,系統會顯示紅色圖示,並提供記錄檔的連結,方便您瞭解問題所在 (可能是程式碼有問題)。

大功告成!函式現已上線,可透過 HTTP 觸發。
4. 測試函式
在「Cloud Functions 總覽」頁面中,顯示函式的選單,然後按一下「測試函式」:

在「觸發事件」欄位中輸入下列文字,並在頭尾加上大括號 {},然後點選「測試函式」。
在「輸出」欄位中,您應該會看到訊息「Success: Hello World!」。
在「記錄」欄位中,狀態碼 200 表示成功。請注意,記錄可能需要幾分鐘才會顯示。

5. 查看函式記錄檔
按一下藍色箭頭,返回 Cloud Functions 總覽頁面:

顯示函式的選單,然後按一下「查看記錄檔」:

以下是記錄檔記錄的範例:

請注意,您可以依函式和嚴重程度篩選記錄,並透過標籤或任意格式的文字進行搜尋。
應用程式已部署並測試完畢,您可以查看記錄檔。
6. 清除資源
由於這是無伺服器運算,因此您不需要清理資源:縮減至零表示成本也會縮減至零。因此,如果函式沒有任何流量,就不會產生費用。此外,每月前 200 萬次 Cloud Functions 叫用免費。詳情請參閱定價頁面。
如要刪除函式,請前往總覽頁面,選取函式並按一下「刪除」:

7. 後續步驟
Cloud Functions 還有許多功能等你發掘!請參閱其他程式碼研究室和產品頁面,以及說明文件。
此外,也建議您參閱下列文章:
- 呼叫 Cloud Functions (提供函式叫用觸發條件)
- 監控 Cloud Functions (記錄、錯誤報告等)
- ... 或無伺服器類別中的其他 Codelab