Как организовать и внедрить проект облачной функции с общей библиотекой? - PullRequest
1 голос
/ 08 октября 2019

Это то, чем я сейчас занимаюсь. Это нежелательно, потому что он реплицирует одинаковую папку lib / с общими функциями:

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

Как организовать или развернуть функции, чтобы структура проекта была похожа на эту?

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

Комупоясните подробнее, мне интересно, как не существует флага --include-dependencies для gcloud functions deploy, и мне интересно, как лучше всего включать общую библиотеку, как во второй структуре папок.

Длятеперь это мой взломанный хак в deploy.sh

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

1 Ответ

1 голос
/ 09 октября 2019

Вы можете иметь несколько функций в одном каталоге. Общая структура будет выглядеть следующим образом:

.
├── 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
...