Comment utiliser le stockage Blob via Azure File Storage

Vous pourriez vous retrouver à avoir besoin d’une solution bon marché mais efficace pour stocker vos fichiers à un moment donné, mais où trouver cette solution? Jetez un œil au stockage Binary Large Object (blob) de Microsoft Azure! Le stockage blob est l’un des services de stockage Azure qui vous permet de stocker de grandes quantités de fichiers de données texte et binaires, du contenu en streaming, ou même du contenu statique pour la distribution.

Dans ce tutoriel, vous apprendrez à travailler avec le stockage blob dans Azure en suivant quelques exemples courants.

Continuez à lire pour vous plonger dedans!

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir les éléments suivants installés et disponibles.

Construction d’un environnement Azure

Avant d’utiliser le stockage blob pour stocker vos fichiers, vous devrez d’abord importer les modules PowerShell Core, vous connecter à votre abonnement Azure et construire un environnement Azure.

1. Lancez PowerShell 7 et exécutez la commande suivante pour importer les modules que vous utiliserez pour stocker des fichiers dans le stockage blob.

Importing the necessary modules
# Az.Accounts - Fournit des cmdlets de gestion des informations d'identification
# Az.Resources - Fournit des cmdlets pour travailler avec les fournisseurs de ressources Azure de plus haut niveau, 
               # comme les abonnements
# Az.Storage - Fournit les cmdlets qui vous aideront à travailler avec 
             # différentes ressources de stockage, comme les blobs
Import-Module Az.Accounts, Az.Resources, Az.Storage

2. Ensuite, connectez-vous à votre locataire Azure Active Directory (AD), puis exécutez la commande ci-dessous pour effectuer une authentification interactive dans votre navigateur Web, comme indiqué ci-dessous.

Bien que cela dépasse le cadre de ce tutoriel, il existe d’autres méthodes d’authentification, telles qu’un Service Principal ou l’utilisation d’un jeton d’accès.

Connect-AzAccount
Azure Portal interactive login.

Assurez-vous toujours que le locataire et l’abonnement affichés après la connexion sont ceux que vous avez l’intention d’utiliser. Si nécessaire, vous pouvez changer votre contexte.

3. Exécutez maintenant la commande ci-dessous pour créer un nouveau groupe de ressources appelé demo, et y ajouter cinq chiffres aléatoires (Get-Random -Maximum 99999). Les groupes de ressources sont hiérarchiquement inférieurs aux abonnements et contiennent des ressources permettant une gestion plus granulaire.

Remarquez que le -Emplacement du groupe de ressources est défini sur Central US pour cet exemple. Lorsque la commande est terminée, elle stocke le résultat dans la variable $resourceGroup.

$resourceGroup = New-AzResourceGroup "demo$(Get-Random -Maximum 99999)" -Location 'Central US'
Creating a new resource group

4. Exécutez la commande ci-dessous pour effectuer les tâches suivantes et créer un nouveau compte de stockage Azure. Pour cet exemple, le compte de stockage est nommé storage et suivi de cinq nombres aléatoires (Get-Random -Maximum 99999). La variable $storageAccount contiendra l’objet retourné après l’exécution de la commande.

# Passez le paramètre -ResourceGroupName avec la propriété ResourceGroupName 
# de la variable $resourceGroup que vous avez créée à l'étape trois.
# Ajoutez des nombres aléatoires au paramètre -Name du compte de stockage 
# similaire au groupe de ressources.
# Définissez la même localisation (-Location) que la propriété Location de la variable $resourceGroup.
# Placer les ressources dans la même région que le groupe de ressources parent est une bonne pratique. 
# Spécifiez le nom du compte de stockage -SkuName avec soit
# un stockage redondant au niveau local (LRS) ou un nom globalement unique dans Azure.

$storageAccount = New-AzStorageAccount `
 -ResourceGroupName $resourceGroup.ResourceGroupName `
 -Name storage$(Get-Random -Maximum 99999) `
 -Location $resourceGroup.Location `
 -SkuName Standard_LRS
Creating a new storage account

5. Exécutez la commande ci-dessous pour exécuter quelques tâches pour l’assignation du Rôle Azure AD :

  • La valeur -SignInName utilise le compte sur lequel vous êtes actuellement connecté via la propriété UserID retournée par la cmdlet Get-AzAccessToken.
  • La valeur de -RoleDefinitionName est le rôle intégré Contributeur de données Blob de stockage que vous attribuez.
  • La valeur -Scope définit la portée de l’attribution de rôle pour le compte de stockage que vous avez créé (stockage10029 illustré ci-dessous) via la propriété Id de la variable $storageAccount.

