En este post te voy a contar cómo podés automatizar la creación de un Azure Storage Account usando Bicep, 
y después probarlo con una aplicación en .NET para subir archivos de manera sencilla. 
La idea es que no tengas que depender del portal de Azure y puedas hacerlo todo con comandos y un poco de código.

 

Usar Bicep en Azure es como tener un martillo en tu caja de herramientas.
El martillo no construye la casa por sí solo, pero es esencial para armarla rápido y con precisión.
De la misma forma, Bicep no “ejecuta” tu aplicación, pero te permite definir y desplegar la infraestructura de forma clara y repetible.
Si lo usás bien, evitás improvisar con clavos torcidos y ahorrás tiempo cada vez que necesitás levantar un nuevo proyecto en la nube.

 

 

Primero, vamos a crear un Resource Group y el Storage Account con un archivo Bicep. 
Bicep es un lenguaje que te deja definir tu infraestructura como código, 
así que con un solo comando de Azure CLI podés desplegar todo. 
En mi caso, lo hice con: `az deployment group create -g demoBicep --template-file storageAccount.bicep --parameters accountName=stg2025demo`.

Cuando el recurso ya está creado, lo siguiente es sacar el Connection String. 
Esto es clave porque va a ser la llave que tu app va a usar para conectarse al Storage. 
Lo podés conseguir con un comando rápido en Azure CLI y tenerlo listo para pegar en tu código.

Después viene la parte divertida: probarlo. 
Para eso armé una pequeña aplicación de consola en .NET 8 (la podés clonar desde mi repo en GitHub). 
Esta app te pide el SAS URL del contenedor, la carpeta local con los archivos que quieras subir y 
te deja elegir si subís todos o solo algunos. Todo directo desde la terminal, sin vueltas.

Eso sí, antes de usarla tenés que ir al portal, habilitar el acceso al contenedor y crear un SAS con permisos de lectura, escritura y creación. 
El SAS es como un pase temporal con permisos definidos, así que si lo configurás bien podés compartirlo sin exponer tu clave de cuenta.
¿Como lo haremos?

Este flujo es ideal para aprendices y profesionales que quieran conocer el poder de la infraestructura como código y validar sus recursos sin depender del portal.

2. Preparar el entorno
----------------------
Necesitas tener instalados:
- Azure CLI -> https://learn.microsoft.com/es-es/cli/azure/install-azure-cli
- Bicep CLI -> https://learn.microsoft.com/es-es/azure/azure-resource-manager/bicep/install
- .NET 8 SDK -> https://dotnet.microsoft.com/download/dotnet/8.0

3. Crear un Resource Group
--------------------------
az group create --name demoBicep --location eastus

4. Archivo storageAccount.bicep
-------------------------------
param accountName string
param location string = resourceGroup().location
param skuName string = 'Standard_LRS'
param kind string = 'StorageV2'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: toLower(accountName)
  location: location
  sku: {
    name: skuName
  }
  kind: kind
}

5. Desplegar con Azure CLI (una sola línea)
-------------------------------------------
az deployment group create -g demoBicep --template-file storageAccount.bicep --parameters accountName=stg2025demo

6. Obtener el Connection String
--------------------------------
az storage account show-connection-string --name stg2025demo --resource-group demoBicep --query "{AzureStorage:{ConnectionString:connectionString}}" -o json

7. Probar el Storage Account con la app .NET
--------------------------------------------
Repositorio de prueba: https://github.com/joseantcloud/dotnet-blob-storage-cli

Pasos rápidos:
git clone https://github.com/joseantcloud/dotnet-blob-storage-cli.git
cd dotnet-blob-storage-cli
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.Json
dotnet add package Azure.Storage.Blobs
dotnet build
dotnet run

8. Generar un SAS URL para el contenedor
----------------------------------------
En el portal de Azure:
1. Ve a tu Storage Account.
2. Crea un contenedor con Access level: Container.
3. Genera un SAS con permisos RACW (Read, Add, Create, Write) y expiración definida.

9. Ejecutar la prueba
---------------------
- Pega el SAS URL en la app.
- Selecciona la carpeta local con los archivos.
- Sube todos o elige cuáles subir.
- Confirma en el portal de Azure que los blobs fueron cargados.

10. Conclusión
--------------
Usando Bicep para automatizar y .NET CLI para probar, logramos un flujo de trabajo rápido y reproducible para crear y validar recursos en Azure.
Este ejemplo se puede extender para:
- Automatizar despliegues de entornos completos.
- Integrar en pipelines de CI/CD.
- Enseñar en cursos prácticos de Azure.