iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
DevOps

Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構系列 第 22

Day 22 — Terraform/GCP實戰:使用 GCP Console 創建 GCP 無伺服器服務Cloud Function

  • 分享至 

  • xImage
  •  

示範如何使用 GCP Console 創建 Cloud Function。

Terraform/GCP實戰:使用 GCP Console 創建 GCP 無伺服器服務Cloud Function

文章同步分享到

1. Google 無伺服器服務 — Cloud Function的主要功能和用途

無伺服器運算(Serverless Computing)是一種雲端運算模型,可以執行程式碼,而無需直接管理伺服器或基礎架構。Google Cloud Platform(GCP)中的無伺服器服務之一就是「Cloud Functions」,以下是它的主要功能和用途:

  1. 事件驅動的計算平台:Cloud Function是一個事件驅動的計算平台,可以讓您撰寫並執行程式碼片段,而不需要管理伺服器或基礎架構。

  2. 專注於編寫程式碼:Cloud Function會自動處理程式碼的部署、維護和擴展。

  3. 作為部分應用程式邏輯:自動化任務、處理數據、作為應用程式的一部分處理應用程式邏輯。

  4. 搭配其他GCP服務:例如Pub/Sub、Cloud Storage、Cloud Firestore等。

  5. 支援多種程式語言:例如Node.js、Python、Go等。

2. Google 無伺服器服務 — Cloud Function的使用情境

Google Cloud Platform 的虛擬機器可在多種場景下使用,以下是一些常見的使用情境:

  1. 自動化任務:您可以使用Cloud Function自動化許多日常任務,例如定期備份資料、處理郵件、擷取資料等。這些任務可以通過觸發器(trigger)自動啟動,並且可以搭配其他GCP服務(例如Pub/Sub、Cloud Storage、Cloud Firestore等)實現更高級的自動化流程。

  2. 數據處理:Cloud Function可以處理大量的數據並將其轉換成所需的格式。例如,您可以使用Cloud Function來轉換CSV檔案到JSON格式,或從訂閱的消息中提取特定的資訊。

  3. 應用程式邏輯:Cloud Function可以作為應用程式的一部分,處理應用程式邏輯。例如,當使用者上傳檔案到您的應用程式時,您可以使用Cloud Function來驗證和處理上傳的檔案。

3. GCP 無伺服器服務 — 使用GCP Console創建Cloud Function

在這個章節中,我們將深入探討如何使用GCP Console在Google Cloud Platform上創建Cloud Function。我們將依次進行以下步驟:

  1. 使用已經好的創建hello world程式碼 (python)

  2. 允許公開的http存取,提供測試

  3. 創建cloud function並上傳程式碼進行測試

創建hello world程式碼 (python)

首先創建main.py,並且複製對應的程式碼到main.py中,提供後續部署使用。等等創建函數時,可以先壓縮成zip檔案,等等使用google console時值直接上傳zip檔案。或是參考Github連結直接下載zip檔案

main.py

from flask import make_response, request

def handler(request):
    headers = {
        'Content-Type': 'text/plain'
    }
    response = make_response('Hello, World!', 200, headers)
    return response

使用GCP Console創建Cloud Function

  • 登入GCP Console:首先,使用您的Google帳戶登入Google Cloud Platform(GCP)Console:https://console.cloud.google.com

  • 選擇或創建專案:在GCP Console左上角,點擊專案選單,然後選擇現有的專案或創建一個新專案。

  • 創建Cloud Function函數:

  • 在GCP Console左側的導覽窗格中,點選Cloud Function選項。

  • 創建Cloud Functions,在Cloud Functions頁面點擊建立函數按鈕來開始創建一個新的Cloud Function。

選擇cloud function

創建cloud function

設定Cloud Function函數的基本設定:

  • 環境:第一代
  • 函數名稱:為您的Cloud Function指定一個唯一的名稱。
  • 地區:選擇Cloud Function所在的地區。選擇最接近您的使用者或資源的地區,以減少延遲。
  • 觸發條件:選擇http觸發,並允許未經驗證的叫用,因為我們需要公開存取並測試,最後點選儲存。根據您的選擇,設定其他觸發器參數,如HTTP方法、路徑等。如果選擇HTTP觸發器,也可以指定HTTP方法(GET、POST等)和路徑。

Cloud Function 基本設定

設定Cloud Function函數的進階設定:

  • 記憶體:可以根據你的使用量修改,建議先選256MB。
  • 逾時timeout:Cloud Function在多久無反應後自動結束。
  • 執行階段服務帳號:選擇Cloud Function的服務帳號,決定Cloud Function有哪些權限,建議先選預設的。

Cloud Function進階設定

Cloud Function服務帳號

設定Cloud Function函數的連線設定:

  • 輸入設定:點選允許所有流量,方便後續做測試。
  • 點選下一步:完成設定後,前往選擇Cloud Function使用的語言環境。

