Hoe Blob-opslag gebruiken via Azure File Storage

Je zou jezelf op een gegeven moment kunnen vinden in de behoefte aan een goedkope maar efficiënte oplossing om je bestanden op te slaan, maar waar vind je die oplossing? Kijk eens naar de Binary Large Object (blob) opslag van Microsoft Azure! Blob-opslag is een van de opslagdiensten van Azure en stelt je in staat om grote hoeveelheden tekst- en binaire databestanden, streamcontent of zelfs statische content voor distributie op te slaan.

In deze handleiding leer je hoe je met blob-opslag in Azure kunt werken aan de hand van enkele veelvoorkomende voorbeelden.

Lees verder om aan de slag te gaan!

Vereisten

Deze handleiding zal een praktische demonstratie zijn. Als je wilt meedoen, zorg er dan voor dat je het volgende hebt geïnstalleerd en beschikbaar hebt.

Het Bouwen van een Azure Omgeving

Voordat u blobopslag gebruikt om uw bestanden op te slaan, moet u eerst PowerShell Core-modules importeren, verbinding maken met uw Azure-abonnement en een Azure-omgeving bouwen.

1. Start PowerShell 7 en voer de volgende opdracht uit om de modules te importeren die u zult gebruiken om bestanden op te slaan in blobopslag.

Importing the necessary modules
# Az.Accounts - Biedt cmdlets voor het beheer van referenties
# Az.Resources - Biedt cmdlets om te werken met de Azure-resourceproviders op het hoogste niveau, 
               # zoals abonnementen
# Az.Storage - Biedt de cmdlets die u zullen helpen werken met 
             # verschillende opslagbronnen, zoals blobs
Import-Module Az.Accounts, Az.Resources, Az.Storage

2. Log vervolgens in op uw Azure Active Directory (AD) tenant en voer de onderstaande opdracht uit om een interactieve authenticatie in uw webbrowser te voltooien, zoals hieronder weergegeven.

Hoewel buiten het bereik van deze tutorial, zijn er andere authenticatiemethoden, zoals een Service Principal of het gebruik van een toegangstoken.

Connect-AzAccount
Azure Portal interactive login.

Zorg er altijd voor dat de tenant en abonnement die na het inloggen worden getoond, die zijn die je van plan bent te gebruiken. Indien nodig kun je je context wijzigen.

3. Voer nu het onderstaande commando uit om een nieuwe resourcegroep genaamd demo aan te maken, en voeg er vijf willekeurige getallen aan toe (Get-Random -Maximum 99999). Resourcegroepen staan hiërarchisch onder abonnementen en bevatten resources die meer gedetailleerd beheer mogelijk maken.

Let op de -Locatie van de resourcegroep die is ingesteld op Central US voor dit voorbeeld. Wanneer het commando is voltooid, wordt het resultaat opgeslagen in de variabele $resourceGroup.

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

4. Voer de onderstaande opdracht uit om de volgende taken uit te voeren en een nieuwe Azure-opslagaccount te maken. Voor dit voorbeeld is de opslagaccount genaamd ‘storage’ en aangevuld met vijf willekeurige getallen (Get-Random -Maximum 99999). De variabele $storageAccount zal het geretourneerde object vasthouden nadat de opdracht is voltooid.

# Geef de -ResourceGroupName door met de eigenschap ResourceGroupName 
# van de variabele $resourceGroup die je hebt aangemaakt in stap drie.
# Voeg willekeurige getallen toe aan de opslagaccount-naam 
# vergelijkbaar met de resourcegroep.
# Stel dezelfde -Location in als de eigenschap Location van de variabele $resourceGroup.
# Het plaatsen van resources in dezelfde regio als de bovenliggende resourcegroep is een goede praktijk. 
# Specificeer de naam van de opslagaccount -SkuName met ofwel
# lokaal redundant opslag (LRS) of een wereldwijd unieke naam binnen 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. Voer de onderstaande opdracht uit om een paar taken uit te voeren voor de toewijzing van de Azure AD Role:

  • De waarde van -SignInName gebruikt het account waarop u momenteel bent ingelogd via de UserID eigenschap geretourneerd door de Get-AzAccessToken cmdlet.
  • De waarde van -RoleDefinitionName is de ingebouwde rol Storage Blob Data Contributor die u toewijst.
  • De waarde van -Scope stelt het bereik in van de roltoewijzing voor de opslagaccount die u heeft aangemaakt (storage10029 hieronder weergegeven) via de Id eigenschap van de variabele $storageAccount.

