Stockage Blob Azure : Un Guide PowerShell pour la Copie de Fichiers

Apprenez comment copier des fichiers dans le stockage blob Azure avec la cmdlet PowerShell Set-AzureStorageBlobContent dans ce tutoriel pratique.

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!

Dans le cadre de ce projet, j’ai dû télécharger un tas de fichiers dans un conteneur de compte de stockage Azure. Étant habitué à la cmdlet Copy-Item de PowerShell pour copier des fichiers, je me suis dit qu’il devait y avoir quelque chose de similaire pour Azure dans le module PowerShell Azure, mais j’ai été déçu. Au lieu de cela, j’ai dû utiliser trois cmdlets distincts juste pour télécharger un seul fichier dans un conteneur de stockage commun.

Une fois que j’ai compris comment le faire, je n’avais pas vraiment envie de me souvenir de la procédure pour télécharger un fichier dans un conteneur de stockage Azure à chaque fois. Alors, comme le ferait tout développeur PowerShell, j’ai créé une fonction facile à utiliser appelée Copy-AzureItem pour copier des fichiers dans le stockage Blob Azure. Cette fonction m’a fait gagner énormément de temps et j’espère qu’elle pourra en faire autant pour vous également.

Voici comment cela fonctionne :

Tout d’abord, pour mettre un fichier dans un conteneur de stockage ARM Azure, il faut trois « objets » différents : un compte de stockage, un conteneur de compte de stockage et le blob ou le fichier lui-même. Vous devez spécifier chacun de ces « objets » lors du téléchargement du fichier. Pour ce faire, vous pouvez utiliser trois cmdlets différents sur une seule ligne.

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

Comme vous pouvez le constater, j’utilise le splatting pour fournir les différents paramètres à chaque cmdlet.

Tout cela juste pour copier un fichier sur Azure ? Non merci ! À la place, que diriez-vous de faire quelque chose comme ceci ?

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

Beaucoup plus facile ! Certes, je définis par défaut le groupe de ressources et le compte de stockage dans la fonction, mais c’est facile à mettre à jour.

Alors, sans plus attendre, n’hésitez pas à télécharger cette fonction depuis mon dépôt Github. Si vous êtes trop paresseux pour le faire, copiez-collez-le d’ici.

function Copy-AzureItem
{
	<#
	.SYNOPSIS
		Cette fonction simplifie le processus de téléchargement de fichiers vers un compte de stockage Azure. Pour que cette fonction fonctionne, vous devez déjà être connecté à votre abonnement Azure avec Login-AzureAccount. Le fichier téléchargé portera le nom du fichier en tant que blob de stockage.
		
	.PARAMÈTRE CheminDuFichier
		Le chemin local du(des) fichier(s) que vous souhaitez télécharger dans un conteneur de compte de stockage Azure.
	
	.PARAMÈTRE NomDuConteneur
		Le nom du conteneur du compte de stockage Azure dans lequel le fichier sera placé.
	
	.PARAMÈTRE NomDuGroupeDeRessources
		Le nom du groupe de ressources dans lequel se trouve le compte de stockage.
	
	.PARAMÈTRE NomDuCompteDeStockage
		Le nom du compte de stockage dans lequel se trouve le conteneur qui contiendra le fichier.
	#>
	[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/