3

我正在编写一个云功能并尝试添加对多个提供商的支持。目前,对于 Google Cloud 和 AWS Lambda,这已经足够简单了,因为它们都允许我指定给定文件(根文件夹中的 index.js)的命名导出作为函数执行的入口点。

我认为一切都很好,但现在我想添加 Azure 支持,但它似乎坚持有一个带有函数名称的文件夹,它有自己的 index.js,这是执行的入口点。不幸的是,这破坏了我现有的体系结构(使其成为通用的,以允许多个提供者的一个入口点通过对执行环境的一些运行时检测来为该提供者返回正确的函数类型)。

Azure 有没有可能做一些类似于 GCF 或 Lambda 的事情,然后简单地说“我想要一个 HTTPS 触发的函数,从这个文件的导出开始”,然后它相信你会做剩下的事情?

Azure 文档没有太大帮助,我也无法在 Google 上找到很多用处。

4

2 回答 2

1

您确实需要为每个函数创建一个文件夹,以将入口点映射到正确的脚本文件。但是这个文件夹只需要function.json文件来配置它。您的代码可以位于不同的位置,例如捆绑在一个文件中的所有函数 - 这就是Azure Functions Pack所做的事情。

在 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"
}
于 2018-10-18T10:29:53.100 回答
0

我自己也遇到了类似的问题。但是我使用的是 TS,所以这可能不完全相同,但嘿,这是我的 5c。

不确定您的具体情况,但我不得不使用上的"entryPoint"function.json来指示功能。

构建dist文件夹后,检查给定的名称是什么(很可能它的exports.default = httpTrigger httpTrigger 是您的 azure 函数的名称

在这种情况下,添加导出

{
  "entryPoint": "default"
}

给你的function.json

于 2021-05-06T04:46:12.040 回答