本教學課程將示範如何使用 Terraform 部署 HTTP 函式,方法是將函式來源程式碼 ZIP 檔案上傳至 Cloud Storage 值區,然後部署資源。Terraform 是��項開放原始碼工具,可讓您透過宣告式設定檔佈建 Google Cloud 資源。
本教學課程以 Node.js HTTP 函式為例,但也適用於 Python、Go 和 Java HTTP 函式。無論您使用哪個執行階段,操作說明都相同。
使用 Terraform 部署時,您必須將函式的壓縮來源檔案上傳至 Cloud Storage 值區 (source_archive_bucket
),並在 Terraform 設定中指定 Cloud Storage 物件名稱 (source_archive_object
)。詳情請參閱 Terraform 規格指南。
Cloud Run 函式會將您在 source_archive_bucket
中上傳的原始檔案複製至專案中的值區,且值區名稱的格式為 gcf-v2-sources-PROJECT_NUMBER-REGION
(Cloud Run 函式) 或 gcf-sources-PROJECT_NUMBER-REGION
Cloud Run 函式 (第 1 代)。這項設定會因 CMEK 依附元件而異。
目標
- 瞭解如何使用 Terraform 部署 HTTP 函式。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
For details, see Cloud Run functions pricing.
您可以使用 Pricing Calculator 根據預測用量產生預估費用。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
準備開發環境。
部署函式的使用者必須具備 Cloud Functions 開發人員 (
roles/cloudfunctions.developer
) IAM 角色,或是具備相同權限的角色。另請參閱部署作業的其他設定。如要取得 Cloud Storage 值區的存取權,請要求管理員授予部署函式的 IAM 身分「Storage 管理員」 (
roles/storage.admin
) 角色。如要進一步瞭解 Cloud Storage 的角色和權限,請參閱 Cloud Storage 的 IAM。
如果您已安裝 gcloud CLI,請執行下列指��進行更新:
gcloud components update
必要的角色
正在設定環境
在本教學課程中,您將使用 Cloud Shell 執行指令。Cloud Shell 是已安裝 Google Cloud CLI (包括 Google Cloud CLI) 的殼層環境,並已針對您目前的專案設定好適用值。Cloud Shell 可能需要幾分鐘的時間才能初始化:
準備應用程式
在 Cloud Shell 中執行下列步驟:
將應用程式存放區範例複製到 Cloud Shell 執行個體:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
變更為包含 Cloud Run 函式程式碼範例的目錄:
cd terraform-docs-samples/functions/basic
本教學課程中使用的 Node.JS 範例是基本的「Hello World」HTTP 函式。以下是
main.tf
檔案:
初始化 Terraform
在包含 main.tf
檔案的 terraform-docs-samples/functions/basic
目錄中,執行下列指令以新增必要的外掛程式,並建構 .terraform
目錄:
terraform init
套用 Terraform 設定
在包含 main.tf
檔案的 terraform-docs-samples/functions/basic
目錄中,套用設定來部署函式。出現提示時,請輸入 yes
:
terraform apply
測試函式
當函式完成部署時,記下 URI 屬性,或使用下列指令找到這個屬性:
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
請對這個網址發出要求,查看函式的「Hello World」訊息。請注意,部署函式時需要驗證。因此,您必須在要求中提供憑證:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
清除所用資源
完成教學課程後,您可以刪除所有建立的項目,避免產生任何額外費用。
在 Terraform 中,您可以透過在包含 main.tf
檔案的 terraform-docs-samples/functions/basic
目錄中執行 terraform destroy
指令,移除設定檔中定義的所有資源:
terraform destroy
輸入 yes
可讓 Terraform 刪除資源。