Alb*_*ous 5 event-handling azure webhooks azure-data-lake azure-functions
一旦将新文件添加到第1代Azure数据湖中后,我想向外部NIFI流发送事件或通知。
有人工作过,或者有关于此用例的任何信息吗?
嘿,这是一个很好的问题,不幸的是,目前还没有可以挂起的现成事件,但是我找到了一种使用诊断日志的方法。
所以想法很简单
因此要在ADLSv1上设置诊断日志
现在设置逻辑应用
3.1。设置从到表达式
triggerBody()?['ContentData']['records']
Run Code Online (Sandbox Code Playgroud)
3.2。将右侧条件设置为“创建”,并将左侧条件字段设置为expression
item()['operationName']
Run Code Online (Sandbox Code Playgroud)
5.1。您将看到逻辑应用成功执行时
您会在列表中找到新文件
如您所见,在演示文件夹中,我上传的文件之一称为MarketplaceCharges.json。
每个事件看起来像这样
{
"time": "2019-09-18T07:48:20.342Z",
"resourceId": "/SUBSCRIPTIONS/2BCB9F3D-3F6B-4345-A49E-86D3141C7F73/RESOURCEGROUPS/STACKDEMO/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/STACKDEMO",
"category": "Requests",
"operationName": "create",
"resultType": "201",
"callerIpAddress": "::ffff:111.222.333.444",
"correlationId": "93faafd5-dfa2-4432-91f8-c7f360d80655",
"identity": "adam@marczak.io",
"properties": {
"HttpMethod": "PUT",
"Path": "/webhdfs/v1/demo/MarketplaceCharges.json",
"RequestContentLength": 0,
"ClientRequestId": "288c654f-0948-4468-8e92-b158cc265c54",
"StartTime": "2019-09-18T07:48:20.264Z",
"EndTime": "2019-09-18T07:48:20.334Z",
"UserId": "8162E212-E32B-443C-8F13-1CDA7B264DDB"
}
}
Run Code Online (Sandbox Code Playgroud)
并且您通过文件路径/webhdfs/v1/demo/MarketplaceCharges.json获得了价值
我在ADLSv1上创建了3个文件,并按预期在循环中获得了3个项目
现在,您可以使用此事件信息执行任何操作,并在需要时将其发送。
最后,您可能需要将逻辑应用程序更改为功能应用程序,以防止大量请求,因为逻辑应用程序在规模上并不便宜
triggerBody()?['ContentData']['records']
Run Code Online (Sandbox Code Playgroud)
还有一个重要的注意事项,对于较大的文件,请确保添加一些延迟,因为创建的请求类型是文件出现在存储中时,即使文件仍在复制中。在这种情况下,还会发生进一步的“附加”事件。
小智 -1
尽管 Azure Data Lake Storage (ADLS) Gen2 是基于 Azure Blob 存储构建的,但仍记录了一些已知问题和差异。
由于这些差异,我相信我们无法使用可用于 Blob 存储或事件网格的现有绑定。
但您仍然可以拥有一个由计时器触发的函数,并使用ADLS v2 REST API来读取/更新文件。