GCP第二代Cloud Functions创建时如何使用Secrets密钥
创建2nd generation Cloud Function时使用Secrets密钥的方法
2nd generation Cloud Function没有把密钥配置选项放在和1st gen同位置的基础配置栏,可通过以下两种方式完成密钥挂载:
Cloud Function 1st gen 密钥添加选项界面
Cloud Function 2nd gen 基础配置页无直接密钥入口
控制台可视化配置
- 填写完函数名称、区域、运行时等基础信息后,展开页面下方的运行时、构建和连接设置折叠面板
- 找到面板内「安全和映像存储」分类下的Secret Manager板块,点击「添加Secret」按钮
- 选择提前在Secret Manager中创建好的密钥及对应版本,按需选择挂载方式:
- 作为环境变量注入:自定义环境变量名称,函数运行时可直接通过读取环境变量获取密钥值
- 作为卷文件挂载:自定义容器内的文件挂载路径,函数运行时可通过读取对应路径的文件获取密钥内容
- 配置完成后记得为函数绑定的运行时服务账号授予目标密钥的
Secret Manager Secret Accessor角色,否则函数运行时会出现密钥访问权限报错。
gcloud命令行部署配置
如果通过命令行部署2nd gen函数,可直接在部署命令中通过--set-secrets参数指定密钥配置:
- 注入为环境变量示例:
gcloud functions deploy 你的函数名 \ --gen2 \ --runtime=你的运行时版本(如python311、nodejs20) \ --region=部署区域 \ --source=代码路径 \ --entry-point=函数入口 \ --set-secrets=自定义环境变量名=projects/你的项目ID/secrets/你的密钥名/versions/密钥版本号
- 挂载为文件示例:
gcloud functions deploy 你的函数名 \ --gen2 \ --runtime=你的运行时版本(如python311、nodejs20) \ --region=部署区域 \ --source=代码路径 \ --entry-point=函数入口 \ --set-secrets=容器内挂载路径=projects/你的项目ID/secrets/你的密钥名/versions/密钥版本号:mount
2nd gen Cloud Function底层基于Cloud Run架构实现,密钥配置逻辑与Cloud Run完全一致,和1st gen的入口位置差异是架构调整导致,并非移除了密钥挂载能力。
内容的提问来源于stack exchange,提问作者Sander van den Oord
相关产品推荐
相关产品推荐

