Terraform : google_firestore_document 範例
在 Cloud Firestore 中,存儲單位是 document 。document 是一個 lightweight record ,可包含 data 欄位 (稱: fields),也可以嵌套另一個 collection。 因為 terraform 的 google_firestore_document,要求 fields 的 format 要是 json string ,比想像中的難寫,在這邊簡單紀錄一下範例。
Firestore 的 fields ,會需要指定值的類型,可以參考官方提供的文件。
因為每個 project ,只允許一個 Firestore ,所以沒有刪掉整個庫來代替刪除資料的操作;即使關閉 api ,下次 enable api 後,資料仍然會在 Firestore 裡面。
在 terraform 中定義 data 的好處是使用 terraform destroy 後,可以清除 data。(也只能刪除自己定義且由 terraform 建立的 data)
注意 ! 雖然資源名稱是 google_firestore_document ,但其實更像是一個 data 資源。 這邊有測試過,若使用 google_firestore_document 建立資料後,再手動或者使用 app 加資料進同一個 document,然後使用 terraform destroy,會發現只有 google_firestore_document 建立的 field 被刪除了,而不是整個 document 刪掉,其他手動或 app 家的資料都還是會留在 Firestore 。
範例
locals {
defaultJson = {
name = {
"stringValue" = "Tom"
}
age = {
"integerValue" = 23
}
tags = {
"arrayValue" = {
"values" = [
{
"stringValue" : "test"
},
]
}
}
}
}
resource "random_id" "code" {
byte_length = 4
}
resource "google_firestore_document" "main" {
collection = "users"
document_id = "user-${random_id.code.hex}"
fields = jsonencode(local.defaultJson)
}