如何在不先下载内存的情况下将blob从一个存储帐户直接转移到另一个存储帐户?

时间:2020-04-17 17:56:00

标签: azure webapi

我想直接在C#Web API中将blob从一个存储帐户转移到另一个存储帐户,而无需先在内存中下载?

我不希望先下载再在另一个存储帐户中上传的费用。

我只想将blob从一个存储帐户转移到另一个存储帐户,而无需支付额外费用。

2 个答案:

答案 0 :(得分:2)

AzCopy通常是您想要的。它旨在完全满足您的需求,可以通过C#调用。这是full sample,用于通过C#将Blob复制到另一个存储帐户。

您可以像往常一样使用BlobStorage SDK,最后只需像这样复制blob:

await TransferManager.CopyAsync(sourceBlob, destinationBlob, true, null, context, cancellationSource.Token);

完整的源代码:https://github.com/azure-samples/storage-dotnet-data-movement-library-app

答案 1 :(得分:1)

欢迎使用StackOverflow。

值得一提的是,如果您的两个Blob存储帐户都位于同一区域内,并且没有产生出口费用,则仅在将数据移出Azure区域时才需要支付带宽费用。

Azure Data Factory是Azure规定的用于移动数据的机制,默认情况下,其数据移动机制在最接近目标的区域中运行。它具有一个c#SDK来触发数据移动。这不是免费的,但成本最低。

或者,为简单起见,可以使用Azure Logic应用程序,该应用程序具有用于存储帐户的连接器,但是Azure Data Factory是为数据移动而制造的。基本上,在Azure区域内运行的任何产品都将限制您的出口成本。

另一个引人注目的选项是新颖的存储API,该API允许在服务器端完成跨存储帐户的复制:https://azure.microsoft.com/en-us/updates/new-copy-apis-for-efficient-data-copy/我自己并未使用此功能,因为我通常需要Azure数据的更高级功能工厂,但确实适合您探索更多内容。

始终有必要证明任何即用即付操作,以作为概念证明并在生产中进行任何操作之前监控成本-避免意外!