Поскольку я продолжаю изучать безсерверные технологии с OpenWhisk, сегодня я собираюсь рассмотреть функцию пакеты. Хотя это и не очень сложно, я подумал, что если я напишу свое мнение об этом и поделюсь некоторыми снимками экрана, это может помочь людям лучше понять основы.

Когда вы играете с OpenWhisk, вам может быть интересно, где именно «живут» ваши действия. Очевидно, что весь смысл бессерверной работы заключается в том, чтобы не беспокоиться о — вы знаете — о сервере, но есть есть своего рода каталог для ваших действий. Вы можете убедиться в этом сами, просто перечислив свои действия:

Здесь вы видите список всех действий, которые я создал. Вы можете видеть, что каждый из них начинается с:

/[email protected]_My Space/

Это описано в разделе Пространства имен и пакеты:

В Bluemix пара организация+пространство соответствует пространству имен OpenWhisk. Например, организация BobsOrg и space dev будут соответствовать пространству имен OpenWhisk /BobsOrg_dev.

Достаточно просто — но вы можете догадаться, что организация станет проблемой. Хотя вы можете попытаться назвать свои действия хорошими описательными именами, в какой-то момент вам придется начать давать действиям странные имена, чтобы избежать конфликтов.

Здесь на помощь приходят пакеты. По сути, вы можете думать о них как о подкаталоге для ваших действий. (Они делают больше, и мы рассмотрим их через секунду.)

Чтобы создать новый пакет, введите следующую команду:

wsk package create NAME

Вот пример того, как я создал файл под названием utils:

Вы можете увидеть свои пакеты с помощью:

wsk package list

Второй пакет, который вы видите, был создан, когда я работал с Cloudant над своим первым постом на OpenWhisk.

Чтобы увидеть, что находится в пакете, вы просто делаете:

wsk package get utils

Or:

wsk package get --summary utils

Первая команда возвращает объект JSON для вашего пакета, а вторая возвращает более удобочитаемую версию. Я покажу вам оба из них позже, но сначала давайте добавим действие в пакет, чтобы в нем действительно что-то было. У меня есть простое действие, которое я создал ранее, которое просто повторяет имя:

function main(params) {
    return {
        result: "Meow, "+params.name
    };
}

Чтобы добавить это в мой новый пакет, я просто делаю:

wsk action create utils/action1 action1.js

Опять же, довольно просто. Теперь давайте посмотрим, что возвращает wsk package get, как «сырую», так и итоговую версию:

Как видите, сводная версия — это то, что вы, вероятно, всегда будете использовать в CLI. Если вам любопытно, универсальный wsk action list возвращает все ваши действия, даже те, которые находятся внутри пакетов:

Вызов действия такой же, как и любого другого действия, вы просто ставите перед пакетом префикс:

wsk action invoke utils/action1 -b -r -p name Ray

Фух. Так я сказал, что это было просто, не так ли? Это так, но мне нравится быть полным и показывать, как эти вещи работают. Итак, это основное, а что еще?

  • Пакеты, как и действия, могут иметь параметры по умолчанию. Это позволяет указать значение по умолчанию для каждого действия в пакете. Если вам интересно, параметр действия по умолчанию имеет приоритет над параметром по умолчанию пакета. (Спасибо Стивену Финку @IBM за то, что разъяснил мне это.)
  • Другое большое изменение заключается в том, что пакетами можно делиться со всем миром. Вы можете указать «общий» параметр (true или false) при создании или обновлении пакета. Сделав его общим, любой может его использовать. Для меня это самый большой вариант использования пакетов — предоставление вам возможности собирать связанные действия, а затем делиться ими с другими.
  • И, наконец, у OpenWhisk есть большой набор общих пакетов под названием whisk.system. Они предоставляют различные утилиты, а также доступ к общим API-интерфейсам Watson и другим полезным инструментам. Вы можете просмотреть документы для них или использовать CLI, но я бы проверил документы, поскольку их намного легче читать.
  • Итак, наконец, действительно — я укажу, что вы также можете помещать каналы в пакеты. Я еще не писал в блоге о триггерах, фидах и правилах, потому что это немного сложно, и я все еще ломаю голову над этим. Они станут предметом моей следующей статьи OpenWhisk.

Эта статья изначально была опубликована здесь: https://www.raymondcamden.com/2017/01/31/using-packages-in-openwhisk