Indien nodig kunt u altijd meer gedetailleerde roltoewijzingen maken voor individuele containers.

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

6. Voer ten slotte de reeks opdrachten hieronder uit om een bestand genaamd temp.dat op uw lokale systeem te maken. U zult dit bestand uploaden en downloaden vanuit het opslagaccount in de volgende secties om te demonstreren hoe blobopslag werkt.

# Laad de FileStream .NET Klasse
$file = New-Object System.IO.FileStream .\temp.dat,Create,ReadWrite
# Stel de grootte van het bestand in
$file.SetLength(10MB)
# Sluit het bestand
$file.Close()
# Zoek het bestand op om de grootte te bevestigen
(Get-ChildItem $file.Name).Length
Creating and verifying a new file

Bestanden uploaden via PowerShell

Nu je een Azure-omgeving hebt opgebouwd en een voorbeeldbestand hebt gemaakt, laten we het bestand uploaden naar blobopslag. Blobopslag werkt anders dan standaard bestandssystemen. Elk bestand in de blobopslag is een object en wordt bewaard binnen containers.

De kernfunctionaliteit van blobs is vergelijkbaar met andere bestandssystemen, maar er zijn gebruiksscenario’s waarin een van beide een betere oplossing zou kunnen zijn. Blobs kunnen zelfs virtuele bestandssystemen ondersteunen (bijvoorbeeld BlobFuse).

Microsoft biedt meerdere methoden om bestanden naar je opslagaccounts te uploaden via PowerShell, AzCopy en de Azure-portal. Laten we echter het voorbeeldbestand (temp.dat) via PowerShell naar blobopslag uploaden om te beginnen. PowerShell biedt je een consistente ervaring om met je Azure-opslagaccounts te werken.

De vereiste acties voor het uitvoeren van deze demo brengen kosten met zich mee. Houd je verbruik in de gaten en verwijder resources wanneer je ze niet meer wilt gebruiken.

Voer de onderstaande commando’s uit om een nieuwe container te maken en het bestand temp.dat ($file) als een object te uploaden. De container heeft in dit voorbeeld de naam demo, maar je kunt hem naar wens een andere naam geven.

# Maakt een container binnen $storageAccount via de Context-eigenschap van het opslagaccount
# Het geretourneerde object wordt vervolgens doorgegeven aan de variabele $container
$container = New-AzStorageContainer -Name demo -Context $storageAccount.Context
# Uploadt het bestand temp.dat ($file) naar de democontainer ($container)
# De blobnaam (-Blob) zal dezelfde naam gebruiken als het bestand dat je uploadt (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

Bestanden uploaden via AzCopy

Misschien heb je meer complexe gebruiksgevallen, zoals het synchroniseren van inhoud of het kopiëren van inhoud tussen verschillende accounts op schaal. Als dat het geval is, is de AzCopy command-line tool wat je nodig hebt.

Voer de onderstaande opdrachten uit om in te loggen op je Azure tenant en kopieer je lokale bestand ($file) naar de URL-eindpunt van je container. Je logt in op Azure tenant omdat AzCopy niet op de hoogte is van de referenties die je gebruikt met PowerShell.

# Aanmelden bij de Azure tenant
& .\azcopy.exe login
# Kopieer het lokale $bestand naar de volledige URI van de bestemmings$container
& .\azcopy.exe copy $file.Name $container.CloudBlobContainer.Uri.AbsoluteUri
Uploading to Azure Storage Account using AzCopy

In plaats van te uploaden, wilt u misschien bestanden downloaden via AzCopy. Zo ja, voer dan het onderstaande commando uit om de opgegeven bestanden (temp.dat) van uw container naar de huidige lokale map te kopiëren: & .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat

Bestanden uploaden via Azure Portal

