![GCS存儲服務 — 使用 Terraform 創建 Google Cloud Storage](https://cdn-images-1.medium.com/max/800/1*ZDwFh67hhXdPa-pVTH6tKg.png)
*訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程
1. Google Cloud Storage 的主要功能和用途
Google Cloud Storage(GCS)是 Google Cloud Platform(GCP)提供的對象儲存服務,具有以下主要功能和用途:
- 靈活的儲存類型:GCS 提供多種儲存類型,包括標準、低頻、近緣等。這些不同的類型可以根據您的需求來選擇最適合的儲存方式,從而實現成本效益的最大化。
- 高可靠性:GCS 將數據在多個物理位置進行冗余儲存,這意味著即使發生硬件故障或其他意外情況,數據仍然可以保持安全。這種冗余設計提高了數據的可用性和可靠性,確保數據的安全性和完整性。
- 高可擴展性:GCS 能夠應對數據快速擴張的需求,這對於不斷增長的企業數據儲存需求非常重要。無論您的數據量有多大,GCS 都可以提供可擴展的儲存解決方案。
- 安全性和可管理性:GCS 提供了強大的訪問權限控制和數據加密功能。這意味著您可以對數據進行細粒度的權限控制,確保只有授權的用戶能夠訪問數據。同時,GCS 還提供了各種管理工具,如 Cloud Console 和 gsutil 工具,使您能夠輕鬆地管理和操作數據。
2. Google Cloud Storage 的使用情境
GCS 在多個領域都有廣泛的應用,以下是一些常見的使用情境:
- 數據儲存與備份:GCS 可以作為企業的數據儲存和備份平台。透過 GCS 的高可靠性和冗余儲存,您可以確保數據的安全性,同時能夠快速恢復數據,應對意外故障或數據丟失的情況。
- 影音內容儲存:對於媒體公司、網路直播平台等行業,GCS 是一個理想的影音內容儲存庫。它支持多種媒體格式,包括高清4k、超高清8k等,確保您的影音內容能夠以最佳品質保存和傳輸。
- 大數據分析:GCS 可以作為大數據分析的儲存基礎,用於存儲海量數據。數據科學家可以通過 GCS 對數據進行存取、管理和分析,從而獲取有價值的洞察。
- 物聯網數據收集與分析:對於物聯網應用,GCS 可以用於收集和儲存 IoT 終端設備產生的數據。這樣的數據可以用於實時監控、資料分析,以及進一步的業務優化。
3. GCP 存儲服務 — 使用 Terraform 創建 GCS
現在,讓我們來看看如何使用 Terraform 在 GCP 上創建 Google Cloud Storage,我們會有下面四個任務,也可以參考對應的程式碼連結:
- 創建 GCS 服務:創建一個新的 GCS 存儲桶。
- 使用亞洲多區域的備援:確保數據在多個地理位置進行冗余儲存,以實現高可用性。
- 使用非公開的資料存取方式:確保只有授權的用戶能夠訪問數據。
- 建立資料的生命週期:定義 GCS 存儲桶的生命週期規則,設置數據在 90 天後自動刪除。
- Terraform GCS 連結:可以到github參考對應的Terraform程式碼。
首先創建三個檔案,分別是 0-provider.tf, 1-variables.tf, 2-main.tf
0-provider.tf
##################################################################################
# CONFIGURATION
##################################################################################
terraform {
required_version = ">=1.0"
required_providers {
google = {
source = "hashicorp/google"
version = ">= 4.40.0"
}
}
}
##################################################################################
# PROVIDERS
##################################################################################
provider "google" {
project = var.GCP_PROJECT
# region = var.GCP_REGION
# zone = var.zone
}
這個檔案主要用於配置 Terraform 的提供者(provider),以確保 Terraform 可以正確地與 Google Cloud Platform(GCP)進行交互。
terraform
:這個區塊設定了 Terraform 的版本要求,確保使用的版本符合最低要求大於4.40.0版本。同時,它也定義了所需的提供者和版本。provider "google"
:這個區塊指定了要使用的 GCP 提供,指定了 GCP 專案 ID(由var.GCP_PROJECT
變數提供)。
1-variables.tf
variable "GCP_PROJECT" {
description = "GCP Project ID"
type = string
default = "terraform101-384507"
}
variable "gcs_name" {
type = string
default = "gcs-tf-ch4-2-4"
}
variable "location" {
type = string
default = "ASIA"
}
這個檔案用於定義 Terraform 使用的變數,以實現更高度的可配置性和重用性。
variable "GCP_PROJECT"
:這是 GCP 專案 ID 的變數,它描述了 GCP 專案的 ID。它的預設值是 “terraform101-384507″,但可以在使用時指定不同的值。variable "gcs_name"
:這是用於定義 Google Cloud Storage 存儲桶名稱的變數。variable "location"
:這是定義存儲桶所在位置(地區)的變數。
2-main.tf
##################################################################################
# RESOURCE
##################################################################################
resource "google_storage_bucket" "my-bucket" {
name = var.gcs_name
location = var.location
storage_class = "MULTI_REGIONAL"
force_destroy = true
public_access_prevention = "enforced"
lifecycle_rule {
condition {
age = 90
}
action {
type = "Delete"
}
}
}
這個檔案是主要的 Terraform 代碼,用於創建 Google Cloud Storage 存儲桶。
resource "google_storage_bucket" "my-bucket"
:這個區塊創建了一個 GCS 存儲桶資源,名稱為 “my-bucket”(由google_storage_bucket.my-bucket
引用)。它使用了在1-variables.tf
中定義的變數,如存儲桶的名稱、位置等。name
:指定存儲桶的名稱。location
:指定存儲桶的地區(由變數var.location
提供)。storage_class
:指定存儲桶的儲存類型,這裡是 “MULTI_REGIONAL”。force_destroy
:當刪除存儲桶時,強制銷毀存儲桶中的所有對象。public_access_prevention
:設定公共訪問預防的級別為 “enforced”,確保存儲桶不會被意外訪問。lifecycle_rule
:這個區塊定義了存儲桶的生命周期規則,指定當對象年齡超過 90 天時,自動刪除對象。
這些 Terraform 程式碼檔案配置,可以讓我們通過 Terraform 創建一個名為 “my-bucket” 的 Google Cloud Storage 存儲桶,並在其中設置特定的屬性和生命周期規則。
最後執行 terraform apply -auto-approve 來部署對應的資源到雲端架構上,就可以得到下列的結果。
terraform apply -auto-approve
![GCP 存儲服務 GCS](https://cdn-images-1.medium.com/max/800/1*CYpb3RSRCsjdrdxcx2EKkw.png)
Terraform tip:可以利用下列的 Terraform tip,來增進部署效率。
- 打開終端機中的 .bashrc or .zshrc 檔案
- 在文件最下方加入下列指令
- 執行 source ~/.zshrc 或是 source ~/.bashrc 讓下面的 alias 快捷鍵生效
alias tf="terraform"
alias tfv="terraform validate"
alias tfdp="terraform apply -auto-approve plan.out"
alias tfd="terraform apply -auto-approve"
alias tfr="terraform destroy -auto-approve"
alias tfp="terraform plan -out plan.out"
4. 課程連結
如果您覺得這篇文章對您有幫助,我誠摯地邀請您透過以下連結訂閱我的 Udemy 課程,進一步深入學習 Terraform 和 GCP 的知識:
訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程
![訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程](https://cdn-images-1.medium.com/max/800/1*1e6Kj9yUjx6itnU2bEg_gw.png)