Пользовательская точка входа функций Azure Node.js

Я пишу облачную функцию и пытаюсь добавить поддержку нескольких провайдеров. В настоящее время для Google Cloud и AWS Lambda это было достаточно просто, так как оба позволяют мне указывать именованный экспорт данного файла (index.js в корневой папке) в качестве точки входа для выполнения функции.

Все было хорошо, подумал я, но теперь я хочу добавить поддержку Azure, но, похоже, настаиваю на том, чтобы папка с именем функции имела свой собственный index.js, который является точкой входа для выполнения. К сожалению, это нарушает имеющуюся у меня архитектуру (сделала ее общей, чтобы разрешить одной точке входа для нескольких провайдеров с некоторым определением среды выполнения среды выполнения возвращать правильный тип функции для этого провайдера).

Можно ли вообще с Azure сделать что-то похожее на GCF или Lambda и просто сказать "Я хочу функцию, запускаемую HTTPS, которая запускается при этом экспорте этого файла", и она доверяет вам делать остальное?

Документация по Azure не сильно помогла, и я не смог найти много полезного в Google.

2 ответа

Просто столкнулся с подобной проблемой. Однако я использую TS, так что это может быть не совсем то же самое, но вот мой 5c.

Не уверен конкретно в вашем случае, но мне пришлось использовать "entryPoint" нажмите кнопку, чтобы указать функцию.

После создания вашего dist папку проверьте, какое имя дано (скорее всего, это exports.default = httpTrigger httpTrigger - это имя вашей лазурной функции.

в этом случае добавьте экспорт

      {
  "entryPoint": "default"
}

на ваш function.json

Вам нужна папка для каждой функции, чтобы сопоставить точку входа с правильным файлом сценария. Но для этой папки нужен только файл function.json. Код может находиться в другом месте, например, все функции, входящие в один файл, - вот что делает пакет функций Azure.

Внутри function.json вы можете установить файл скрипта следующим образом:

{
 "disabled": false,
 "bindings": [
  {
   "authLevel": "anonymous",
   "type": "httpTrigger",
   "direction": "in",
   "name": "req",
   "methods": [
    "get"
   ]
  },
  {
   "type": "http",
   "direction": "out",
   "name": "res"
  }
 ],
 "scriptFile": "../.funcpack/index.js",
 "entryPoint": "HttpTrigger1"
}
Другие вопросы по тегам