ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Data Engineering Zoomcamp 在 Windows 上配置 GCP 与 Terraform:完整实战指南

Data Engineering Zoomcamp 在 Windows 上配置 GCP 与 Terraform:完整实战指南 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明确指出如果你使用WSLWindows Subsystem for Linux则完全不需要本指南直接按常规的 GCP 与 Terraform 本地环境搭建 操作即可本指南仅适用于plain Windows原生 Windows 环境下的安装与配置你需要一个类 Linux 的终端环境例如GitBash、MinGW或CygwinPowerShell 理论也可以使用但需要自行调整命令例如环境变量导出语法、路径分隔符等文中给出的export风格命令均以 Bash 系终端为准。第一步安装 Google Cloud SDK1.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目录到PATHGitBash 等环境均支持.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-accountgcloud auth activate-service-account --key-file $GOOGLE_APPLICATION_CREDENTIALS该命令会将该密钥对应的服务账号写入本地 gcloud 凭证库用于后续所有 gcloud 命令的鉴权。2.3 备选使用 Application Default CredentialsADC登录课程视频中还演示了另一种 OAuth 方式的认证gcloud auth application-default loginapplication-default login生成的是ADCApplication Default Credentials它不绑定具体服务账号而是以你的个人账号身份为本地应用提供临时凭证。课程仓库的 terraform/README.md 也将该命令列为执行 Terraform 前的标准步骤“Refresh service-accounts 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_NAMEny-rides-alexey gcloud auth application-default set-quota-project ${PROJECT_NAME}其中PROJECT_NAME替换为你的真实 GCP 项目 ID。设置配额项目后ADC 凭证才能正确归属到你的项目从而避免 “quota exceeded” 或 “API not enabled” 类错误。第三步安装并初始化 Terraform3.1 下载并加入 PATH从 Terraform 官网下载对应平台的二进制压缩包解压得到terraform可执行文件将其放入一个已加入PATH的目录如C:\tools\terraform并把该目录追加到系统环境变量使任意终端都能直接调用terraform命令。3.2 在项目目录中配置 variables.tf课程仓库的 terraform_with_variables/variables.tf 展示了完整变量定义方式。本指南建议在variables.tf中至少声明project变量并填入你的 GCP 项目 IDvariable 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 还演示了通过-varprojectyour-gcp-project-id覆盖变量的用法以及实验结束后用terraform destroy删除全部资源以避免持续计费的做法。第四步常见错误排查4.1 Error 403服务账号权限不足执行terraform apply时如果出现类似报错Error: googleapi: Error 403: terraformny-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 数据集与作业同时需要为项目启用以下 APIIAM APIiam.googleapis.comIAM Service Account Credentials APIiamcredentials.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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进