1
我在Visual Studio 2017中使用最新的Azure函数SDK,我想将一个blob从一个容器复制到另一个容器。名称保持不变,但容器名称将从源blob的元数据中检索。使用VS2017在Azure函数中复制Blob
我开始与只是试图触发功能,包括作为元数据:
[FunctionName("ScanFile")]
public static void Run([BlobTrigger("tobescanned/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, IDictionary<string, string> metadata, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
log.Info($"metadata count {metadata.Count}");
}
这工作,所以后来试着做副本:
[FunctionName("ScanFile")]
public static void Run([BlobTrigger("tobescanned/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, IDictionary<string, string> metadata, string name,
[Blob("employees/{name}", Connection = "AzureWebJobsStorage")]Stream outputBlob,
TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
log.Info($"metadata count {metadata.Count}");
myBlob.CopyTo(outputBlob);
}
但现在的功能不是事件调用,所以做了绑定的错误。有什么明显的我做错了吗?我发现很难找到使用新功能SDK的示例。
下一步从此(当我得到它的工作)是在运行时设置输出容器。我认为它可能是这样的:
[FunctionName("ScanFile")]
public static void Run([BlobTrigger("tobescanned/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, IDictionary<string, string> metadata, string name,
[Blob("{outputContainer}/{name}", Connection = "AzureWebJobsStorage")]Stream outputBlob, string outputContainer,
TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
log.Info($"metadata count {metadata.Count}");
outputContainer = metadata["Destination"];
myBlob.CopyTo(outputBlob);
}
这看起来像它会工作(当我有输出工作)?
谢谢
例2 - 在部署时查看'function.json'来查看它生成的绑定。例3不起作用,你可能需要使用'ICollector'。 – Mikhail
@Mikhail'function.json'只有输入绑定,不显示输出,所以不太确定我做错了什么 – ADringer