【发布时间】:2020-01-01 23:21:58
【问题描述】:
我们可以绑定到连接字符串值以便简单地输出绑定到特定的存储帐户吗?
我想创建一个 blob 移动器,消费者将在其中传递一个对象,例如:
{
"sourceConnection":"..blob connection string",
"destinationConnection":"...blob connection string",
"filename":"/someContainer/someDir/myfile.jpg"
}
该函数将由队列触发:
{
"name": "myQueueItem",
"queueName": "myqueue-items",
"connection":"",
"type": "queueTrigger",
"direction": "in"
}
...myQueueItem 将具有上述有效负载。
我们如何将 blob 从 sourceConnection 移动到 destinationConnection?
我同时指定了javascript 和c# 标签,因为我需要在其中一个中制定解决方案。
如果我们假设源存储帐户和目标存储帐户相同,我们可以简单地编写一个函数来在两个容器之间移动 blob,如下所示:
public static class BlobMover
{
[StorageAccount("Connection")]
[FunctionName("BlobMover")]
public static async Task Run(
[QueueTrigger("%BlobMover:TriggerQueue%")] BlobMessage msg,
[Blob("{source}-error/{name}", FileAccess.Write)] CloudBlockBlob error,
[Blob("{destination}/{name}", FileAccess.Write)] CloudBlockBlob @out,
[Blob("{source}/{name}", FileAccess.Read)] CloudBlockBlob @in,
ILogger log)
{
await @out.StartCopyAsync(@in);
}
}
但是,存储帐户会有所不同,因此上述解决方案不起作用。
【问题讨论】:
-
目标是正确移动 blob?无论如何,您从消费者那里获得了有效载荷?我可以建议使用 httptrigger 的解决方案吗?
-
没有。我需要在存储帐户之间移动 blob。我想强迫它与绑定兼容不是优先事项
标签: javascript c# node.js azure-functions