GCP / Cloud Functions 是否有像 AWS Lambda Layers 这样的库概念?

Joh*_*ger 6 google-cloud-platform google-cloud-functions serverless

GCP / Cloud Functions 是否有类似于 AWS Lambda Layers 的库概念?这意味着,如果我们想减少代码重复并为 Google Cloud Functions 推出通用库层,我们会怎么做?

gui*_*ere 4

不,云函数没有这种功能。我心中有 3 个直接选择

  • 使用 Cloud Run 并使用所需的依赖项/通用代码构建您自己的基础映像
  • 将公共代码打包在您在每个函数中导​​入的库中。但这需要将您的库发布到公共或私有的地方,并在功能打包和部署方面进行额外的工作。
  • 使用这样的项目结构(我通常使用这个)

项目树

root
  |
  - Common
  |
  - Functions
    |
    - function A
    |
    - function B
Run Code Online (Sandbox Code Playgroud)

在函数 A 和函数 B 中,您使用 Common 目录中的公共文件。当您部署函数时,在目录中进行root,并使用源目录来指示在哪个目录中查找要部署的函数

gcloud functions deploy --source=function/functionA ...
Run Code Online (Sandbox Code Playgroud)

权衡

  • 根路径中的所有文件/目录都会被复制。即使只有一个有效运行,也会部署所有功能文件
  • 您必须在 functionX 级别声明所有依赖项。甚至公共目录的依赖项。如果公共目录中有新的依赖项并且您有很多函数,这可能会出现问题