是否可以在 onMessagePublished 上使用秘密依赖数组(云函数 v2)? 它看起来没有一个参数来接受它,如果我尝试将其包含为处理程序,我会收到错误。
exports.processMessage = onMessagePublished( 留言主题, { 秘密:[ApiKey,秘密,sqlUsername,sqlPassword,sqlServerName] }, 异步(事件)=> {}
基本上我想在 onMessagePublished 事件中使用机密。在 V2 函数中,它们必须位于依赖数组中
对我来说,以下解决方法有效:
对于 firebase pub / sub 函数,我通过控制台配置了密钥,而不是将其添加为函数中的参数:onMessagePublished。即使重新部署该功能,配置也会保留。
我按照这个文档使该函数可以访问秘密,这里是摘录:
要使函数可以访问秘密:
转到 Google Cloud 控制台中的 Cloud Functions 页面:转到 云函数页面
单击您希望能够访问机密的函数的名称。
单击编辑。
单击运行时、构建和连接设置以展开高级 配置选项。
单击安全打开安全选项卡。
单击引用秘密为函数设置秘密。
选择要访问的秘密。如果需要,创建一个秘密。
要在与您的函数相同的项目中引用秘密:
a.从下拉列表中选择秘密。
引用来自的秘密 另一个项目:
a.验证您的项目的服务帐户是否已被授予对机密的访问权限。
b.选择没有看到您的秘密?输入秘密资源ID。
c.按以下格式输入机密的资源 ID:
projects/PROJECT_ID/secrets/SECRET_NAME
替换以下内容:
PROJECT_ID:秘密所在项目的ID。
SECRET_NAME:秘密管理器中秘密的名称。
选择秘密的参考方法。你可以安装秘密 作为卷或将秘密公开为环境变量。
要将密钥安装为卷:
a.选择安装为卷。
b.在 Mount path 字段中,输入用于您的密钥的路径。
请勿重复使用现有的安装路径。每个安装路径必须是唯一的。
c.从版本下拉列表中,选择要使用的密钥版本 参考。
将秘密公开为环境变量:
a.选择公开为环境变量。
b.在 Name 字段中,输入环境变量的名称。
c.从 Version 下拉列表中,选择要使用的密钥版本 参考。
单击完成。
单击下一步。
单击部署。
您的函数代码现在可以引用该秘密。
我将秘密公开为环境变量,并使用以下命令在 pub / sub 函数中访问它:
process.env.SECRET_NAME