Trabajar con los blobs de Azure Storage en PHP | return(GiS);

Si estás trabajando con Microsoft Azure, seguro que Azure Storage es uno de tus servicios. Es uno de los más básicos y antiguos de toda la plataforma. Aún recuerdo, a principios del 2010, muchos de los artículos en los que te hablaba de este servicio. ¡Cómo pasa el tiempo!

En este post te quiero mostrar cómo trabajar con Azure Storage en PHP, más en concreto con los blobs. Lo primero que vamos a hacer es crear una aplicación de prueba con el framework Symfony, que es con el que vengo trabajando. Ejecuta el siguiente comando para crear el esqueleto del proyecto:

composer create-project symfony/website-skeleton azure-storage-blobs-php

A día de hoy existen dos librerías, proporcionadas por Microsoft, para trabajar con Azure Storage y PHP: Microsoft Azure Storage PHP Client Libraries y Azure SDK for PHP. Se recomienda que uses la primera de ellas si solo vas a trabajar con Azure Storage, ya que es la que se está actualizando a día de hoy. Sin embargo, no todas los servicios de Azure están disponibles en ella, por lo que si necesitas integrar otros servicios como Azure Service Bus deberás utilizar la segunda.

En Azure Storage PHP Client Libraries, los servicios de blobs, tablas y colas están en librerías separadas. Para este ejemplo, para instalar la de blobs puedes hacerlo a través de composer con el siguiente comando:

composer require microsoft/azure-storage-blob

Encapsula todo lo relativo a Azure Storage en una clase llamada BlobService. Dentro de la carpeta src crea una nueva llamada Service y añade el siguiente código dentro de BlobService.php:

Como puedes ver, he añadido algunas funciones de ejemplo como recuperar los contenedores de una cuenta, los blobs, subir un archivo o eliminarlo. Obviamente, hay muchas otras acciones que se pueden realizar pero es para que tengas una idea de su estructura y lo que necesitas para conectarte a una cuenta de Azure Storage. Como ves, en el constructor se crea el cliente para poder conectarte. Debes incluir en el archivo .env el valor para la clave AZURE_STORAGE_CONNECTION_STRING, la cual debe tener este formato:

AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=YOUR_ACCOUNT_NAME;AccountKey=YOUR_ACCOUNT_KEY;

Ahora crea un nuevo controlador llamado BlobsController. Puedes ayudarte de este comando para generarlo:

php bin/console make:controller BlobsController

Este comando te genera tanto la clase para el controlador como una página asociada al mismo. Reemplaza el código de BlobsController.php por el siguiente:

Para poder ver el resultado he modificado el archivo templates/base.html.twig para añadir Bootstrap:

Por último he modificado templates/blobs/index.html.twig para mostrar el listado de blobs que tengo en el container images:

El resultado debería de ser parecido al siguiente, si has elegido los personajes de Breaking Bad como imágenes claro 🙂

El ejemplo completo lo tienes en GitHub.

¡Saludos!

Originally published at www.returngis.net on February 1, 2019.