Microsoft AZURE blob 触发功能间歇性工作

2023-12-15

我们的 Blob 触发函数遇到了问题。 该函数是用 JavaScript 编写的。 我们很难为其制定自动化部署流程。 以下是我们遵循的步骤。

  1. 使用 ARM 模板和参数文件在现有资源组中创建函数应用New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath -TemplateParameterFile $armParametersFilePath;

  2. 通过以下方式部署功能代码Kudu api Invoke-RestMethod -Uri "$apiUrl" -Method Put -InFile "$functionCodeArchivePath" -Credential $credentials -DisableKeepAlive -UserAgent "powershell/1.0" -TimeoutSec 600

  3. Run the npm install通过 kudu api 命令Invoke-RestMethod -Uri "$apiCommandUrl" -Method Post -Body $json -DisableKeepAlive -ContentType "application/json" -Credential $credentials -UserAgent "powershell/1.0" -TimeoutSec 1200

在最后一步中 - 获取依赖项的命令(npm install)在 Kudu 上超时这似乎是已知问题.

为了克服这个问题,我们使用 WebPack 将所有依赖项打包到一个 JavaScript 文件中,如下所示这种方法.

现在部署速度更快了,但该功能似乎没有正确执行。

当我们将文件放入 blob 存储帐户时,函数会被触发,该函数似乎并不总是记录执行跟踪。 有些运行具有完整日志,有些运行仅包含Function started其中没有任何自定义日志语句。

以下是直接来自 Kudu 的日志 (D:\home\LogFiles\Application\Functions\Function\functionname>)

2017-03-03T11:24:33.835 Function started (Id=77b5b022-eee0-45e0-8e14-15e89de59835)
2017-03-03T11:24:35.167 JavaScript blob trigger function started with blob:
2017-03-03T11:24:35.167 Name: _1486988111937 
 Blob Size: 8926 Bytes
2017-03-03T11:24:35.167 Extracting file
2017-03-03T11:24:35.167 JavaScript blob trigger function processed blob 
 Name: _1486988111937 
 Blob Size: 8926 Bytes
2017-03-03T11:24:35.183 Function completed (Success, Id=77b5b022-eee0-45e0-8e14-15e89de59835)
2017-03-03T11:24:35.292 { Error: [** SENSITIVE ERROR MESSAGE, INTERNAL TO FUNCTION, REMOVED **] }
2017-03-03T11:28:34.929 Function started (Id=8bd96186-50bc-43b0-916c-fefe4bd0cf51)
2017-03-03T11:38:18.302 Function started (Id=7967cc93-73cf-4acf-8428-20b0c70bbac9)
2017-03-03T11:39:32.235 Function started (Id=a0abb823-9497-429d-b477-4f7a9421132e)
2017-03-03T11:49:25.164 Function started (Id=ab16b1d9-114c-4718-aab2-ffc426cfbc98)
2017-03-03T11:53:51.172 Function started (Id=87ed29bc-122f-46d2-a658-d933330580c9)
2017-03-03T11:56:06.512 Function started (Id=23f8ee3f-cda0-45a3-8dd0-4babe9e45e4e)
2017-03-03T12:02:58.886 Function started (Id=c7ef7ad5-62b8-4b43-a043-bc394d9b02f5)

PS:我们的函数代码是获取 blob(一个压缩文件),将其解压缩并对压缩文件夹内的每个文件进行 API 调用。错误标记为[** SENSITIVE ERROR MESSAGE, INTERNAL TO FUNCTION, REMOVED **]日志中的内容与我们 API 的连接有关。


看起来 Blob 触发不太可靠,至少根据此页面:如何将 Azure Blob 存储与 WebJobs SDK 结合使用

WebJobs SDK 扫描日志文件以监视新的或更改的 blob。这个过程不是实时的;创建 blob 后几分钟或更长时间可能不会触发函数。此外,存储日志是在“尽力而为”的基础上创建的;无法保证所有事件都会被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受 blob 触发器的速度和可靠性限制,推荐的方法是在创建 blob 时创建队列消息,并使用 QueueTrigger 属性而不是 BlobTrigger处理 blob 的函数的属性。

您可能应该更改逻辑并为放入 Blob 存储中的每个文件创建一个队列消息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft AZURE blob 触发功能间歇性工作 的相关文章

随机推荐