Última revisión: mayo de 2026
Crea los servicios de AWS del examen CDL con Terraform puro: bloque a bloque, cada uno vinculado a un dominio del examen. El mismo código funciona en OpenTofu.
Al finalizar este laboratorio, habrá aprovisionado, con Terraform simple, la huella más pequeña y realista de GCP: dos servicios de proyecto habilitados, un bucket de Cloud Storage con acceso uniforme a nivel de bucket + ciclo de vida, y un presupuesto de Cloud Billing que envía correos electrónicos cuando el gasto supera un umbral. Cuatro bloques, el equivalente en GCP a crear una cuenta de AWS y colocar un solo bucket S3 en ella.
Coloque los fragmentos en un único main.tf, ejecute terraform init, luego terraform apply paso a paso.
>= 1.5 o OpenTofu >= 1.6.provider.gcloud auth application-default login.gcloud beta billing accounts list.your-project-id y your-billing-account-id en los fragmentos a continuación antes de ejecutar terraform apply.Todo es gratuito en este ámbito:
us-*; el bucket del laboratorio no contiene nada.El laboratorio permanece inactivo a ~$0/mes. El objetivo es demostrar que el sistema de alerta de facturación funciona; todo el examen CDL gira en torno a la habilidad de operar GCP de forma segura, de la cual "saber lo que está gastando" es la regla #1.
GCP requiere que se habiliten servicios del proyecto (APIs) explícitos antes de que se puedan aprovisionar recursos. Habilitamos storage.googleapis.com (para el Paso 2) y billingbudgets.googleapis.com (para el Paso 4). Compare con AWS, donde las superficies de API siempre están activas; GCP le hace optar por cada proyecto.
Reemplace your-project-id con su ID de proyecto real.
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE with your GCP project ID
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-cdl"
managed_by = "terraform"
}
}
resource "google_project_service" "storage" {
service = "storage.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "budgets" {
service = "billingbudgets.googleapis.com"
disable_on_destroy = false
}Cloud Storage es el equivalente de S3 en GCP, un almacén de objetos con opciones de replicación regional, multirregional y de doble región. El examen CDL evalúa repetidamente la pregunta qué-clase-de-almacenamiento: Standard (caliente), Nearline (>30 días), Coldline (>90 días), Archive (>365 días).
Habilitamos el acceso uniforme a nivel de bucket (el valor predeterminado de seguridad recomendado por CDL — desactiva las ACL detalladas por objeto en favor de solo IAM) y una transición de ciclo de vida de 30 días → Nearline. Los nombres deben ser globalmente únicos en todo GCP; agregamos un sufijo con un hexadecimal aleatorio.
resource "random_id" "suffix" {
byte_length = 4
}
resource "google_storage_bucket" "main" {
name = "certlabpro-cdl-${random_id.suffix.hex}"
location = "US"
uniform_bucket_level_access = true
force_destroy = true # lab-only — never in production
lifecycle_rule {
condition {
age = 30
}
action {
type = "SetStorageClass"
storage_class = "NEARLINE"
}
}
labels = local.labels
depends_on = [google_project_service.storage]
}Cloud Logging de GCP está activado por defecto para la mayoría de los servicios, pero el examen CDL evalúa la distinción de registros de auditoría entre Requerido vs Predeterminado vs Acceso a Datos. Los registros de auditoría Requeridos (actividad de administración) siempre están activados, son gratuitos y no se pueden deshabilitar. Los registros Predeterminados (escrituras de datos para algunos servicios) están activados pero se pueden deshabilitar. Los registros de Acceso a Datos (lecturas de datos) están desactivados por defecto; deben habilitarse explícitamente y se facturan normalmente.
Habilitamos el registro de Acceso a Datos para Cloud Storage para que cada lectura de cada objeto en el bucket del Paso 2 se registre en Cloud Logging. El laboratorio es una demostración de la primitiva iam-audit-config; las implementaciones de producción usan este patrón a nivel de organización a través de patrones [[gcp-pcse]].
resource "google_project_iam_audit_config" "storage_data_access" {
service = "storage.googleapis.com"
audit_log_config {
log_type = "DATA_READ"
}
audit_log_config {
log_type = "DATA_WRITE"
}
}Al examen CDL le encanta este patrón: los presupuestos + alertas de Cloud Billing son la forma recurrente de pregunta del examen CDL para el control de costos. Establecemos un presupuesto de $10/mes y configuramos alertas al 50% / 90% / 100% del gasto proyectado. La alerta llega por correo electrónico a los administradores de la cuenta de facturación (no se necesita configuración adicional para el correo electrónico; para Slack / PagerDuty, se agregaría un tema de Pub/Sub + una función de Cloud Function para distribución).
Reemplace your-billing-account-id con su ID real. El presupuesto se limita al proyecto actual solamente a través del filtro projects: el examen CDL evalúa esta distinción entre presupuesto por proyecto vs presupuesto a nivel de organización.
data "google_project" "current" {}
resource "google_billing_budget" "monthly_10" {
billing_account = "your-billing-account-id" # REPLACE — find via `gcloud beta billing accounts list`
display_name = "certlabpro-cdl-$10-monthly"
budget_filter {
projects = ["projects/${data.google_project.current.number}"]
}
amount {
specified_amount {
currency_code = "USD"
units = "10"
}
}
threshold_rules {
threshold_percent = 0.5
spend_basis = "FORECASTED_SPEND"
}
threshold_rules {
threshold_percent = 0.9
spend_basis = "FORECASTED_SPEND"
}
threshold_rules {
threshold_percent = 1.0
spend_basis = "CURRENT_SPEND"
}
depends_on = [google_project_service.budgets]
}terraform destroy desmonta todo de forma limpia. El bucket se destruye (el force_destroy = true solo para el laboratorio permite a Terraform eliminarlo incluso si no está vacío; nunca use esto en producción). El presupuesto se desvincula; los correos electrónicos se detienen. La configuración de auditoría de IAM vuelve a la predeterminada. Los servicios del proyecto permanecen habilitados (establecemos disable_on_destroy = false — son gratuitos y deshabilitarlos puede romper cargas de trabajo no relacionadas en el mismo proyecto).
CDL cubre muchas superficies de GCP que este laboratorio no puede incluir: VMs de Compute Engine, clústeres de GKE, Cloud Run, Cloud Functions, App Engine, BigQuery, Cloud SQL, Spanner, Bigtable, Firestore, Cloud Pub/Sub, Dataflow, Dataproc, Vertex AI, Cloud Build, Cloud Deploy, Anthos / Multi-Cloud, Cloud CDN / Cloud Armor, VPC + Cloud NAT, Cloud Interconnect, Cloud IAM / Identity, Cloud KMS, Security Command Center, todo el marketplace de GCP.
Nos ceñimos a las primitivas de Almacenamiento + Registro + Facturación porque son la huella de denominador común más baja que cada escenario del examen CDL asume que está implementada. Cada otro servicio de GCP escribe en Cloud Storage / lee de Cloud Storage / envía registros a Cloud Logging / aparece en un panel de Cloud Billing. Domine la base; luego añada servicios especializados.
Para la cobertura conceptual servicio por servicio, consulte las secciones Buscar, Manual y Editorial de esta página de certificación.