通过 GCP 云函数在 pub/sub onMessagePublished 事件上使用机密

问题描述 投票:0回答:1

是否可以在 onMessagePublished 上使用秘密依赖数组(云函数 v2)? 它看起来没有一个参数来接受它,如果我尝试将其包含为处理程序,我会收到错误。

exports.processMessage = onMessagePublished( 留言主题, { 秘密:[ApiKey,秘密,sqlUsername,sqlPassword,sqlServerName] }, 异步(事件)=> {}

基本上我想在 onMessagePublished 事件中使用机密。在 V2 函数中,它们必须位于依赖数组中

firebase google-cloud-functions google-cloud-pubsub
1个回答
0
投票

对我来说,以下解决方法有效:

对于 firebase pub / sub 函数,我通过控制台配置了密钥,而不是将其添加为函数中的参数:onMessagePublished。即使重新部署该功能,配置也会保留。

我按照这个文档使该函数可以访问秘密,这里是摘录:

要使函数可以访问秘密:

  1. 转到 Google Cloud 控制台中的 Cloud Functions 页面:转到 云函数页面

  2. 单击您希望能够访问机密的函数的名称。

  3. 单击编辑

  4. 单击运行时、构建和连接设置以展开高级 配置选项。

  5. 单击安全打开安全选项卡。

  6. 单击引用秘密为函数设置秘密。

  7. 选择要访问的秘密。如果需要,创建一个秘密

    • 要在与您的函数相同的项目中引用秘密:

      a.从下拉列表中选择秘密。

    • 引用来自的秘密 另一个项目:

      a.验证您的项目的服务帐户是否已被授予对机密的访问权限

      b.选择没有看到您的秘密?输入秘密资源ID

      c.按以下格式输入机密的资源 ID:

      projects/PROJECT_ID/secrets/SECRET_NAME

      替换以下内容:

      • PROJECT_ID:秘密所在项目的ID。

      • SECRET_NAME:秘密管理器中秘密的名称。

  8. 选择秘密的参考方法。你可以安装秘密 作为卷或将秘密公开为环境变量。

    • 要将密钥安装为卷:

      a.选择安装为卷

      b.在 Mount path 字段中,输入用于您的密钥的路径。

      请勿重复使用现有的安装路径。每个安装路径必须是唯一的。

      c.从版本下拉列表中,选择要使用的密钥版本 参考。

    • 将秘密公开为环境变量:

      a.选择公开为环境变量

      b.在 Name 字段中,输入环境变量的名称。

      c.从 Version 下拉列表中,选择要使用的密钥版本 参考。

  9. 单击完成

  10. 单击下一步

  11. 单击部署

您的函数代码现在可以引用该秘密。

我将秘密公开为环境变量,并使用以下命令在 pub / sub 函数中访问它:

process.env.SECRET_NAME
© www.soinside.com 2019 - 2024. All rights reserved.