Als u de voorkeur geeft aan een grafische methode voor het uploaden van uw bestanden, dan is Azure Storage Explorer uw vriend. Azure Storage Explorer is een van de beste grafische methoden om uw blob-opslag te beheren. U kunt toegang krijgen tot de opslagverkenner vanuit uw opslagaccountresource in de Azure Portal.

1. Open uw favoriete webbrowser en ga naar uw Storage Explorer in Azure Portal.

2. Klik op de demo-container onder BLOB-CONTAINERS, zoals hieronder weergegeven, klik vervolgens op Uploaden om toegang te krijgen tot het Blade Blob uploaden (rechterpaneel).

3. Klik nu op het mapictogram bij het Blade Blob uploaden om te selecteren welke bestanden u wilt uploaden (temp.dat).

4. Ten slotte, klik op Upload (blauwe knop) om je bestand te uploaden.

Using the Upload blob blade in Azure Storage Explorer

Zodra de upload voltooid is, kun je het Upload blob-venster sluiten en je geüploade blob bekijken, zoals te zien is in de afbeelding hieronder.

Viewing contents of a blob container in Azure Storage Explorer

Bestanden downloaden via het Azure-portal

Vergelijkbaar met het uploaden van inhoud naar blobopslag, ondersteunt Azure het downloaden van inhoud op vele manieren. Maar omdat je zojuist een bestand (temp.dat) hebt geüpload via het Azure-portal, laten we hetzelfde bestand downloaden met behulp van de Azure Storage Explorer in het Azure-portal.

Selecteer het bestand (temp.dat) om te downloaden en klik op de Downloaden-knop in de Azure Storage Explorer, zoals hieronder wordt weergegeven. Hierdoor wordt een nieuw dialoogvenster geopend om de download te bevestigen die je in de volgende stap zult zien.

Selecting Files to Download

Klik nu op de knop Hier klikken om de download te starten om de geselecteerde bestanden te downloaden.

Downloading Selected Files from the Blob Storage

Bestanden downloaden via PowerShell

Net als bij het uploaden van bestanden krijg je ook de mogelijkheid om bestanden uit de blobopslag te downloaden door commando’s uit te voeren in PowerShell. Met PowerShell kun je de objecten binnen een container weergeven en ze vervolgens downloaden.

Voer de onderstaande commando’s uit om alle objecten in je container weer te geven en temp.dat naar je lokale directory te downloaden.

# Alle objecten binnen de $container weergeven om te verifiëren dat de lege container is aangemaakt
Get-AzStorageBlob -Container $container.Name -Context $storageAccount.Context
# Het object temp.dat downloaden uit de $container
Get-AzStorageBlobContent -Blob temp.dat -Container $container.Name -Context $storageAccount.Context
Downloading files from Azure Storage Account

Als je de voorkeur geeft aan het gebruik van kortstondige unieke links om bestanden te downloaden, kun je Shared Access Signature (SAS) tokens gebruiken om een vooraf geautoriseerde downloadlink te maken. Deze tokens zijn unieke en privé-authenticatietokens die je kunt gebruiken om je toegang te verifiëren.

Voer de onderstaande commando’s uit om een nieuwe downloadlink voor het bestand (temp.dat) dat je wilt downloaden, te maken. De gegenereerde downloadlink verloopt na 10 seconden en downloadt (Invoke-WebRequest $uri) de inhoud met behulp van die link naar de $temp-variabele.

# Genereer een nieuwe downloadlink die 10 minuten geldig is
$uri = New-AzStorageBlobSASToken -Context $storageAccount.Context -Container $container.Name -Blob temp.dat -Permission r -ExpiryTime (Get-Date).AddSeconds(10) -FullUri
# Gebruik de link om het bestand naar de $temp-variabele te downloaden
$temp = Invoke-WebRequest $uri

# Schrijf het bestand indien gewenst naar de huidige directory
Invoke-WebRequest $uri -OutFile .\temp.dat
Download from Azure Storage Account using a SAS token

Het hosten van een webpagina op het openbare internet vanuit Blobopslag

Tot op dit punt heb je voorbeelden gezien van het downloaden van bestanden door geauthenticeerde gebruikers. Maar wist je dat blobopslag ook een uitstekende optie kan bieden voor openbare inhoud? Een voorbeeld hiervan is het gebruik van een blob om de inhoud van je webpagina te hosten, wat je in deze demo zult bereiken.

