Пользовательская точка входа функций 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"
}