我有一个场景,我想执行一个命令来处理一个文件,每当它被添加到azure blob存储。该命令只能以本地路径作为输入。在azure中实现这一点的最佳方法是什么?
Thanks in advance
编辑:
流程如下:
- 我们正在将文件从UI发送到Azure Functions
- Azure函数将该文件存储在Blob存储
现在我们想用命令处理该文件,该命令只能将本地文件路径作为输入(我们不能在该命令中使用URL)。所以我想使用Node.jstmp
包在本地存储上创建一个临时文件。
但真正的问题是这些文件的大小可以以gb为单位,所以这会导致任何问题吗?还有别的办法吗?我也不确定Azure函数是否支持外部命令。你能建议我们如何安装吗?
根据目前的信息,Azure Functions听起来像是适合这项工作的工具。如果你使用Blob触发器,默认情况下你可以在流中获得文件。
当检测到新的或更新的Blob时,Blob存储触发器启动一个函数。blob内容作为函数的输入提供。
Azure Blob存储触发器需要一个通用存储帐户。还支持具有分层名称空间的存储V2帐户。若要使用纯blob帐户,或者如果您的应用程序有特殊需求,请查看使用此触发器的替代方案。
[FunctionName("BlobTriggerExample")]
public static void Run(
[BlobTrigger("trigger-container/{name}")] Stream myBlob,
string name, ILogger log)
{
log.LogInformation($"Processed blobn Name:{name} n Size: {myBlob.Length} Bytes");
}
如果您确实需要文件在本地,您当然可以将它存储在(临时)磁盘上。重构代码以使其能够与Stream
一起工作可能会更有趣。
就像Peter在他的评论中所说的,你可能需要添加一些细节来澄清需求是什么。
编辑:
Azure功能的消费计划托管选项的(总)存储限制为5tb。存储几gb大小的文件应该不成问题。
存储限制是同一应用程序服务计划中所有应用程序临时存储中的总内容大小。消费计划使用Azure文件作为临时存储。
来源:Azure功能托管选项-服务限制。
请注意,对于一个给定的实例,函数可能会同时运行多次,所以最好确保每次执行都有一个唯一的路径。
至于你的"外部命令":如果你已经开发了一个Azure函数来处理文件,为什么还需要运行外部命令?您正在开发处理文件的代码,您可以在这里实现所需的内容。
如果你正在用一种有外部包来(帮助)实现你的功能的语言开发Azure函数,只需将它们添加到你的Azure函数项目中(如NuGet或NPM包)。