You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Secret Manager密钥作为Google Functions构建阶段环境变量?

解决Google Functions构建阶段获取私有NPM令牌的方案

方法1:通过Cloud Build配置文件挂载Secret

如果使用Cloud Build作为构建服务,可在cloudbuild.yaml中直接引用Secret Manager的密钥,将其设为构建环境变量:

steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  args: ['gcloud', 'functions', 'deploy', 'YOUR_FUNCTION_NAME',
         '--runtime', 'nodejs20',
         '--trigger-http',
         '--set-build-env-vars', 'NPM_REGISTRY_TOKEN=${_NPM_TOKEN}']
  secretEnv: ['_NPM_TOKEN']
availableSecrets:
  secretManager:
  - versionName: projects/YOUR_PROJECT_ID/secrets/NPM_REGISTRY_TOKEN/versions/latest
    env: '_NPM_TOKEN'

部署时执行命令:

gcloud builds submit --config cloudbuild.yaml

方法2:直接用gcloud命令指定构建环境变量引用Secret

无需额外配置文件,直接在部署命令中通过--set-build-env-vars结合Secret Manager的资源路径:

gcloud functions deploy YOUR_FUNCTION_NAME \
  --runtime nodejs20 \
  --trigger-http \
  --set-build-env-vars "NPM_REGISTRY_TOKEN=projects/YOUR_PROJECT_ID/secrets/NPM_REGISTRY_TOKEN/versions/latest"

这种方式会让构建服务自动从Secret Manager拉取对应密钥,注入到构建阶段的环境变量中。

关键注意事项

  • 确保执行部署的账号(或Cloud Build服务账号)拥有roles/secretmanager.secretAccessor权限,能够访问目标Secret
  • 保持.npmrc的原有格式:someUrlToRegistry:/_authToken=${NPM_REGISTRY_TOKEN},构建时NPM会自动替换环境变量值
  • 若使用Node.js运行时,需确认package.json中的私有依赖指向仓库的正确地址

内容的提问来源于stack exchange,提问作者Petr Bělecký

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:25:20