今天來跟大家介紹 GCP terraform 如何創建 cloud sql
根據網路上的文章可以得到基本概念
根據 google 文件可以查到基本用法
Cloud SQL for PostgreSQL features | Google Cloud
而在 terraform 的文件可以查到能使用的參數
此外我額外引用了 google_sql_user 元件來創建 IAM 登入用戶
最後有一個 bug 是 sql instance 完成後不能馬上 access 到 sql_user
所以我加上了延遲一分鐘的設置
resource "time_sleep" "wait_seconds" {
depends_on = [google_sql_database_instance.instance]
create_duration = "60s"
}
每創建一個新的 IAM 用戶需要在資料庫設置對應權限(可自行撰寫,以下為範例)
設置
給予 IAM 用戶 userId 所有操作 public 下 table 的權限 + 可以使用獲取 table 的 sequence (一些 rule 和 index)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "userId";
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "userId";
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO "userId";
解除
沒有解除權限前, 不可以刪除 google_sql_user
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM "userId";
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM "userId";
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL PRIVILEGES ON SEQUENCES FROM "userId";
clone 後進入專案該資料夾
創建用 make start
釋放資源用 make destroy