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