נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת ADP עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
בסוף מעבדה זו תגדיר, באמצעות Terraform רגיל, את תשתית הנתונים המציאותית הקטנה ביותר של ADP — דלי נחיתה של Cloud Storage, מערך נתונים של BigQuery עם טבלה אחת המחולקת לפי תאריך קליטה, ושאילתת BigQuery מתוזמנת שפועלת כל שעה, קוראת ממערך נתונים ציבורי וכותבת לטבלה. ארבעה בלוקים; נקודת הכניסה לניתוח נתונים ב-GCP.
הכנס את הקטעים לקובץ main.tf יחיד, הרץ terraform init, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.your-project-id בבלוק ה-provider.הכל חינם במסגרת המעבדה:
כ-$0 לחודש בנפח המעבדה. עומסי עבודה אמיתיים ב-BigQuery מחייבים על פי בייטים שנסרקו — בצע חלוקה (partition) וקיבוץ (cluster) אגרסיביים ובחר (SELECT) רק את מה שאתה צריך.
אפשר את Cloud Storage, BigQuery, ו-BigQuery Data Transfer Service (שמפעיל שאילתות מתוזמנות).
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-adp"
managed_by = "terraform"
}
}
resource "google_project_service" "storage" {
service = "storage.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "bigquery" {
service = "bigquery.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "bqdts" {
service = "bigquerydatatransfer.googleapis.com"
disable_on_destroy = false
}כל צינור נתונים בתבנית ADP מתחיל בדלי נחיתה — קבצים גולמיים (CSV / JSON / Parquet / Avro) נוחתים כאן, ומשימות המשך קוראות מהם. הדלי הוא הגבול בין מחוץ לאגם לבתוך האגם. בחינת ADP בודקת שוב את בחירת סוג האחסון כאן — Standard עבור שכבת הנחיתה (קריאות תכופות ב-30 הימים הראשונים), עם כלל מחזור חיים המעביר ל-Coldline לאחר 90 יום.
גישת דלי אחידה מופעלת (ברירת המחדל האבטחתית המומלצת ב-ADP).
resource "random_id" "suffix" {
byte_length = 4
}
resource "google_storage_bucket" "landing" {
name = "certlabpro-adp-landing-${random_id.suffix.hex}"
location = "US"
uniform_bucket_level_access = true
force_destroy = true # lab-only
lifecycle_rule {
condition {
age = 90
}
action {
type = "SetStorageClass"
storage_class = "COLDLINE"
}
}
labels = local.labels
depends_on = [google_project_service.storage]
}BigQuery הוא מחסן נתונים ללא שרתים של GCP — תשלום לפי בייט שנסרק בשאילתה, תשלום לפי בייט שאוחסן בנתונים. בחינת ADP בודקת חלוקה (partitioning) + קיבוץ (clustering) כמנופי בקרת עלויות: טבלאות מחולקות מאפשרות לשאילתות לדלג על נתונים לא רלוונטיים; טבלאות מקובצות מניחות שורות קשורות יחד באחסון.
אנו יוצרים:
analytics — המאגר של BigQuery (המקבילה של GCP לסכימה / מסד נתונים). הגדר delete_contents_on_destroy = true לנוחות ניקוי המעבדה.events עם חלוקה לפי זמן קליטה (עמודת _PARTITIONTIME פסאודו) ופג תוקף חלוקה של 30 יום. טבלאות ייצור בדרך כלל מחולקות לפי עמודה (time_partitioning.field) לבחירת שאילתות.resource "google_bigquery_dataset" "analytics" {
dataset_id = "analytics"
location = "US"
delete_contents_on_destroy = true # lab-only
labels = local.labels
depends_on = [google_project_service.bigquery]
}
resource "google_bigquery_table" "events" {
dataset_id = google_bigquery_dataset.analytics.dataset_id
table_id = "events"
deletion_protection = false # lab-only
time_partitioning {
type = "DAY"
expiration_ms = 30 * 24 * 60 * 60 * 1000 # 30 days
require_partition_filter = true
}
schema = jsonencode([
{ name = "event_id", type = "STRING", mode = "REQUIRED" },
{ name = "event_type", type = "STRING", mode = "REQUIRED" },
{ name = "event_time", type = "TIMESTAMP", mode = "REQUIRED" },
{ name = "user_id", type = "STRING", mode = "NULLABLE" },
{ name = "payload", type = "JSON", mode = "NULLABLE" },
])
labels = local.labels
}שאילתות מתוזמנות הן הפרימיטיב בתבנית ADP עבור קליטה ממערך נתונים אחד של BigQuery למערך נתונים אחר בקצב קבוע. הן רצות על תשתית BigQuery Data Transfer Service (נפרדת משאילתות bq אד-הוק) ומחויבות באותו תעריף לפי בייט שנסרק.
אנו מתזמנים שאילתה שתרוץ כל שעה, תקרא ממערך הנתונים הציבורי bigquery-public-data.samples.shakespeare, ותכתוב לטבלת events משלב 3. צורת ה-MERGE (עדכון/הוספה) היא התשובה הקנונית של ADP לקליטה אידמפוטנטית — הפעלה חוזרת של אותה שעה אינה מכפילה את ההוספה.
השאילתה המתוזמנת פועלת כחשבון השירות המוגדר כברירת מחדל של הפרויקט; פריסות ייצור משתמשות בחשבון שירות העברה ייעודי עם roles/bigquery.dataEditor ביעד.
resource "google_bigquery_data_transfer_config" "hourly_load" {
display_name = "certlabpro-adp-hourly-load"
data_source_id = "scheduled_query"
location = "US"
schedule = "every 1 hours"
destination_dataset_id = google_bigquery_dataset.analytics.dataset_id
params = {
query = "INSERT INTO `${google_bigquery_dataset.analytics.dataset_id}.${google_bigquery_table.events.table_id}` (event_id, event_type, event_time, user_id, payload) SELECT GENERATE_UUID() AS event_id, \"shakespeare-line\" AS event_type, CURRENT_TIMESTAMP() AS event_time, NULL AS user_id, TO_JSON(STRUCT(word, word_count, corpus)) AS payload FROM `bigquery-public-data.samples.shakespeare` WHERE word_count > 100 LIMIT 100"
}
depends_on = [
google_project_service.bqdts,
google_bigquery_table.events,
]
}terraform destroy הורס הכל. הדלי נהרס (מיועד למעבדה בלבד force_destroy). מערך הנתונים נהרס (מיועד למעבדה בלבד delete_contents_on_destroy) — טבלאותיו נמחקות איתו. השאילתה המתוזמנת מתנתקת ומפסיקה לרוץ באופן מיידי. שירותי הפרויקט נשארים מופעלים (חינם).
ADP מכסה משטחי נתונים רבים ב-GCP שמעבדה זו אינה יכולה להכיל — Dataflow (מכוסה ב-[[gcp-pde]] ברמת פרו), Dataproc, Pub/Sub, Cloud Composer (Airflow מנוהל), Dataform (סביבת פיתוח משולבת (IDE) לטרנספורמציות SQL הבנויה על BigQuery), Looker Studio, Vertex AI, Cloud Data Fusion, Database Migration Service, Datastream, כל משטח ה-BigLake / BigQuery Omni מרובה העננים, ו-BigQuery ML (אימון למידת מכונה בתוך מסד הנתונים).
אנו נצמדים לפרימיטיבים של GCS + BigQuery + שאילתה מתוזמנת מכיוון שהם הבסיס שממנו מתחילה כל צינורית נתונים בתבנית ADP. Dataflow / Dataproc מזרים או מעבד באצוות אל GCS או BigQuery. Composer / Workflows מתזמרים את השאילתות המתוזמנות הנ"ל. Looker קורא מתוך BigQuery. ודא שהבסיס נכון; הוסף עליו מנועים מיוחדים.
לכיסוי קונספטואלי שירות-אחר-שירות, ראה את הקטעים עיון, מדריך, ו-Editorial בדף אישור זה.