本文件描述了几种配置python程序所需gcloud 环境变量的方法。

方案 2:在 Shell 启动文件中配置(推荐用于本地开发)

这种方法可以持久地为你的用户设置环境变量。每次打开新的终端时,这些变量都会被设置。

添加 export 命令: 在文件末尾,通常在其他 export 命令之后,添加你的环境变量配置:

Bash (.bashrc.bash_profile):

export GOOGLE_CLOUD_PROJECT="your-project-id"
export GOOGLE_CLOUD_REGION="your-region"  # 例如:europe-west3
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/credentials.json"

编辑文件后,重新启动终端或使用 source 命令使更改生效:

source ~/.bashrc # 或 .bash_profile 或 .zshrc

若项目运行于python .venv虚拟环境中,没有全局配置gcloud环境变量的需求,那么配置在虚拟环境中,通常在 venv/bin/activate。

请编辑激活activate脚本,增加以上bash中相同的export脚本。

方案 3:使用 gcloud 的 application-default 登录(便于使用默认的 gcloud 配置)

如果你已经使用 gcloud auth application-default login 配置了 gcloud ,其中包含你的项目和凭据,则你的脚本可以自动获取这些凭据。这很方便,尤其当你已经大量使用 gcloud CLI 时,因为它避免了显式设置环境变量。 然而,它不如方案 2 明确,并且需要确保你的默认项目设置正确。

gcloud config set project your-project-id
gcloud auth application-default login

然后,在你的 Python 代码中,使用 google.auth.default() 获取凭据:

import google.auth

credentials, project_id = google.auth.default()
aiplatform.init(project=project_id, location=LOCATION, credentials=credentials)

方案 4:Workload Identity Federation (WIF - 推荐用于生产环境,尤其是在 Kubernetes 中)

WIF 的主要优势在于它增强了安全性,因为它避免了下载和存储服务帐户密钥文件。这些密钥文件如果管理不当,可能会带来安全风险。 WIF 允许你的应用程序直接向 Google Cloud 服务进行身份验证,而无需下载和存储密钥文件。 此外,Google 会自动处理密钥轮换,进一步增强了安全性,无需担心密钥过期或手动轮换密钥。

WIF 特别适合在 Kubernetes 等容器化环境中使用。 在 Kubernetes 中,你可以将 Kubernetes 服务帐户链接到 Google Cloud IAM 角色。 这允许你的 Pod 在不使用服务帐户密钥的情况下访问 Google Cloud 服务。

总结: 选择哪种方法?

选择最适合你的需求和环境的方法。

  • 方案 2 (Shell 启动文件): 推荐用于本地开发,使用 shell 启动文件通常足够了,它在便捷性和安全性之间提供了良好的平衡。每次打开新终端时,变量都会自动设置。对于快速测试,直接在 shell 中设置变量是最快的选择,

  • 方案 3 ( gcloud application-default login ): 如果你已经大量使用 gcloud CLI,则此方法很方便,它避免了显式设置环境变量,是一种便捷的本地开发中间方案,但不如方案 2 明确。

  • 方案 4 (WIF - Kubernetes ): 对于生产环境,尤其是在 Kubernetes 中,强烈建议使用 Workload Identity Federation (WIF),因为它完全消除了管理服务帐户密钥文件的需求,提供了最佳的安全性、更便捷的密钥管理和更好的自动化。

重要提示:永远不要将你的凭据直接硬编码到脚本中,从而提高安全性。