GCP Secret Manager 抛出:“路径”参数必须是字符串类型

Posted

技术标签:

【中文标题】GCP Secret Manager 抛出:“路径”参数必须是字符串类型【英文标题】:GCP Secret Manager throws: "path" argument must be of type string 【发布时间】:2020-08-02 05:23:51 【问题描述】:

我正在使用 Node.js 8.x 中的 GCP Secrets Manager(我知道,它很古老,但它是 Cloud Functions 上最新的 GA Node 运行时)。但是,当我运行他们的示例时,它不断从this line 抛出 gRPC 错误:

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object

我正在尝试测试的代码行:

const secretClient = new SecretManagerServiceClient();

如果我在节点 8.x 或节点 10.x 上运行,并且如果我使用最新版本的机密库 (3.0.0) 或节点 8.x 的旧版本 ( 1.2.1)

【问题讨论】:

【参考方案1】:

出现这个错误是因为库运行的是 browser 而不是 Node 模式,这迫使它避免“回退”模式,试图错误地查找 gRPC 路径.该决定是因为window 在范围内,欺骗了isBrowser logic。

根本原因

根本原因是jest被用于测试,由default runs in jsDom mode,插入像window这样的全局变量。

修复

将以下内容添加到您的 jest.config.json 文件中。

testEnvironment: 'node',

【讨论】:

以上是关于GCP Secret Manager 抛出:“路径”参数必须是字符串类型的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker-nontso Permission Denied 中从 Python 访问 GCP Secret Manager 中的机密

Google Secret Manager:不要通过 Spring Boot 从中获得价值

如何使用 Spring Boot 将来自 Google Secret Manager 的秘密作为环境变量注入 Kubernetes Pod?

GCP 中的 KMS 和秘密管理器有啥区别?

GCP 秘密版本在变得不可见之前会保持销毁状态多长时间?

403 请求在容器内访问 GCP 上的 Secret 时出现身份验证不足问题