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)