Data Engineering Zoomcamp 在 Windows 上配置 GCP 与 Terraform:完整实战指南
【免费下载链接】data-engineering-zoomcampData Engineering Zoomcamp is a free 9-week course on building production-ready data pipelines. Join the course here 👇🏼项目地址: https://gitcode.com/GitHub_Trending/da/data-engineering-zoomcamp
本指南面向 Data Engineering Zoomcamp 课程第一周(Docker & Terraform)的 Windows 学员,讲解如何在“纯 Windows”环境(非 WSL)下完成 Google Cloud SDK 安装、服务账号认证,以及 Terraform 的初始化与基础设施部署。读完本篇,你将能够在 GitBash / MinGW / Cygwin 这类类 Unix 终端中,独立打通从本地安装 gcloud、激活服务账号,到执行terraform init / plan / apply创建 GCS 存储桶与 BigQuery 数据集的全流程,并学会排查最常见的 PATH、配额项目与 IAM 权限问题。
适用前提:为什么 Windows 需要专门的配置流程
Data Engineering Zoomcamp 的 Terraform 相关操作(如12-terraform-overview.md中提到的terraform init / plan / apply / destroy执行步骤)默认在类 Unix 环境中演示。因此本指南(terraform-on-windows.md)明确指出:
- 如果你使用WSL(Windows Subsystem for Linux),则完全不需要本指南,直接按常规的 GCP 与 Terraform 本地环境搭建 操作即可;
- 本指南仅适用于plain Windows(原生 Windows 环境)下的安装与配置;
- 你需要一个类 Linux 的终端环境,例如GitBash、MinGW或Cygwin;
- PowerShell 理论也可以使用,但需要自行调整命令(例如环境变量导出语法、路径分隔符等),文中给出的
export风格命令均以 Bash 系终端为准。
第一步:安装 Google Cloud SDK
1.1 下载 SDK 的 Zip 压缩包
在类 Unix 终端环境中,Google Cloud SDK 的安装方式与 Linux/macOS 一致:以 zip 压缩包形式下载,解压后运行install.sh脚本即可,无需 MSI 安装器。
- 下载地址为 Google 官方提供的快速渠道 zip 包(
google-cloud-sdk.zip); - 该渠道对应官方交互式安装文档中的下载方式。
下载完成后,解压到目标目录(例如C:\tools\google-cloud-sdk),然后进入解压目录执行:
./install.sh1.2 处理 PATH 未被自动更新的告警
安装过程中,你很可能会看到类似下面的提示:
The installer is unable to automatically update your system PATH. Please add C:\tools\google-cloud-sdk\bin这是因为原生 Windows 环境下安装脚本无法自动修改系统环境变量。解决办法有两种:
- 用户级修复:在
~/.bashrc中追加 SDK 的bin目录到PATH(GitBash 等环境均支持.bashrc配置)。修改后执行source ~/.bashrc使其立即生效; - 系统级修复:通过 Windows 的“系统属性 → 环境变量”界面,将
C:\tools\google-cloud-sdk\bin追加到系统PATH,这样所有终端会话都能直接识别gcloud命令。
1.3 指定 Python 解释器
gcloud 命令行工具依赖 Python 运行。在 Windows 上如果系统默认 Python 缺失或版本不兼容,安装后调用gcloud可能失败。若你使用 Anaconda,可通过CLOUDSDK_PYTHON环境变量显式指定解释器路径:
export CLOUDSDK_PYTHON=~/Anaconda3/python建议把该行也写入~/.bashrc,避免每次新开终端都需要重新导出。
1.4 验证安装
执行以下命令确认 gcloud 及其组件版本正常:
$ gcloud version Google Cloud SDK 367.0.0 bq 2.0.72 core 2021.12.10 gsutil 5.5输出中bq对应 BigQuery 命令行工具,gsutil对应 GCS 对象存储工具——这两者都是本课程后续数据管道中会用到的 SDK 组件。只要能看到类似版本信息,说明 SDK 安装成功。
第二步:Google Cloud SDK 认证
2.1 准备服务账号密钥文件
课程视频中演示了在 GCP 控制台创建服务账号(Service Account)并生成 JSON 密钥的流程(初始仅授予Viewer角色,后续再补充存储与 BigQuery 权限,详见 GCP Overview 的 “Setup for Access” 部分)。Windows 环境下你需要:
- 从 GCP 控制台下载服务账号密钥(.json);
- 将密钥文件放到一个固定位置,例如
~/.gc/ny-rides.json(也可任意自定义路径); - 通过环境变量让 gcloud 与 Terraform 都能找到它:
export GOOGLE_APPLICATION_CREDENTIALS=~/.gc/ny-rides.json同样建议将该export写入~/.bashrc。GOOGLE_APPLICATION_CREDENTIALS是 GCP 客户端库的标准环境变量,GCP Overview 中强调“务必确保该环境变量已设置”,因为后续terraform apply创建 GCS 与 BigQuery 资源时会读取它。
2.2 使用密钥激活服务账号
激活服务账号最直接的方式是使用gcloud auth activate-service-account:
gcloud auth activate-service-account --key-file $GOOGLE_APPLICATION_CREDENTIALS该命令会将该密钥对应的服务账号写入本地 gcloud 凭证库,用于后续所有 gcloud 命令的鉴权。
2.3 备选:使用 Application Default Credentials(ADC)登录
课程视频中还演示了另一种 OAuth 方式的认证:
gcloud auth application-default loginapplication-default login生成的是ADC(Application Default Credentials),它不绑定具体服务账号,而是以你的个人账号身份为本地应用提供临时凭证。课程仓库的 terraform/README.md 也将该命令列为执行 Terraform 前的标准步骤(“Refresh service-account's auth-token for this session”)。
2.4 处理 “quota exceeded / quota project” 告警
使用 ADC 时,如果控制台项目尚未正确绑定,gcloud可能会给出如下警告:
WARNING: Cannot find a quota project to add to ADC. You might receive a "quota exceeded" or "API not enabled" error. Run
$ gcloud auth application-default login set-quota-projectto add a quota project.
(实际命令为gcloud auth application-default set-quota-project。)此时需要为 ADC 显式指定配额项目,例如:
PROJECT_NAME="ny-rides-alexey" gcloud auth application-default set-quota-project ${PROJECT_NAME}其中PROJECT_NAME替换为你的真实 GCP 项目 ID。设置配额项目后,ADC 凭证才能正确归属到你的项目,从而避免 “quota exceeded” 或 “API not enabled” 类错误。
第三步:安装并初始化 Terraform
3.1 下载并加入 PATH
- 从 Terraform 官网下载对应平台的二进制压缩包;
- 解压得到
terraform可执行文件; - 将其放入一个已加入
PATH的目录(如C:\tools\terraform,并把该目录追加到系统环境变量),使任意终端都能直接调用terraform命令。
3.2 在项目目录中配置 variables.tf
课程仓库的 terraform_with_variables/variables.tf 展示了完整变量定义方式。本指南建议在variables.tf中至少声明project变量并填入你的 GCP 项目 ID:
variable "project" { description = "Your GCP Project ID" default = "ny-rides-alexey" type = string }实际仓库中的variables.tf还额外定义了credentials(服务账号 JSON 路径)、region(默认us-central1)、location(默认US)、bq_dataset_name(默认demo_dataset)、gcs_bucket_name等变量,它们与 terraform_with_variables/main.tf 中的google_storage_bucket、google_bigquery_dataset资源一一对应。你也可以直接使用该目录中的模板,将default值替换为自己的项目信息。
3.3 初始化并执行部署
首先在存放 Terraform 配置文件的目录中初始化:
terraform initinit会初始化本地 state(.tfstate)、下载所需 provider 插件并校验配置。关于 state、provider、resource 等 Terraform 核心概念,可参考 Terraform Overview。
随后按照 Terraform Overview 的执行步骤 依次执行:
terraform planplan会对比本地配置与远端 state,预览即将创建的资源(如 GCS 存储桶、BigQuery 数据集)并生成执行计划。确认无误后:
terraform applyapply会请求你确认执行计划,然后真正在云端创建基础设施。课程仓库的 terraform/README.md 还演示了通过-var="project=<your-gcp-project-id>"覆盖变量的用法,以及实验结束后用terraform destroy删除全部资源以避免持续计费的做法。
第四步:常见错误排查
4.1 Error 403:服务账号权限不足
执行terraform apply时如果出现类似报错:
Error: googleapi: Error 403: terraform@ny-rides-alexey.iam.gserviceaccount.com does not have storage.buckets.create access to the Google Cloud project., forbidden
说明服务账号缺少创建存储桶的 IAM 权限。解决办法是回到 GCP 控制台,为该服务账号授予完整权限。根据 GCP Overview 的 “Setup for Access” 一节,除了初始的Viewer外,还需要补充:
- Storage Admin(管理 GCS 存储桶)
- Storage Object Admin(管理存储桶内对象)
- BigQuery Admin(管理 BigQuery 数据集与作业)
同时需要为项目启用以下 API:
- IAM API(
iam.googleapis.com) - IAM Service Account Credentials API(
iamcredentials.googleapis.com)
提示:课程资料中另附有权限清单文档,但该文档并未列出全部所需权限,因此请以上述 IAM 角色与 API 清单为准。
4.2 其他注意事项
- 每次新开终端后,务必确认
GOOGLE_APPLICATION_CREDENTIALS环境变量仍指向正确的密钥文件; - 若组织策略不允许下载服务账号密钥文件,课程仓库的 terraform/README.md 提供了一个Fallback 方案:通过
gcloud iam service-accounts add-iam-policy-binding为本人授予roles/iam.serviceAccountTokenCreator,再在 Terraform 配置中使用google_service_account_access_token数据源生成临时访问令牌(impersonatedprovider),即可在不持有密钥文件的情况下完成部署; - 公开代码仓库前,建议使用合适的
.gitignore规则排除*.tfstate与密钥 JSON 文件,防止敏感信息泄露。
总结:Windows 环境的完整操作链路
将以上步骤串起来,纯 Windows 环境下从零到部署 GCS + BigQuery 基础设施的完整链路为:
- 准备 GitBash / MinGW / Cygwin 类 Unix 终端;
- 下载 zip 版 Google Cloud SDK → 运行
install.sh→ 修复PATH→ 设置CLOUDSDK_PYTHON→ 验证gcloud version; - 创建服务账号并下载 JSON 密钥 → 设置
GOOGLE_APPLICATION_CREDENTIALS→gcloud auth activate-service-account(或gcloud auth application-default login)→ 必要时执行set-quota-project; - 下载 Terraform 并加入
PATH→ 在配置目录编写variables.tf(含project等变量)→terraform init→terraform plan→terraform apply; - 若遇 403 权限错误,回到 IAM 控制台补全 Storage / BigQuery 相关角色并启用对应 API。
完成以上步骤后,你就拥有了在 Windows 上运行 Data Engineering Zoomcamp 第一周 Terraform 实战所需的全部环境。后续可继续参考 Terraform Overview 理解 IaC 概念与执行步骤,或进入 terraform 目录 查看不同变量组织方式的完整示例(基础版、变量版以及 AWS 版),按需选用。
【免费下载链接】data-engineering-zoomcampData Engineering Zoomcamp is a free 9-week course on building production-ready data pipelines. Join the course here 👇🏼项目地址: https://gitcode.com/GitHub_Trending/da/data-engineering-zoomcamp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考