我正在编写云函数,并尝试添加对多个提供程序的支持。目前,对于Google Cloud和AWS Lambda来说,这已经足够简单了,因为它们都允许我指定给定文件(根文件夹中的index.js)的命名导出作为函数执行的入口点。
我认为一切都很好,但是现在我想添加Azure支持,但是它似乎坚持要使用功能名称带有自己的index.js的文件夹,该文件夹是执行的入口点。不幸的是,这破坏了我现有的体系结构(已使其通用,从而允许多个提供程序的一个入口点具有对执行环境的运行时检测以返回该提供程序的正确函数类型)。
Azure是否有可能做一些类似于GCF或Lambda的事情,而只是说“我想要一个HTTPS触发的函数,该函数从此文件的导出开始”,并且它信任您做其余的事情?
Azure文档没有太大帮助,我也无法在Google上找到很多使用方法。
答案 0 :(得分:1)
每个功能确实需要有一个文件夹,以将入口点映射到正确的脚本文件。但是此文件夹仅需要function.json文件进行配置。您的代码可以位于不同的位置,例如,所有功能捆绑在一个文件中-这就是Azure Functions Pack的作用。
在function.json内部,您可以像这样设置脚本文件:
$re = '/"\K[\w-]+(\.jpg)(?=")/';
$str = ';s:27:"2018/08/hello-there-003.jpg";s:5:"sizes";a:23:{s:9:"thumbnail";a:4:{s:4:"file";s:27:"hello-there-003-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:27:"hello-there-003-300x200.jpg"
';
$subst = 'replacement$1';
$result = preg_replace($re, $subst, $str);
echo $result;
答案 1 :(得分:0)
我自己刚刚遇到了类似的问题。 但是我使用的是 TS,所以这可能不完全相同,但这是我的 5c。
不确定您的具体情况,但我必须使用 "entryPoint"
上的 function.json
键来指示功能。
在构建您的 dist
文件夹后,检查给定的名称是什么(很可能是 exports.default = httpTrigger
httpTrigger 是您的 azure 函数的名称
在这种情况下,添加导出
{
"entryPoint": "default"
}
到您的function.json