Функция Azure: Http Trigger вместо Blob Trigger для более устойчивых операций - PullRequest
0 голосов
/ 15 мая 2018

У меня есть сценарий, в котором я записываю некоторые данные в 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-объекта действительно сработал, это также было бы очень полезно.

Спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

Я думаю, что официальное руководство - использовать триггер Event Grid, чтобы реагировать на события BLOB-объектов. См. Реакция на события хранилища BLOB-объектов и Триггер сетки событий для функций Azure .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...