【问题标题】:Azure Functions Node.js custom entrypointAzure Functions Node.js 自定义入口点
【发布时间】:2021-05-06 12:51:56
【问题描述】:

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

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

Azure 是否有可能执行类似于 GCF 或 Lambda 的操作,并简单地说“我想要一个 HTTPS 触发的函数,该函数从该文件的导出开始”,然后它信任您来完成其余的工作?

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

【问题讨论】:

    标签: javascript node.js azure azure-functions faas


    【解决方案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"
    }
    

    【讨论】:

    • 谢谢!这很有希望。所以这里是"entryPoint": "HttpTrigger1"index.js 中命名导出的名称?
    • 我自己还没有尝试过,Azure Functions Pack 工具在这里做了一些 webpack 魔术,但我认为它应该是这样工作的。 module.exports = { "HttpTrigger": __webpack_require__(1), "HttpTrigger2": __webpack_require__(2) }
    【解决方案2】:

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

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

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

    在这种情况下,添加导出

    {
      "entryPoint": "default"
    }
    

    致您的function.json

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2017-12-13
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多