這是一個使用 Terraform 部署 Google Cloud Functions 並設定定時執行的完整專案。專案包含兩個 Cloud Functions 任務,可以透過 Cloud Scheduler 進行定時執行。
cloud-function-cronjob/
├── .gitignore
├── Makefile
├── terraform/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ ├── tasks.tf
│ ├── provider.tf
│ ├── terraform.tfvars
│ └── modules/
│ └── cloud-function/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
└── cloud_functions/
├── task1/
│ ├── main.py
│ └── requirements.txt
└── task2/
├── main.py
└── requirements.txt
##️ 環境準備
- Google Cloud SDK
- Terraform
- Google Cloud 權限帳號(建議具備 Owner 或 Editor 權限)
# 登入 Google Cloud,取得瀏覽器授權(產生應用程式預設認證)
gcloud auth application-default login
注意:
Terraform 會自動使用gcloud auth application-default login
產生的認證檔案(~/.config/gcloud/application_default_credentials.json
)。
不需要設定 gcloud 的 active account,只要有正確的認證即可執行make deploy
。
Makefile
: 提供便捷的命令列介面,包含初始化、部署、清理等自動化腳本
main.tf
: 定義專案的核心資源,如 Google Cloud 專案、API 啟用、服務帳戶等variables.tf
: 宣告所有 Terraform 變數,定義變數類型、描述和預設值outputs.tf
: 定義部署後要輸出的重要資訊,如函數 URL、服務帳戶郵件等tasks.tf
: 專門配置 Cloud Functions 和 Cloud Scheduler 資源provider.tf
: 設定 Google Cloud Provider 版本和認證方式terraform.tfvars
: 設定變數的實際值,包含專案 ID、地區、函數名稱等
modules/cloud-function/
: 可重複使用的 Cloud Function 模組main.tf
: 模組核心邏輯,定義 Cloud Function 資源variables.tf
: 模組輸入變數定義outputs.tf
: 模組輸出值定義
task1/
和task2/
: 兩個獨立的定時任務main.py
: Python 函數主程式,包含實際的業務邏輯requirements.txt
: 列出 Python 套件依賴,如google-cloud-storage
、requests
等