Creare ed eseguire un processo di Batch usando la libreria client .NET
A questo punto è disponibile un'app .NET Core che può connettersi al servizio Azure Batch ed è stato creato un pool con tre nodi. Negli esercizi rimanenti di questo modulo saranno implementate le funzionalità elencate di seguito:
- Caricare file video e renderli disponibili per il servizio Azure Batch
- Creare un processo da eseguire in tali nodi
- Aggiungere al processo un'attività per convertire il video
- Eseguire il processo per convertire i video caricati
- Monitorare lo stato delle attività di conversione
- Eseguire la pulizia delle risorse del servizio Batch per evitare eventuali costi aggiuntivi per l'uso. Usare l'opzione di eliminazione del pool se l'elaborazione giornaliera è terminata
Gestione di Batch
L'API client di Batch userà i metodi seguenti per creare, eliminare e monitorare i componenti dell'app:
- batchClient.PoolOperations.CreatePool: è stato aggiunto all'app nell'esercizio precedente
- batchClient.PoolOperations.DeletePoolAsync
- batchClient.JobOperations.CreateJob
- batchClient.JobOperations.AddTaskAsync
- batchClient.JobOperations.DeleteJobAsync
- batchClient.Utilities.CreateTaskStateMonitor
Gestione dei file
Si userà l'account di archiviazione creato in precedenza per creare contenitori in cui archiviare i file di input e output nell'archiviazione BLOB. Dalla libreria client del BLOB del servizio di archiviazione di Azure si useranno le classi e i metodi seguenti:
- CloudStorageAccount: ottiene l'accesso all'account di archiviazione creato
- CloudStorageAccount.Parse(storageConnectionString): crea il collegamento all'account Archiviazione
- storageAccount.CreateCloudBlobClient: crea un oggetto CloudBlobClient
- CloudBlobClient: crea un contenitore
- blobClient.GetContainerReference(containerName): abilita la creazione di contenitori
- CloudBlobContainer: crea la risorsa di archiviazione BLOB
- container.GetBlockBlobReference(blobName): crea un oggetto CloudBlockBlob
- container.CreateIfNotExistsAsync: crea il contenitore se non esiste
- container.DeleteIfExistsAsync: elimina il contenitore se esiste
- CloudBlockBlob: aggiunge o rimuove i file nell'archiviazione BLOB
- blobData.UploadFromFileAsync(filePath): carica il file locale specificato in Archiviazione di Azure
- blobData.GetSharedAccessSignature(sasConstraints): ottiene un URI di firma di accesso condiviso necessario per accedere al video caricato
- ResourceFile.FromUrl (blobSasUri, blobName): specifica un percorso file al video in Archiviazione di Azure
È necessario eseguire alcuni passaggi per consentire a un'app di trasferire file in Archiviazione di Azure. L'app console dovrà anche consentire alle attività di Batch di scrivere l'output nell'archiviazione BLOB.
- Aggiungere il pacchetto NuGet
Microsoft.Azure.Storage.Blob
- Connettersi all'account Archiviazione, usando le credenziali di Archiviazione di Azure
- Creare un BLOB nell'account di archiviazione
- Creare due contenitori per i file di input e output usando il client BLOB
- Usare il contenitore di input per caricare i file video MP4 locali e archiviare un elenco dei file per il processo di Batch
- Quando i video sono stati convertiti, il contenitore di input può essere eliminato, rimuovendo da Azure tutti i video caricati