【发布时间】:2017-03-06 02:28:49
【问题描述】:
我们的 Blob 触发函数遇到了问题。 该函数是用javascript编写的。 我们很难为其实施自动化部署流程。 以下是我们遵循的步骤。
使用 ARM 模板和参数文件在现有资源组中创建函数应用
New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath -TemplateParameterFile $armParametersFilePath;通过
Kuduapi部署功能代码Invoke-RestMethod -Uri "$apiUrl" -Method Put -InFile "$functionCodeArchivePath" -Credential $credentials -DisableKeepAlive -UserAgent "powershell/1.0" -TimeoutSec 600通过kudu api运行
npm install命令Invoke-RestMethod -Uri "$apiCommandUrl" -Method Post -Body $json -DisableKeepAlive -ContentType "application/json" -Credential $credentials -UserAgent "powershell/1.0" -TimeoutSec 1200
在最后一步 - 获取 Kudu 上的依赖项 (npm install) 的命令超时,这似乎是 known issue。
为了克服这个问题,我们使用 WebPack 将所有依赖项打包到一个 JavaScript 文件中,遵循this approach。
现在部署速度更快了,但功能似乎没有正确执行。
当我们将文件放入我们的 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?
-
每个 Function App 可以打开的套接字连接数有一个上限。您可以批量处理 API 调用吗?
-
@don-lockhart blob 不多,最多 5 个。 blob 的数量会影响函数的调用吗?
-
@ling-toh 好点,我想我们可以。达到上限会影响其他功能的执行吗?
-
如果您有大量 blob(超过 10,000 个),则可能不会发生触发器。所以,这不是你的问题。
标签: azure azure-functions