.net 上传文件时,Azure函数使用SFTP触发两次

2w3rbyxf  于 2022-12-01  发布在  .NET
关注(0)|答案(1)|浏览(126)

我有一个BlobTrigger Azure函数,它通过容器中的Webhook事件与SFTP连接一起工作。
因此,我的问题是,当我使用SFTP连接上传文件时,它会触发我的Azure函数两次。(通过SFTP客户端(WinSCP、FileZilla等)或甚至直接使用Windows Powershell,它会使用两个不同的ID触发两次**。)
但是,当我直接上传(不使用SFTP)到Storage Account\Container时,它只触发一次,这是必须的。
通过SFTP

上载文件时函数监视器的外观
记录档

我的Azure功能

尝试通过更改host.json中的扩展值来处理此问题,例如maxConcurrent maxProcessor(大多数情况下为1 ..),但不幸的是,没有一个成功。我检查过,但只有一个插槽,不允许使用会话等。
存储帐户\容器中的我的webhook事件

k2arahey

k2arahey1#

我发现了这个问题,希望它能在未来帮助其他人;
当我们直接从Azure门户上传blob时,它只会创建一个“PutBlob”事件,当您使用sftp协议(无论是什么软件)时,它会在sftpconnect事件之后立即创建2个事件(sftpcreate和sftpcommit)。Azure Blob存储作为事件网格源- Azure事件网格|微软学习。
Based on the official documentation, SFTP uploads will generate 2 events. One SftpCreate for an initial empty blob created when opening the file and one SftpCommit when the file contents are written. If you want to ensure that the Microsoft.Storage.BlobCreated event is triggered only when a Block Blob is completely committed, filter the event for the SftpCommit REST API call.
It meets my expectations

相关问题