Вы уже можете это сделать в C# Azure Functions, и у нас есть элемент отслеживания here in our repo, чтобы включить это для функций 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 Вопрос и ответ.
В общем, вы обнаружите, что многие удивительные возможности WebJobs SDK могут использоваться в Azure функций - наш документ просто необходимо, чтобы догнать, чтобы люди знают об этом :)
Еще одна вещь, чтобы отметить: есть некоторая встроенная поддержка для генерации случайных новых идентификаторов для выходов. Например. если вы установили выходной путь 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);
}
Для вашего второго вопроса, если вы хотите условно записать на выход связывания, просто не назначить какое-либо значение для связывания - вывод не должен быть произведен.
Обновленный ответ с отсутствующей информацией [здесь] (http://stackoverflow.com/questions/39855409/how-do-i-use-binder-to-perform-dynamic-bindings-in-my-c-sharp -функции). –