Azure Blob Storage: Una guía de PowerShell para copiar archivos

Aprende cómo copiar archivos a Azure Blob Storage con el cmdlet Set-AzureStorageBlobContent de PowerShell en este práctico tutorial.

I’ve been doing a lot of Azure IaaS work via ARM lately in PowerShell. As a result, I’ve unfortunately found out how bad the documentation and behavior is for the Azure PowerShell module but I’ve persisted and have overcome!

Como parte de este proyecto, he tenido que cargar varios archivos en un contenedor de cuenta de almacenamiento de Azure. Acostumbrado al cmdlet Copy-Item de PowerShell para copiar archivos, pensé que tenía que haber algo similar para Azure en el módulo PowerShell de Azure, pero me decepcioné. En su lugar, me vi obligado a usar tres cmdlets separados solo para subir un solo archivo a un contenedor de almacenamiento común.

Una vez que descubrí cómo hacerlo, realmente no quería recordar cómo subir un archivo a un contenedor de almacenamiento de Azure cada vez. Entonces, como haría cualquier desarrollador de PowerShell, creé una función fácil de usar llamada Copy-AzureItem para copiar archivos en Azure Blob Storage. Esta función me ha ahorrado mucho tiempo y espero que también pueda hacer lo mismo por ti.

Así es como funciona:

Primero, para llevar un archivo a un contenedor de almacenamiento de Azure ARM se necesitan tres “objetos” diferentes: una cuenta de almacenamiento, un contenedor de cuenta de almacenamiento y el blob o el propio archivo. Debes especificar cada uno de estos “objetos” al cargar el archivo. Para hacer esto, puedes usar tres cmdlets diferentes en una línea.

Get-AzStorageAccount @saParams | Get-AzStorageContainer @scParams | Set-AzureStorageBlobContent@bcParams

Como puedes ver, estoy utilizando splatting para proporcionar los diversos parámetros a cada cmdlet.

¡¿Todo esto solo para copiar un archivo a Azure?! ¡No, gracias! En cambio, ¿qué tal hacer algo como esto?

Copy-AzureItem -FilePath C:\MyFile.exe -ContainerName azcontainer

¡Mucho más fácil! Es cierto, estoy estableciendo por defecto el grupo de recursos y la cuenta de almacenamiento en la función, pero eso es fácil de actualizar.

Entonces, sin más preámbulos, siéntase libre de descargar esta función desde mi repositorio de Github. Si eres demasiado perezoso para hacer eso, cópialo y pégalo desde aquí.

function Copy-AzureItem
{
	<#
	.SINOPSIS
		Esta función simplifica el proceso de carga de archivos a una cuenta de almacenamiento de Azure. Para que esta función funcione, 
		debes haber iniciado sesión previamente en tu suscripción de Azure con Login-AzureAccount. El archivo cargado se llamará 
		igual que el blob de almacenamiento.
		
	.PARAMETRO RutaDelArchivo
		La ruta local del archivo(s) que te gustaría cargar en un contenedor de una cuenta de almacenamiento de Azure.
	
	.PARAMETRO NombreDelContenedor
		El nombre del contenedor de la cuenta de almacenamiento de Azure en el que se colocará el archivo.
	
	.PARAMETRO NombreDelGrupoDeRecursos
		El nombre del grupo de recursos en el que se encuentra la cuenta de almacenamiento.
	
	.PARAMETRO NombreDeLaCuentaDeAlmacenamiento
		El nombre de la cuenta de almacenamiento en la que se encuentra el contenedor que contendrá el archivo.
	#>
	[CmdletBinding()]
	param
	(
		[Parameter(Mandatory,ValueFromPipelineByPropertyName)]
		[ValidateNotNullOrEmpty()]
		[ValidateScript({ Test-Path -Path $_ -PathType Leaf })]
		[Alias('FullName')]
		[string]$FilePath,
	
		[Parameter(Mandatory)]
		[ValidateNotNullOrEmpty()]
		[string]$ContainerName,
	
		[Parameter()]
		[ValidateNotNullOrEmpty()]
		[string]$ResourceGroupName = 'ResourceGroup',
	
		[Parameter()]
		[ValidateNotNullOrEmpty()]
		[string]$StorageAccountName = 'StorageAccount'
	)
	process
	{
		try
		{
			$saParams = @{
				'ResourceGroupName' = $ResourceGroupName
				'Name' = $StorageAccountName
			}
			
			$scParams = @{
				'Container' = $ContainerName
			}
			
			$bcParams = @{
				'File' = $FilePath
				'Blob' = ($FilePath | Split-Path -Leaf)
			}
			Get-AzureRmStorageAccount @saParams | Get-AzureStorageContainer @scParams | Set-AzureStorageBlobContent @bcParams
		}
		catch
		{
			Write-Error $_.Exception.Message
		}
	}
}

Source:
https://adamtheautomator.com/copy-files-to-azure-blob-storage/