跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

如何让 StackQL 通过 Google Cloud 的身份验证

StackQL 使用服务账号密钥向 Google Cloud 进行身份验证,密钥以 JSON 内容的形式通过 GOOGLE_CREDENTIALS 环境变量提供。

步骤​

  1. 创建一个服务账号,并为其授予目标项目上的角色(对于只读查询,roles/viewer 即可满足需要),然后创建并下载 JSON 密钥:
gcloud iam service-accounts keys create stackql-key.json \
--iam-account=stackql-sa@my-project.iam.gserviceaccount.com
  1. 导出密钥内容:
export GOOGLE_CREDENTIALS=$(cat ./stackql-key.json)

另一种方式是使用 --auth 标志按路径传入密钥,这适用于服务器和 MCP 部署:

stackql shell \
--auth='{"google": {"type": "service_account", "credentialsfilepath": "/path/to/stackql-key.json"}}'
  1. 拉取 Google Provider(仅首次使用时需要):
REGISTRY PULL google;
  1. 通过查询进行验证:
SELECT name, status, machineType
FROM google.compute.instances
WHERE project = 'my-project';

此查询使用 aggregated_list 访问方法,该方法只需要 project,并返回所有可用区中的实例。可用区级的 list 方法同时需要 project 和 zone;SHOW METHODS IN google.compute.instances 会显示每个方法的必需参数。

凭据的适用范围​

同一个变量(或 --auth 对象)在 stackql shell、stackql exec、stackql srv 和 stackql mcp 中均适用。对于 Claude Desktop 及类似的 MCP 客户端,在服务器配置的 env 块中设置 GOOGLE_CREDENTIALS。在 CI 中,应从平台的机密存储获取密钥,切勿将其提交到仓库。