Zelfs als de inhoud van je webpagina zowel tijdens de overdracht als in rust is versleuteld, kan iedereen die inhoud openen als er openbare toegang is ingesteld.

Aangezien u een ander gebruiksgeval instelt, zult u een van de belangrijkste voordelen van de publieke cloud gebruiken in schaalbaarheid en elasticiteit. U kunt een nieuwe opslagaccount aanmaken voor een specifiek gebruiksgeval en het risico van het gebruik van publieke containers beperken.

1. Voer de onderstaande opdracht uit om een nieuwe opslagaccount aan te maken zoals u deed in stap vier van de sectie “Een Azure-omgeving opzetten”. Maar deze keer geeft u het teruggegeven object door aan de variabele $publicStorageAccount.

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

U hebt nu een toegewijde opslagaccount voor uw publieke inhoud en u kunt het configureren om statische webinhoud te hosten met de volgende opdracht.

2. Voer vervolgens de cmdlet Enable-AzStorageStaticWebsite uit om de opslagaccount ($publicStorageAccount) te configureren voor uw nieuwe gebruiksgeval. De -IndexDocument stelt de standaardwebpagina in die u aan gebruikers wilt presenteren. De -Context zal de nieuwe opslagaccount zijn die u zojuist hebt aangemaakt.

# Maak de $web-container aan en configureer de opslagaccount
Enable-AzStorageStaticWebsite -IndexDocument index.html -Context $publicStorageAccount.Context
Enable storage account for website hosting

3. Voer de onderstaande opdrachten uit om een nieuw HTML-document in uw huidige map aan te maken, en upload dat document naar de container specifiek voor het hosten van webinhoud. Het inhoudstype is ingesteld op HTML (ContentType="text/html"), zodat webbrowsers het document correct kunnen interpreteren.

Het openen van het document in een webbrowser geeft het bericht Hallo vanaf <opslagaccountnaam> weer.

# Maak een eenvoudig HTML-bestand
"<body><h1>Hello from $($publicStorageAccount.StorageAccountName)!</h1></body>"|Out-File .\index.html
# Upload het HTML-bestand naar de container voor statische webhosting en stel ContentType in op text/html
Set-AzStorageBlobContent -File .\index.html -Container "`$web" -Properties @{ContentType="text/html"} -Context $publicStorageAccount.Context
Create and upload an HTML document

4. Voer nu het volgende commando uit om de URL te krijgen waar gebruikers toegang hebben tot uw inhoud.

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

5. Open tot slot de URL in uw browser, u ziet iets vergelijkbaars met de onderstaande schermafbeelding.

Accessing HTML Document from Blob Storage

Hulpbronnen opruimen

Nadat u deze nieuwe concepten hebt getest voor het gebruik van blobopslag, wilt u uw bronnen opruimen. Waarom? Op deze manier houdt u uw abonnement schoon. Belangrijker nog, u stopt met het maken van extra kosten.

Aangezien alle bronnen die u in deze handleiding hebt gebruikt zich in een enkele resourcegroep bevinden, kunt u alle bronnen opruimen door de resourcegroep te verwijderen.

Bronnen zullen niet altijd binnen een enkele resourcegroep vallen, wat illustreert waarom het ruim gebruik van logische segmentatie voordelig kan zijn, vooral bij frequent testen of itereren.

Voer het Remove-AzResourceGroup-cmdlet hieronder uit, waarbij u de eigenschap ResourceGroupName van de variabele $resourceGroup opgeeft om de resourcegroep en alle bronnen erin te verwijderen.

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

Conclusie

In deze handleiding hebt u kennisgemaakt met het uploaden en downloaden van bestanden naar en van blobs in cloudopslag op verschillende platforms. U hebt ook geleerd dat het mogelijk is om een webpagina vanuit blobopslag te hosten die door gebruikers openbaar toegankelijk is.

Je kunt veel meer doen met blobopslag en andere opslagtypes, dus hoe zou je voortbouwen op deze concepten? Misschien werken met bestandopslagaccounts, serverloze bestandssystemen bieden, of paginablobs gebruiken voor virtuele harde schijven met Azure virtuele machines?

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