如何在Azure函数SaaS文件绑定中设置文件夹名称和文件名?
我正在尝试使用SaaS File触发器来侦听FTP站点中的新文件。首先,你甚至可以定义一个变量文件夹,如"path": "inputTest/{folder}/{fileName}"
?或者,也许听所有子文件夹中的新文件,并在文件名中包含路径,如inputTest/{file}
,其中file
可能等于"subfolder/fileName.txt"
?这里的想法是,我将有多个客户端上传文件到他们自己的目录中,我不想为每个客户端创建一个新的函数/触发器。如何在Azure函数SaaS文件绑定中设置文件夹名称和文件名?
输出结果也一样。我想要一个可以写入各种文件夹的SasS文件绑定。我想我可以使用here描述的方法,但我仍然需要对其进行测试。我的想法是,我想要一次读取一行读取输入文件,以某种方式处理该行,并将其写入另一个文件。本质上是一种变换。可能还有其他方法可以做到这一点,但我希望更好地理解这种绑定。
UPDATE
我试图为输出结合下述:
using System;
using Microsoft.Azure.WebJobs;
public static void Run(string input, IBinder output, TraceWriter log)
{
string connectionStringSetting = Environment.GetEnvironmentVariable(
"ftp_FTP", EnvironmentVariableTarget.Process);
var path = "InputTest/SubFolder/fileName.txt";
log.Info($"Writing to {path}...");
using (var writer = output.Bind<TextWriter>(
new ApiHubFileAttribute(connectionStringSetting, path)))
{
writer.Write(input);
}
log.Info("Done writing...");
}
我包括Microsoft.Azure.WebJobs.Extensions.ApiHub
NuGet包为ApiHubFileAttribute
。我得到了错误Exception binding parameter 'output'. Microsoft.Azure.WebJobs.Extensions.ApiHub: Unsupported type:Microsoft.Azure.WebJobs.IBinder
。任何帮助,将不胜感激。
SaaS文件触发器绑定不处理对变量子路径的监视。路径表达式的格式必须为folder/{fileName}
,文件组件只会绑定到该特定文件夹中的单个文件,而不是子文件夹。文件名之前的静态路径可以包括子文件夹,例如, folder/subFolder/{fileName}
。
您可以按照您描述的方式使用IBinder
来编写一个或多个文件。这应该工作。
文件观察器在该文件夹内查找新文件的频率如何? – DBueno
默认值是90秒,但您可以通过'pollIntervalInSeconds'属性在您的绑定中进行配置。函数门户网站不公开,你必须通过高级编辑器来设置它。 – mathewc
我删除了'out'绑定并得到以下内容:'2016-09-27T15:45:23.898函数启动(Id = 8db8fc1e-69de-4094-9bd4-a90a64ad0199) 2016-09-27T15:45:23.914写入InputTest/SubFolder/fileName.txt ... 2016-09-27T15:45:24.008函数完成(失败,Id = 8db8fc1e-69de-4094-9bd4-a90a64ad0199) 2016-09-27T15:45:24.039执行异常函数:Functions.BlogTriggerOutputTest。 mscorlib:异常已被调用的目标抛出。 mscorlib:给定的键不在字典中。 ' – DBueno
当使用'IBinder'时,你不应该在你的'function.json'文件中为该参数设置映射参数。这就是你遇到错误的原因。 – mathewc
不支持基于添加到根文件夹的子文件夹中的文件的文件触发器,并且您需要在每个子文件夹上具有不同的函数/触发器。 –