Azure Function is great, especially binding feature is awesome. But we need to control how binding work in run time, rather than compiled time.
- [Binding at Runtime](https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-expressions-patterns#binding-at-runtime]
Scenario
I want to save file to different blob storage depending on contents. The target path varies depending on file content.
Solution
Use Binder
. You can find example here.
- Pass
Binder
as argument - Instantiate appropriate binding attribute, such as
BlobAttribute
,StorageAccountAttribute
, etc - Instantiate binder.BindAsync
- Write output
public static class IBinderExampleMultipleAttributes { [FunctionName("CreateBlobInDifferentStorageAccount")] public async static Task RunAsync( [QueueTrigger("myqueue-items-source-binder2")] string myQueueItem, Binder binder, ILogger log) { log.LogInformation($"CreateBlobInDifferentStorageAccount function processed: {myQueueItem}"); var attributes = new Attribute[] { new BlobAttribute($"samples-output/{myQueueItem}", FileAccess.Write), new StorageAccountAttribute("MyStorageAccount") }; using (var writer = await binder.BindAsync<TextWriter>(attributes)) { await writer.WriteAsync("Hello World!!"); } } }
Summary
I love this feature as we can still use binding feature but more dynamic way!
Top comments (0)