Ответ 1
Фактически вы уже можете это сделать в С# Azure Functions, и у нас есть элемент отслеживания здесь, в нашем репо, чтобы включить это для Node.js. Мы скоро доберемся до этого.
Ниже приведен пример рабочей функции, которая связывается с блобом с указанным контуром во время выполнения. Поскольку под крышкой Azure Functions построен на Azure WebJobs SDK, вы заметите, что это зависит от использования WebJobs SDK Binder
того, что вы, возможно, не знакомы. Дополнительную документацию можно найти в WebJobs SDK для IBinder
/Binder
. В SDK WebJobs для привязок используются декларативные атрибуты (например, QueueAttribute
/TableAttribute
/BlobAttribute
и т.д.). Вы можете указать все это во время выполнения через Binder
. В Azure Functions мы используем внешние метаданные для описания привязок, но в этом расширенном сценарии у вас есть гибрид. Обратите внимание, что при использовании Binder
в function.json
нет соответствующего привязки. Для более подробной информации о динамических привязках Binder
см. this SO question/answer.
В общем, вы обнаружите, что многие удивительные функции SDK WebJobs можно использовать в Azure Functions - наш документ просто должен догнать, чтобы люди знали об этом:)
Еще одно замечание: есть встроенная поддержка для генерации случайных новых идентификаторов для выходов. Например. если вы хотите установить выходной путь blob на test-output/{rand-guid}, система автоматически создаст для вас новый идентификатор. Если это соответствует вашим потребностям, вам не нужно Binder
.
using System;
using System.IO;
using System.Net;
using Microsoft.Azure.WebJobs;
public static async Task<HttpResponseMessage>
Run(HttpRequestMessage req, Binder binder, TraceWriter log)
{
log.Verbose($"C# HTTP function processed RequestUri={req.RequestUri}");
using (var writer = await binder.BindAsync<TextWriter>(
new BlobAttribute("test-output/result")))
{
writer.Write("Hello World!!");
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
Для вашего второго вопроса, если вы хотите условно написать привязку к выходу, просто не присваивайте никакого значения привязке - вывод не должен производиться.