IBM Cloud Functions - как использовать и загружать собственные библиотеки?

Можно ли использовать / загружать собственные библиотеки в IBM Cloud Functions? Или это ограничивается предустановленными пакетами? Я планирую использовать Python как язык программирования.


person Paul Ahuevo    schedule 17.08.2018    source источник


Ответы (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.

person user6062970    schedule 20.08.2018

Возможно использование большего количества библиотек, чем предустановленных. В документации по IBM Cloud Functions и связанные статьи блога, например, здесь для Python.

Для Python вы можете либо использовать виртуальную среду и упаковать ее, либо использовать zip-файл с необходимыми файлами Python. С виртуальной средой может быть проще начать, но вы можете получить много ненужных файлов. Я предпочитаю загружать необходимые файлы и самостоятельно помещать их в zip-архив. Конечно, это возможно только до определенной степени.

Я использовал этот метод в этом руководстве по решению IBM Cloud для бессерверного трафика GitHub. статистика. Вы можете найти исходный код , включая zip-файл, который я создал для действия Python, в этом Репозиторий GitHub (см. папку функций).

person data_henrik    schedule 21.08.2018

Вы можете использовать любой образ докера для выполнения своих действий, если изображения доступны в 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>
person msciab    schedule 20.08.2018
comment
Хотя это правильно, большинство пользователей начнут с развертывания zip-файла, а не с создания собственного образа Docker. - person James Thomas; 20.08.2018
comment
правда, но я оставляю ответ, так как это полезный пример для создания собственного изображения - person msciab; 21.08.2018