Можно ли использовать / загружать собственные библиотеки в IBM Cloud Functions? Или это ограничивается предустановленными пакетами? Я планирую использовать Python как язык программирования.
IBM Cloud Functions - как использовать и загружать собственные библиотеки?
Ответы (3)
Вы можете связать свои собственные зависимости. См. Документы здесь https://github.com/apache/incubator-openwhisk/blob/master/docs/actions-python.md#packaging-python-actions-with-a-virtual-environment-in-zip-files для создания виртуальной среды с вашими библиотеками. В документации приведен пример установки зависимостей через requirements.txt
.
Возможно использование большего количества библиотек, чем предустановленных. В документации по IBM Cloud Functions и связанные статьи блога, например, здесь для Python.
Для Python вы можете либо использовать виртуальную среду и упаковать ее, либо использовать zip-файл с необходимыми файлами Python. С виртуальной средой может быть проще начать, но вы можете получить много ненужных файлов. Я предпочитаю загружать необходимые файлы и самостоятельно помещать их в zip-архив. Конечно, это возможно только до определенной степени.
Я использовал этот метод в этом руководстве по решению IBM Cloud для бессерверного трафика GitHub. статистика. Вы можете найти исходный код , включая zip-файл, который я создал для действия Python, в этом Репозиторий GitHub (см. папку функций).
Вы можете использовать любой образ докера для выполнения своих действий, если изображения доступны в Docker Hub. Таким образом, вы можете создать свое собственное изображение с помощью своих библиотек.
Так, например, если вам нужно ваше собственное изображение, которое добавляет библиотеку python yattag
, библиотеку, генерирующую HTML из кода python.
вы можете написать Dockerfile вот так:
FROM openwhisk/python3action
RUN pip install yattag
а затем построить и нажать
$ docker build -t docker.io/msciab/python3action-yattag:latest .
$ docker push docker.io/msciab/python3action-yattag
Теперь у вас есть общедоступный образ, который можно использовать в OpenWhisk / IBM Cloud.
Вот простой python hello world с использованием yattag:
from yattag import Doc
def main(dict):
doc, tag, text = Doc().tagtext()
with tag('h1'):
text('Hello world!')
dict['body'] = doc.getvalue()
return dict
создать и запустить действие:
$ wsk action create hello-yattag hello.py --web true --docker msciab/python3action-yattag
$ curl $(wsk action get hello-yattag --url|tail -1)
<h1>Hello world!</h1>