Azure Function: Trigger al caricamento su Blob Storage

Azure Function: Trigger al caricamento su Blob Storage

Le Azure Function sono attivabili tramite diversi triggers. Uno di essi si attiva sul caricamento di file su Blob Storage e può risultare molto utile.

Prima di procedere vi informo che questa tipologia di trigger è possibile utilizzarlo anche sul proprio ambiente di sviluppo senza utilizzare servizi Cloud.

Azure Function - Template

Di seguito il template generato da Visual Studio creando una Function di tipo Blob Trigger:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace FunctionTest
{
    public static class BlobTriggerTest
    {
        [FunctionName("BlobTriggerTest")]
        public static void Run(
            [BlobTrigger("samples-workitems/{name}", 
                Connection = "connection-string-setting-name")]Stream myBlob, 
            string name,
            ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n " +
                $"Name:{name} \n" +
                $"Size: {myBlob.Length} Bytes");
        }
    }
}

Se desiderate conoscere la definizione di BlobTrigger eccola

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Description;
using System;
using System.Diagnostics;

namespace Microsoft.Azure.WebJobs
{
    [AttributeUsage(AttributeTargets.Parameter)]
    [Binding]
    [ConnectionProvider(typeof(StorageAccountAttribute))]
    [DebuggerDisplay("{BlobPath,nq}")]
    public sealed class BlobTriggerAttribute : Attribute, IConnectionProvider
    {
        public BlobTriggerAttribute(string blobPath);

        public string Connection { get; set; }
        public string BlobPath { get; }
    }
}

Come potete notare è davvero semplice. Ora non vi resta che divertirvi.

Casi d’uso?

Esistono un sacco di motivi per usare il Trigger su Blob Storage. Un esempio che mi viene in mente -e che posso raccontare- risale alla scorsa estate.

In un pomeriggio estivo mi ha chiamato un mio cliente. All’epoca possedeva un portatile molto datato e qualsiasi cosa fuori dall’ordinario lo rallentava parecchio sino ad inchiodare il tutto. Quello che gli serviva era una conversione massiccia di file per ottimizzare la giornata lavorativa.

Proprio utilizzando questa tipologia di trigger ho realizzato il tutto. Come?

  • Tramite una Windows Form i file venivano caricati su un blob storage
  • La Azure Function scattava all’occorrenza
  • Una volta terminata la conversione i file erano pronti (in un secondo container) per il download

Il cliente era felice per la conversione ottenuta e nel mentre poteva lavorare tranquillamente senza avere il portatile bloccato.