Cloud Function 函數連線設定

設定Cloud Function程式碼:

  • 在執行階段部分:選擇對應的程式語言,這邊選擇python39作為我們使用的語言。
  • 在原始碼部分:選擇上傳zip檔案。
  • 進入點:使用handler的函數名稱。
  • 上傳zip檔案:這邊需要建立程式碼的存儲位置,我們會創建GCS作為存儲位置。

設定Cloud Function程式碼

設定Cloud Function程式碼的存儲位置:

  • 輸入設定與名稱:點選瀏覽、輸入名稱tf-cloud-function-demo並點選繼續。
  • 選擇存儲位置:建議選擇區域,並選擇對應的地區建立,完成設定後,會出現提示是否禁止公開,建議點選禁止。
  • 創建完成:選擇該GCS作為存儲位置。
  • 上傳壓縮檔案:選擇最開始提供或自行壓縮的zip檔案,作為執行程式碼,點選部署。

Cloud Function程式碼的存儲位置

Cloud Function程式碼的存儲區域

Cloud Function程式碼的禁止公開

Cloud Function選取GCS

Cloud Function進行部署

修復Cloud Function函數的服務帳號錯誤設定:

  • 服務帳號service account:這是GCP的老毛病了,剛剛點選的設定會不見。出現沒有選取服務帳號,這時候回到上一頁點選預設的服務帳號,在點選下一步。
  • 進行部署:點選下一步:完成設定後,前往選擇Cloud Function使用的語言環境。

修復Cloud Function函數的服務帳號錯誤設定

Cloud Function 預設服務帳號

Cloud Function 再次部署

修改Cloud Function函數的存取權限設定:

  • 權限設定:設定 Cloud Function 的 IAM(身份和存取管理)權限,使所有人(allUsers)都可以進行 HTTP 存取。這個設定允許任何人都能觸發這個 Cloud Function。
  • 權限修改:點選權限,選擇新增主體allUsers,指派角色使用Cloud Function叫用者,點選儲存。
  • 公開資源設定:跳出視窗,最後點選確認公開資源。

Cloud Function 部署畫面

Cloud Function的存取權限

Cloud Function 公開資源設定

修復Cloud Function函數的進入點Entrypoint錯誤設定:

  • 進入點Entrypoint錯誤設定:這也是GCP的老毛病了,剛剛點選的設定會不見,會出現不是原本設定的handler進入點Entrypoint。
  • 修改Entrypoint進入點設定:點選來源,再點選編輯函式,在第二部分的程式碼,修改進入點從hello_world改為handler即可。
  • 再次部署:部署修改好的進入點函數。

Cloud Function 進入點修改

Cloud Function 進入點再次部署

測試部署的 Cloud Function

創建修改完畢,並看到Cloud Function後,可以點選查看函數的詳細資料。

Cloud Function 總覽

接下來可以嘗試觸發服務,點選觸發條件中的網址,就可以轉發到服務。例如下面的一長串網址,分別會是專案、地區與函數名稱組成的url。

Cloud Function 觸發條件 url

Cloud Function 回傳內容

4. 總結 Summary

  1. GCP 無伺服器服務Cloud Function的主要功能和用途:Cloud Function 是 GCP 的無伺服器計算平台,專注於事件驅動的程式碼執行。主要用途包括自動化任務、數據處理和應用程式邏輯。它支援多種程式語言,如 Node.js、Python 和 Go。

  2. GCP 無伺服器服務Cloud Function的使用情境:常見使用情境包括自動化任務,如備份資料、處理郵件和數據提取。數據處理部分,可以處理大量數據並轉換格式,例如將 CSV 轉換為 JSON。應用程式邏輯部分,Cloud Function 可以作為應用程式的一部分,處理特定應用程式邏輯。

  3. GCP 無伺服器服務— 使用GCP Console創建Cloud Function:介紹如何在GCP Console上創建Cloud Function,包括指定名稱、區域、運算資源、配置程式碼、存儲位置與權限設定等等,最後示範觸發服務產生http 回傳 helloworld。

5. 相關連結

  1. Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Codehttps://github.com/qwedsazxc78/Terraform-from-zero-to-hero-10-Lab-GCP-Infrastucture-as-Code

  2. Terraform-project-best-practicehttps://github.com/qwedsazxc78/terraform-project-best-practice

  3. 歡迎訂閱我的udemy課程:Terraform 從零開始 - 10+實戰Lab打造GCP雲端自動化架構課程 - https://devops-with-alex.com/go/terraform


上一篇
Day 21 — Terraform/GCP實戰:使用 Terraform 創建 GCP 運算資源服務
下一篇
Day 23 — Terraform/GCP實戰:使用 Terraform 創建 GCP 無伺服器服務Cloud Function
系列文
Terraform 從零開始 - 實戰Lab打造GCP雲端自動化架構31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言