從 Cloud Run 連線至 PostgreSQL 適用的 Cloud SQL
瞭解如何使用 Google Cloud 控制台和用戶端應用程式,在 Cloud Run 上部署連結至 PostgreSQL 執行個體的範例應用程式。
假設您及時完成所有步驟,這項快速入門導覽課程建立的資源通常不到一美元。
如要直接在 Google Cloud 控制台中,按照這項工作的逐步指南操作,請按一下「Guide me」(逐步引導):
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- 確認您具備完成本快速入門導覽課程所需的權限。
-
啟用在 Cloud Run 上執行 Cloud SQL 範例應用程式所需的 Cloud API。
控制台
按一下「啟用 API」,啟用本快速入門所需的 API。
這會啟用下列 API:
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
- Service Networking API
gcloud
按一下下列按鈕開啟 Cloud Shell,直接在瀏覽器中使用指令列存取 Google Cloud 資源。您可以使用 Cloud Shell 執行本快速入門導覽課程中顯示的
gcloud指令。使用 Cloud Shell 執行下列
gcloud指令:gcloud services enable compute.googleapis.com sqladmin.googleapis.com run.googleapis.com \ containerregistry.googleapis.com cloudbuild.googleapis.com servicenetworking.googleapis.com
這個指令會啟用下列 API:
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
- Service Networking API
必要的角色
如要取得在連結至 PostgreSQL 執行個體的 Cloud Run 上部署範例應用程式所需的權限,請要求管理員在您要使用的專案中,授予下列 IAM 角色:
-
建立或刪除執行個體、資料庫和使用者:
Cloud SQL 管理員角色 (
roles/cloudsql.admin)。 -
建立或刪除 IAM 服務帳戶:
服務帳戶管理員角色 (
roles/iam.serviceAccountAdmin)。 -
建立連線:
-
Service Networking 管理員 (
roles/servicenetworking.networksAdmin)) -
服務使用情形管理員 (
roles/serviceusage.serviceUsageAdmin)。
-
Service Networking 管理員 (
- 查看物件和中繼資料: Storage 物件檢視者 (roles/storage.objectViewer)
- 提供管理專案政策的權限: 專案 IAM 管理員 (roles/resourcemanager.projectIamAdmin)。
- 具備所有 Cloud Run 資源的讀取和寫入權限: Cloud Run 開發人員 (roles/run.developer)。
- 部署及管理 Cloud Run 原始碼部署的資源: Cloud Run 原始碼開發人員 (roles/run.sourceDeveloper)。
- 如要允許公開存取: Cloud Run 管理員 (roles/run.admin)。
- 如要以服務帳戶執行作業: 服務帳戶使用者 (roles/iam.serviceAccountUser)。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
設定 Cloud SQL
建立 Cloud SQL 執行個體
建立資料庫
請按照下列步驟建立資料庫:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 選取「
quickstart-instance」。 - 在 SQL 導覽選單中,選取「資料庫」。
- 按一下 [Create database] (建立資料庫)。
- 在「New database」(新增資料庫) 對話方塊的「Database name」(資料庫名稱) 欄位中,輸入
quickstart-db。 - 點選「建立」。
gcloud
執行 gcloud
sql databases create 指令來建立資料庫。
gcloud sql databases create quickstart-db --instance=quickstart-instance
新增使用者
如要建立使用者,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
- 在 SQL 導覽選單中選取「使用者」。
- 按一下「新增使用者帳戶」。
- 在「Add a user account to instance instance_name」(在執行個體「instance_name」中新增使用者帳戶) 頁面中,
新增下列資訊:
- 在「Username」(使用者名稱) 欄位中輸入
quickstart-user。 - 在「Password」(密碼) 欄位中,指定資料庫使用者的密碼。 請記下這個值,本快速入門導覽課程的後續步驟會用到。
- 在「Username」(使用者名稱) 欄位中輸入
- 按一下「新增」。
gcloud
執行下列指令前,請先進行下列替換:
- PASSWORD,並提供資料庫使用者的密碼。 請記下這個值,本快速入門導覽課程的後續步驟會用到。
執行 gcloud sql users create 指令來建立使用者。
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=PASSWORD
Cloud SQL 的使用者名稱長度限制與地端部署 PostgreSQL 相同。
將範例應用程式部署至 Cloud Run
設定 Cloud Run 服務帳戶
控制台
-
前往 Google Cloud 控制台的「IAM Service accounts」(IAM 服務帳戶) 頁面。
- 按一下服務帳戶旁的「動作」 選單,然後按一下「管理存取權」。
- 按一下「新增其他角色」,然後在「角色」下拉式選單中,找到並選取「Cloud SQL 用戶端」 (
roles/cloudsql.client)。 - 按一下「新增其他角色」,然後在「角色」下拉式選單中,找到並選取「Storage 物件檢視者」 (
roles/storage.ObjectViewer)。 - 按一下 [儲存]。
gcloud
-
執行下列
gcloud指令,即可取得專案的服務帳戶清單:gcloud iam service-accounts list
- 複製 Compute Engine 預設服務帳戶的 EMAIL。
- 執行下列指令,將 Cloud SQL Client 角色新增至 Compute Engine 預設服務帳戶:
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/cloudsql.client"
- 執行下列指令,將「Storage 物件檢視者」角色新增至 Compute Engine 預設服務帳戶:
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.ObjectViewer"
設定 Cloud SQL 範例應用程式
有了 Cloud SQL 執行個體、資料庫和具備用戶端權限的服務帳戶,您現在可以設定範例應用程式,連線至 Cloud SQL 執行個體。
部署範例應用程式
將範例部署至 Cloud Run 的步驟,取決於您指派給 Cloud SQL 執行個體的 IP 位址類型。
圖片連線方法會因設定的環境變數而異。
- 如要使用 TCP 連線,請設定
INSTANCE_HOST環境變數的值。這個連線方法會採用以環境變數形式設定的憑證和通訊埠。 - 如要使用 Unix Socket 連線,請設定
INSTANCE_UNIX_SOCKET環境變數的值。請勿設定
INSTANCE_HOST環境變數的值。Java 原生不支援 Unix Socket。如果應用程式是以 Java 編寫,則必須使用 Cloud SQL Java 連接器。
- 如要使用其中一個 Cloud SQL 語言連接器連線,請設定
INSTANCE_CONNECTION_NAME環境變數的值。請勿為下列環境變數設定值:
INSTANCE_HOSTINSTANCE_UNIX_SOCKETDB_PORTDB_ROOT_CERTDB_CERTDB_KEY
3307上建立與 Cloud SQL 的連線。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 選取
quickstart-instance執行個體,開啟「Instance details」(執行個體詳細資料) 頁面。 - 在頁面頂端的圖示列中,按一下 [刪除]。
- 在「Delete instance」(刪除執行個體) 對話方塊中輸入
quickstart-instance,然後按一下「Delete」(刪除) 刪除執行個體。 -
前往 Google Cloud 控制台的「Cloud Run」頁面。
- 選取「服務名稱」
quickstart-service旁的核取方塊。 - 按一下 Cloud Run 頁面頂端的「刪除」。
選用清除步驟
如果您未使用指派給 Compute Engine 服務帳戶的 Cloud SQL 用戶端角色,可以移除該角色。
-
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
- 按一下名為「Compute Engine default service account」的 IAM 帳戶編輯圖示 (看起來像鉛筆)。
- 刪除 Cloud SQL 用戶端角色。
- 按一下 [儲存]。
如果您未使用本快速入門導覽課程啟用的 API,可以停用這些 API。
- 本快速入門導覽課程中啟用的 API:
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
前往 Google Cloud 控制台的「APIs」頁面。
選取要停用的 API,然後按一下「停用 API」按鈕。
後續步驟
您可以根據需求,進一步瞭解如何建立 Cloud SQL 執行個體。您也可以瞭解如何建立 Cloud SQL 執行個體的 PostgreSQL 使用者和資料庫。
如要進一步瞭解定價,請參閱 PostgreSQL 適用的 Cloud SQL 定價。
請點選下列連結瞭解更多資訊:
此外,您也可以瞭解如何從其他 Google Cloud 應用程式連線至 Cloud SQL 執行個體:

