У меня есть сценарий, в котором я записываю некоторые данные в BLOB-объект хранения Azure, запускаю функцию Azure для обработки данных и записываю результат в другую запись хранения BLOB-объектов. Я сталкивался со странными сценариями, в которых если функция не сработала какое-то время (пару дней), она перестанет реагировать на триггер, если я не перейду на портал Azure и не перезапущу функцию. Это также происходит, когда я использую VSTS для публикации функции в моем конвейере CI / CD. Снова требуется перезагрузка.
Чтобы обойти это, я бы предпочел использовать HTTP-триггер, где я могу, по крайней мере, получить ответ кода состояния на мой запрос и лучше понять, что моя функция фактически сработала.
Вот метод для работающего триггера BLOB-объекта:
[FunctionName("ProcessOpenOrders")]
public static async Task Run([BlobTrigger("%TriggerBlobPath%/{name}")]Stream myBlob, string name, TraceWriter traceWriter, [Blob("%OutboundBlobPath%/{name}", FileAccess.Write)] Stream outputStream, ExecutionContext context)
TriggerBlobPath и OutboudBlobPath являются конфигурациями настройки слотов. Это важно, потому что мне нужно имя записи хранилища больших двоичных объектов в качестве параметра, чтобы я знал, что читать, и использую то же имя записи, что и для вывода.
Для триггера HTTP мне понадобится это имя аналогичным образом. У меня вопрос как?
Что-то вроде этого, я думаю:
public static async Task Run([HttpTrigger] HttpRequestMessage request, [Blob("%InboundBlobPath%/{name}", FileAccess.Read)]Stream myBlob, string name, TraceWriter traceWriter, [Blob("%OutboundBlobPath%/{name}", FileAccess.Write)] Stream outputStream, ExecutionContext context)
но я получаю следующую ошибку:
Microsoft.Azure.WebJobs.Host: Unable to resolve binding parameter 'name'. Binding expressions must map to either a value provided by the trigger or a property of the value the trigger is bound to, or must be a system binding expression (e.g. sys.randguid, sys.utcnow, etc.).
Если кто-то знает, как реализовать HttpTrigger вместо триггера BLOB-объекта, но получить такую же функциональность, это было бы очень полезно. В противном случае, если у кого-то есть идея о том, как гарантировать, что триггер BLOB-объекта действительно сработал, это также было бы очень полезно.
Спасибо!