【问题标题】:How to Organize and Deploy Cloud Function Project with Shared Library?如何使用共享库组织和部署云功能项目?
【发布时间】:2020-02-05 07:21:12
【问题描述】:

这就是我目前正在做的事情。这是不可取的,因为它复制了具有共享功能的相同 lib/ 文件夹:

/project/
└── /cloudfunctions/
    ├── /functionA/
    │   ├── main.py
    │   └── /lib/
    └── /functionB/
        ├── main.py
        └── /lib/

如何组织或部署功能,让项目结构更像这样?

/project/
└── /cloudfunctions/
    ├── /functionA/
    │   └── main.py
    ├── /functionB/
    │   └── main.py
    └── /lib/

为了澄清更多,我想知道gcloud functions deploy 没有--include-dependencies 标志,我想知道在第二个文件夹结构中包含共享库的最佳做法是什么。

现在这是我在 deploy.sh 中的 janky hack

rm -rf lib
cp -r ../lib ./lib
gcloud functions deploy...

【问题讨论】:

  • 这是部署问题还是开发问题?
  • 选项 C:使用 Cloud Run!在构建容器时,使用 Dockerfile 中的源/目录执行您想要的操作。
  • @guillaumeblaquiere 暂时避免使用 cloudrun,因为它在管理和部署映像时需要更多开销
  • 我认为您的问题是您正在将 Cloud Functions 视为“程序”。它不是,它是一个函数,它是程序的一个子集。函数是一项微任务,应该尽可能小。要成为一名优秀的 Cloud Functions 开发人员,请考虑重新考虑您的方法。至于最佳实践,我并没有真正遵循任何。如果我需要以我喜欢的方式做某事,我只需创建自己的工具。但是,Cloud Run 比 Cloud Functions 更容易开发(意见不一)。为您的部署考虑两者。
  • @ProGirlXOXO,Dockerfile 开销 VS `deploy.sh` 开销。这是@Johnhanley 所说的观点,我是Cloud Run 的粉丝,我的观点是有偏见的!考虑可维护性、对 GKE 的可移植性(为什么不呢?)并发处理......无论如何,如果你的 2 个函数使用相同的库,它们可能(但不确定)可以属于同一个微服务,你可以将两者都部署在同一个容器。考虑您的用例,而不是 1 次开销 ;)

标签: python python-3.x google-cloud-platform google-cloud-functions


【解决方案1】:

您可以在一个目录中拥有多个功能。一个常见的结构如下:

.
├── common
│   ├── module1.py
│   └── module2.py
├── main.py
└── requirements.txt

main.py 包含这两个函数:

from common import module1, module2

def cloudfunction1(request):
    ...

def cloudfunction2(request):
    ...

您可以直接按名称部署这些功能:

$ gcloud beta functions deploy cloudfunction1 --runtime python37 --trigger-http
$ gcloud beta functions deploy cloudfunction2 --runtime python37 --trigger-http

或者通过入口点:

$ gcloud beta functions deploy foo --runtime python37 --entry-point cloudfunction1 --trigger-http
$ gcloud beta functions deploy bar --runtime python37 --entry-point cloudfunction2 --trigger-http

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 2018-08-05
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2013-01-20
    • 2023-04-01
    • 2011-07-04
    相关资源
    最近更新 更多