首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在云函数node.js10中访问秘密管理器?

如何在云函数node.js10中访问秘密管理器?
EN

Stack Overflow用户
提问于 2020-09-05 13:37:21
回答 1查看 1.9K关注 0票数 1

我已经在这方面工作了2天,对进展非常失望,任何关于我的理解/代码/方法可能有什么问题的指导都是非常感谢的!

我试图从使用node.js的秘密管理员那里获得版本值,下面的脚本在GCE上工作得很好,但是每当我在云函数上运行它时,它就会失败。

代码语言:javascript
复制
// My script on GCE, it works fine
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
const secretManagerServiceClient = new SecretManagerServiceClient();
const name = 'projects/moonhome/secrets/moonFirstSecret/versions/latest';

testSecretManager = async () => {
  const [version] = await secretManagerServiceClient.accessSecretVersion({ name });
  const payload = version.payload.data.toString();
  console.debug(`Payload: ${payload}`);
};
testSecretManager();
代码语言:javascript
复制
// My index.js on Cloud Function
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
const secretManagerServiceClient = new SecretManagerServiceClient();
const name = 'projects/moonhome/secrets/moonFirstSecret/versions/latest';

testSecretManager = async () => {
  const [version] = await secretManagerServiceClient.accessSecretVersion({ name });
  const payload = version.payload.data.toString();
  console.debug(`Payload: ${payload}`);
};

exports.helloHttp = (req, res) => {
  testSecretManager();
  res.send("noooo1");
};
代码语言:javascript
复制
// One of many versions of packaga.json I tried on Cloud function
{
  "dependencies": {
      "@google-cloud/secret-manager": {
        "version": "3.1.0",
        "resolved": "https://registry.npmjs.org/@google-cloud/secret-manager/-/secret-manager-3.1.0.tgz",
        "integrity": "sha512-/9IOWEhKAz/r3kSyp16kjudELkEJSRhwFfzukKbzQehVRZ3RceNDzjn+Rti1TivODJHEEIBZVsQFsKp7cLfUgQ==",
        "requires": {
            "google-gax": "^2.1.0"
      }
    }
  }
}

以下是我的问题:

  1. 我注意到云函数中的列表在node.js运行时上有可用的系统包,所以我想知道这是否是原因。我已经请求将@google-cloud/secret-manager添加到node.js运行时。但是,在云函数文档中有一个例子,其中使用了escape-html,该列表中也没有使用它。我的问题是,在我的情况下,应该请求将秘密管理程序包添加到node.js运行时吗?
  2. 由于Cloud需要一个事件触发器,所以我还尝试用一个简单的函数包装这个testSecretManager,以处理http请求,并在浏览器的端点上测试它。这个简单的函数本身运行良好,但是每当我将与秘密管理器相关的任何内容插入到该函数中时,该函数要么失败,要么页面显示它为Error: could not handle the request。我的问题是,我必须用testSecretManager请求或任何其他事件处理函数来触发函数中的目标函数吗?
  3. 我对云函数的package.json文件非常困惑,当我在GCE中使用秘密管理器时,package-lock.json有600+行,所以我尝试将这些行处理到云函数上的package.json,但并不是work.....my的问题是,当我只想要时,应该包括在package.json中吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-05 13:59:26

  1. 你混淆了系统包和节点包。系统包安装在主机上(例如apt-get install)。NPM软件包被安装到节点(例如npm install)中。您不应该要求将秘密管理器添加到系统包中.
  2. 你的函数是同步和异步的混合。因为您的testSecretManager函数是一个同步函数,所以在helloHttp中调用它时,需要使用await作为序言。然后,您需要将helloHttp标记为异步。如果不起作用,请复制和粘贴准确的错误消息和堆栈跟踪。
  3. package.jsonpackage-lock.json是单独的文件,具有不同的语法。您不应该将数据从锁文件复制到包文件中。是您可以复制的一个例子: “依赖项”:{“@google-云/秘密-管理器”:"^3.1.0“},
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63754510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档