问题描述
我有一个网络位置,每小时都有一个csv文件被转储。我需要将该文件复制到一个天蓝色的Blob。我怎么知道文件已经上传到该网络驱动器。天蓝色是否有诸如文件监视程序之类的东西来监视此网络位置?另外,是否可以通过代码将文件从网络位置复制到天蓝色的Blob?
我正在使用部署到Azure应用服务的.net核心API。
请提出可能的解决方案。
解决方法
您可以使用Azure事件网格,但到目前为止,事件网格不支持Azure文件共享。
作为本地共享的唯一方式,我看到的是可以编写一个可以在本地运行并使用Azure Event Grid将事件发送到Azure Event Grid的自定义发布程序以及一个可以是Azure Function的订阅程序完成您想要的工作。
https://docs.microsoft.com/en-us/azure/event-grid/custom-event-quickstart-portal
但这只是一个事件,而不是已添加\更改的文件本身,为此,您还必须将文件本身上载到Azure进行处理。由于上述方式需要您做两件事,因此我建议在本地运行自定义代码,该代码将像运行CRON作业一样查找并查找新文件或编辑后的文件,然后将其上传到Azure BLOB存储,然后执行Azure Function来执行您的处理任务
,由于文件位于本地,因此您可以使用powershell监视文件夹中是否有新文件。然后触发一个事件,将文件上传到Azure blob。
此处有一个视频演示如何执行此操作:https://www.youtube.com/watch?v=Usih7UywZYA
您需要进行的更改是:
- 用上传到天蓝色的https://argonsys.com/microsoft-cloud/library/how-to-upload-files-to-azure-blob-storage-using-powershell-and-azcopy/ 替换动作
- 在可以上传文件的用户上下文中运行powershell