【问题标题】:Deploying Google Cloud Functions using private NPM modules使用私有 NPM 模块部署 Google Cloud Functions
【发布时间】:2022-02-17 07:26:34
【问题描述】:

当您使用 Node.js 运行时部署 Google Cloud Function 时,您可以在 Google Cloud Storage (--source=gs://...) 中的 .zip 文件中提供代码。

我使用所有已编译的源代码和node_modules/ 文件夹制作 zip 文件,以便 GCF 拥有所需的一切。我这样做是因为我使用的是 private NPM 模块,所以npm i 将无法在 GCF 构建例程中工作(在 GCP 内的云部署上运行)。

问题: 即使我在 node_modules/ 中包含 100% 的所需模块,GCF 仍然存在部署错误,因为它试图访问私有 NPM 包存储库。

如果我删除package.jsondependenciesdevDependencies 部分,GCF 将无法启动,说它找不到模块。

所以:

  1. 为什么 GCF 不能像其他工具一样使用捆绑的依赖项(例如 GitHub Actions)
  2. 使用私有 NPM 模块部署 GCF 的最佳做法是什么?

【问题讨论】:

    标签: node.js npm google-cloud-functions


    【解决方案1】:

    最好的方法是在你的代码中包含一个名为 .npmrc, 的文件,在你的 npm 帐户中可以生成一个具有某些权限的访问令牌,并且该令牌在我上面提到的文件中配置,这样在部署的时候,命令 npm install 就可以下载私有包了。

    【讨论】:

    • 谢谢。为了安全起见,我正在寻找如何避免在部署工件中包含秘密令牌。
    • 也许您可以在 GCP 中将令牌配置为机密并使用环境变量下载私有包。
    【解决方案2】:

    Cloud Functions 刚刚发布了对 private dependencies and the Node.js runtime 的支持。

    这允许在不将 .nomrc 凭据传递给 Cloud Functions 的情况下访问私有包。

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 2019-10-06
      • 2020-11-03
      • 1970-01-01
      • 2018-05-18
      • 2020-03-05
      • 2020-12-16
      • 2019-02-13
      • 1970-01-01
      相关资源
      最近更新 更多