Vous pouvez toujours fournir des attributions de rôle plus granulaires aux conteneurs individuels si nécessaire.

New-AzRoleAssignment `
 -SignInName (Get-AzAccessToken).UserId`
 -RoleDefinitionName "Storage Blob Data Contributor"`
 -Scope $storageAccount.Id
Creating and verifying a new file

6. Enfin, exécutez la série de commandes ci-dessous pour créer un fichier appelé temp.dat sur votre système local. Vous téléchargerez et téléchargerez ce fichier depuis le compte de stockage dans les sections suivantes pour démontrer le fonctionnement du stockage de blobs.

# Chargez la classe .NET FileStream
$file = New-Object System.IO.FileStream .\temp.dat,Create,ReadWrite
# Définissez la taille du fichier
$file.SetLength(10MB)
# Fermez la poignée
$file.Close()
# Recherchez le fichier pour confirmer la taille
(Get-ChildItem $file.Name).Length
Creating and verifying a new file

Téléchargement de fichiers via PowerShell

Maintenant que vous avez créé un environnement Azure et créé un fichier exemple, commençons par télécharger le fichier dans le stockage de blob. Le stockage de blob fonctionne différemment des systèmes de fichiers standard. Chaque fichier dans le stockage de blob est un objet et est conservé dans des conteneurs.

Les fonctionnalités principales des blobs sont similaires à celles des autres systèmes de fichiers, mais il existe des cas d’utilisation où l’un ou l’autre pourrait être une meilleure solution. Les blobs peuvent même sauvegarder des systèmes de fichiers virtuels (par exemple, BlobFuse).

Microsoft offre plusieurs méthodes pour télécharger des fichiers dans vos comptes de stockage via PowerShell, AzCopy et Azure Portal. Mais commençons par télécharger le fichier exemple (temp.dat) dans le stockage de blob via PowerShell. PowerShell vous offre une expérience cohérente pour travailler avec vos comptes de stockage Azure.

Les actions requises pour effectuer cette démonstration entraîneront des coûts. Surveillez votre consommation et supprimez les ressources lorsque vous n’avez plus l’intention de les utiliser.

Exécutez les commandes ci-dessous pour créer un nouveau conteneur et télécharger le fichier temp.dat ($file) en tant qu’objet. Le conteneur est nommé demo pour cet exemple, mais vous pouvez le nommer différemment selon vos préférences.

# Crée un conteneur dans $storageAccount via la propriété Context du compte de stockage
# L'objet retourné est ensuite passé à la variable $container
$container = New-AzStorageContainer -Name demo -Context $storageAccount.Context
# Télécharge le fichier temp.dat ($file) dans le conteneur de démo ($container)
# Le nom du blob (-Blob) utilisera le même nom que le fichier que vous téléchargez (Get-ChildItem $file.Name)
Set-AzStorageBlobContent -File $file.Name -Container $container.Name -Blob (Get-ChildItem $file.Name).Name -Context $storageAccount.Context
Uploading a file to Azure Storage Account

Téléchargement de fichiers via AzCopy

Peut-être avez-vous des cas d’utilisation plus complexes, tels que la synchronisation de contenu ou la copie de contenu entre différents comptes à grande échelle. Si c’est le cas, l’outil en ligne de commande AzCopy est ce dont vous avez besoin.

Exécutez les commandes ci-dessous pour vous connecter à votre locataire Azure et copiez votre fichier local ($file) vers l’URL de votre conteneur. Vous vous connectez au locataire Azure car AzCopy n’est pas conscient des informations d’identification que vous utilisez avec PowerShell.

# Connectez-vous au locataire Azure
& .\azcopy.exe login
# Copiez le fichier local $file vers l'URI complet du conteneur de destination $container
& .\azcopy.exe copy $file.Name $container.CloudBlobContainer.Uri.AbsoluteUri
Uploading to Azure Storage Account using AzCopy

Au lieu de téléverser, peut-être souhaitez-vous télécharger des fichiers via AzCopy. Si c’est le cas, exécutez la commande ci-dessous pour copier les fichiers spécifiés (temp.dat) depuis votre conteneur vers le répertoire local actuel: & .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat

Téléchargement de Fichiers via le Portail Azure

Si vous préférez une méthode graphique pour téléverser vos fichiers, alors Azure Storage Explorer est votre allié. Azure Storage Explorer est l’une des meilleures méthodes graphiques pour gérer votre stockage de blobs. Vous pouvez accéder à l’explorateur de stockage depuis la ressource de votre compte de stockage dans le portail Azure.

1. Ouvrez votre navigateur Web préféré et accédez à votre explorateur de stockage dans le portail Azure.

2. Cliquez sur le conteneur demo sous CONTENEURS DE BLOBS, comme indiqué ci-dessous, puis cliquez sur Téléverser pour accéder au volet Téléverser le blob (panneau de droite).

3. Cliquez maintenant sur l’icône de dossier dans le panneau Téléverser le blob pour sélectionner les fichiers à téléverser (temp.dat).

4. Enfin, cliquez sur Upload (bouton bleu) pour télécharger votre fichier.

Using the Upload blob blade in Azure Storage Explorer

Une fois le téléchargement terminé, vous pouvez fermer la lame Upload blob et voir votre blob téléchargé, comme sur l’image ci-dessous.

Viewing contents of a blob container in Azure Storage Explorer

Téléchargement de fichiers via le portail Azure

De manière similaire au téléchargement de contenu dans le stockage de blob, Azure prend en charge le téléchargement de contenu de nombreuses manières. Mais comme vous venez de télécharger un fichier (temp.dat) via le portail Azure, téléchargeons le même fichier en utilisant Azure Storage Explorer dans le portail Azure.

Sélectionnez le fichier (temp.dat) à télécharger et cliquez sur le bouton Download dans Azure Storage Explorer, comme indiqué ci-dessous. Cela ouvre une nouvelle boîte de dialogue pour confirmer le téléchargement que vous verrez à l’étape suivante.

Selecting Files to Download

Maintenant, cliquez sur le bouton Click here to begin download pour télécharger les fichiers que vous avez sélectionnés.

Downloading Selected Files from the Blob Storage

Téléchargement de fichiers via PowerShell

Tout comme pour le téléchargement de fichiers, vous avez également la possibilité de télécharger des fichiers depuis le stockage de blob en exécutant des commandes dans PowerShell. Avec PowerShell, vous pouvez répertorier les objets dans un conteneur, puis les télécharger.

Exécutez les commandes ci-dessous pour répertorier tous les objets dans votre conteneur et télécharger temp.dat dans votre répertoire local.

# Liste de tous les objets dans le $container pour vérifier que le conteneur est vide
Get-AzStorageBlob -Container $container.Name -Context $storageAccount.Context
# Télécharger l'objet temp.dat du $container
Get-AzStorageBlobContent -Blob temp.dat -Container $container.Name -Context $storageAccount.Context
Downloading files from Azure Storage Account

Si vous préférez utiliser des liens uniques à durée de vie courte pour télécharger des fichiers, vous pouvez utiliser des jetons d’accès partagé (SAS) pour créer un lien de téléchargement préautorisé. Ces jetons sont des jetons d’authentification uniques et privés que vous pouvez utiliser pour vérifier votre accès.

Exécutez les commandes ci-dessous pour créer un nouveau lien de téléchargement pour le fichier (temp.dat) que vous souhaitez télécharger. Le lien de téléchargement généré expire après 10 secondes et télécharge (Invoke-WebRequest $uri) le contenu en utilisant ce lien dans la variable $temp.

# Générer un nouveau lien de téléchargement valide pendant 10 minutes
$uri = New-AzStorageBlobSASToken -Context $storageAccount.Context -Container $container.Name -Blob temp.dat -Permission r -ExpiryTime (Get-Date).AddSeconds(10) -FullUri
# Utiliser le lien pour télécharger le fichier dans la variable $temp
$temp = Invoke-WebRequest $uri

# Écrire alternativement le fichier dans le répertoire actuel
Invoke-WebRequest $uri -OutFile .\temp.dat
Download from Azure Storage Account using a SAS token

Héberger une page Web sur Internet public à partir du stockage de blob

Jusqu’à présent, vous avez vu des cas d’utilisation de téléchargement de fichiers par des utilisateurs authentifiés. Mais saviez-vous que le stockage de blob peut également offrir une excellente option pour le contenu public ? Un exemple est l’utilisation d’un blob pour héberger le contenu de votre page Web, ce que vous allez réaliser dans cette démonstration.

Même si le contenu de votre page Web est chiffré en transit et au repos, n’importe qui peut accéder à ce contenu si l’accès public est autorisé.

Depuis que vous configurez un cas d’utilisation différent, vous utiliserez l’un des principaux avantages du cloud public en termes d’échelle et d’élasticité. Vous pouvez provisionner un nouveau compte de stockage pour un cas d’utilisation spécifique et limiter le risque d’utilisation de conteneurs publics.

1. Exécutez la commande ci-dessous pour créer un nouveau compte de stockage comme vous l’avez fait à l’étape quatre de la section « Construction d’un environnement Azure ». Mais cette fois, vous passerez l’objet retourné à la variable $publicStorageAccount.

$publicStorageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup.ResourceGroupName -Name storage$(Get-Random -Maximum 99999) -Location $resourceGroup.Location -SkuName Standard_LRS
Creating a storage account

Vous disposez maintenant d’un compte de stockage dédié pour votre contenu public, et vous pouvez le configurer pour héberger du contenu web statique avec la commande suivante.

2. Ensuite, exécutez la cmdlet Enable-AzStorageStaticWebsite pour configurer le compte de stockage ($publicStorageAccount) pour votre nouveau cas d’utilisation. L’option -IndexDocument définit la page web par défaut que vous souhaitez présenter aux utilisateurs. Le -Contexte sera le nouveau compte de stockage que vous venez de créer.

# Créez le conteneur $web et configurez le compte de stockage
Enable-AzStorageStaticWebsite -IndexDocument index.html -Context $publicStorageAccount.Context
Enable storage account for website hosting

3. Exécutez les commandes ci-dessous pour créer un nouveau document HTML dans votre répertoire actuel et téléchargez ce document dans le conteneur spécifiquement pour héberger du contenu web. Le type de contenu est défini sur HTML (ContentType="text/html"), afin que les navigateurs web puissent interpréter correctement le document.

Accéder au document sur un navigateur web affiche le message Hello from <nom du compte de stockage>.

# Créez un fichier HTML simple
"<body><h1>Hello from $($publicStorageAccount.StorageAccountName)!</h1></body>"|Out-File .\index.html
# Téléchargez le fichier HTML dans le conteneur d'hébergement web statique et définissez le ContentType sur text/html
Set-AzStorageBlobContent -File .\index.html -Container "`$web" -Properties @{ContentType="text/html"} -Context $publicStorageAccount.Context
Create and upload an HTML document

4. Exécutez maintenant la commande suivante pour obtenir l’URL à laquelle les utilisateurs peuvent accéder à votre contenu.

$publicStorageAccount.PrimaryEndpoints.Web
Get the URI of the endpoint

5. Enfin, ouvrez l’URL dans votre navigateur, vous verrez quelque chose de similaire à la capture d’écran suivante.

Accessing HTML Document from Blob Storage

Nettoyage des ressources

Maintenant que vous avez testé ces nouveaux concepts d’utilisation du stockage de blobs, vous voudrez nettoyer vos ressources. Pourquoi ? Cela vous aide à maintenir votre abonnement propre. Plus important encore, vous arrêtez d’accumuler des frais supplémentaires.

Étant donné que toutes les ressources que vous avez utilisées dans ce tutoriel se trouvent dans un seul groupe de ressources, vous pouvez nettoyer toutes les ressources en supprimant le groupe de ressources.

Les ressources ne seront pas toujours contenues dans un seul groupe de ressources, ce qui illustre pourquoi une utilisation libérale de la segmentation logique peut être bénéfique, surtout lors de tests fréquents ou d’itérations.

Exécutez la cmdlet Remove-AzResourceGroup ci-dessous, en spécifiant la propriété ResourceGroupName de la variable $resourceGroup pour supprimer le groupe de ressources et toutes les ressources à l’intérieur.

Remove-AzResourceGroup -Name $resourceGroup.ResourceGroupName
Delete resource group and contents

Conclusion

Dans ce tutoriel, vous avez abordé le téléchargement et le téléversement de fichiers vers et depuis des blobs dans le stockage cloud sur différentes plateformes. Vous avez également appris qu’il est possible d’héberger une page web à partir du stockage de blobs à laquelle les utilisateurs peuvent accéder publiquement.

Vous pouvez faire beaucoup plus avec le stockage de blob et d’autres types de stockage, donc comment pourriez-vous développer ces concepts ? Peut-être travailler avec des comptes de stockage de fichiers, fournir des systèmes de fichiers sans serveur, ou utiliser des blocs de pages pour les disques durs virtuels avec les machines virtuelles Azure ?

Source:
https://adamtheautomator.com/blob-storage/