Blobcontainers beheren met Behulp van PowerShell
Met Azure Blob Storage kunt u grote hoeveelheden ongestructureerde objectgegevens opslaan. U kunt blobopslag gebruiken om media, inhoud of toepassingsgegevens te verzamelen of beschikbaar te maken voor gebruikers. Omdat alle blobgegevens worden opgeslagen in containers, moet u een opslagcontainer maken voordat u gegevens kunt uploaden. Lees de inleiding tot Azure Blob Storage voor meer informatie over blobopslag.
In dit artikel wordt uitgelegd hoe u kunt werken met zowel afzonderlijke als meerdere opslagcontainerobjecten.
Vereisten
Een Azure-abonnement. Zie Gratis proefversie van Azure ophalen.
Azure PowerShell-module Az, de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module.
U moet autorisatie verkrijgen voor een Azure-abonnement voordat u de voorbeelden in dit artikel kunt gebruiken. Autorisatie kan plaatsvinden door verificatie met een Microsoft Entra-account of met behulp van een gedeelde sleutel. In de voorbeelden in dit artikel wordt Microsoft Entra-verificatie gebruikt in combinatie met contextobjecten. Contextobjecten bevatten uw Microsoft Entra-referenties en geven deze door aan volgende gegevensbewerkingen, waardoor de noodzaak om opnieuw te verifiëren niet meer hoeft te worden geverifieerd.
Als u zich wilt aanmelden bij uw Azure-account met een Microsoft Entra-account, opent u PowerShell en roept u de cmdlet Verbinding maken-AzAccount aan.
# Connect to your Azure subscription
Connect-AzAccount
Nadat de verbinding tot stand is gebracht, maakt u de context van het opslagaccount door de New-AzStorageContext
cmdlet aan te roepen. Neem de -UseConnectedAccount
parameter op zodat gegevensbewerkingen worden uitgevoerd met uw Microsoft Entra-referenties.
# Create a context object using Azure AD credentials
$ctx = New-AzStorageContext -StorageAccountName <storage account name> -UseConnectedAccount
Vergeet niet om de tijdelijke aanduidingen tussen vierkante haken te vervangen door uw eigen waarden. Zie Aanmelden met Azure PowerShell voor meer informatie over aanmelden bij Azure met PowerShell.
Een container maken
Als u containers wilt maken met PowerShell, roept u de cmdlet New-AzStorageContainer aan. Er zijn geen limieten voor het aantal blobs of containers dat kan worden gemaakt binnen een opslagaccount. Containers kunnen niet worden genest binnen andere containers.
In het volgende voorbeeld ziet u drie opties voor het maken van blobcontainers met de New-AzStorageContainer
cmdlet. Met de eerste benadering wordt één container gemaakt, terwijl de resterende twee benaderingen gebruikmaken van PowerShell-bewerkingen om het maken van containers te automatiseren.
Als u dit voorbeeld wilt gebruiken, geeft u waarden op voor de variabelen en zorgt u ervoor dat u een verbinding met uw Azure-abonnement hebt gemaakt. Vergeet niet om de tijdelijke aanduidingen tussen vierkante haken te vervangen door uw eigen waarden.
# Create variables
$containerName = "individual-container"
$prefixName = "loop"
# Approach 1: Create a container
New-AzStorageContainer -Name $containerName -Context $ctx
# Approach 2: Create containers with a PowerShell loop
for ($i = 1; $i -le 3; $i++) {
New-AzStorageContainer -Name (-join($prefixName, $i)) -Context $ctx
}
# Approach 3: Create containers using the PowerShell Split method
"$($prefixName)4 $($prefixName)5 $($prefixName)6".split() | New-AzStorageContainer -Context $ctx
Het resultaat bevat de naam van het opslagaccount en bevestigt het maken van de nieuwe container.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified
---- ------------ ------------
individual-container Off 11/2/2021 4:09:05 AM +00:00
loop-container1 Off 11/2/2021 4:09:05 AM +00:00
loop-container2 Off 11/2/2021 4:09:05 AM +00:00
loop-container3 Off 11/2/2021 4:09:05 AM +00:00
loop-container4 Off 11/2/2021 4:09:05 AM +00:00
loop-container5 Off 11/2/2021 4:09:05 AM +00:00
loop-container6 Off 11/2/2021 4:09:05 AM +00:00
Containers weergeven
Gebruik de Get-AzStorageContainer
cmdlet om opslagcontainers op te halen. Als u één container wilt ophalen, neemt u de -Name
parameter op. Als u een lijst met containers wilt retourneren die beginnen met een bepaalde tekenreeks, geeft u een waarde op voor de parameter -Voorvoegsel.
In het volgende voorbeeld worden zowel een afzonderlijke container als een lijst met containerbronnen opgehaald.
# Create variables
$containerName = "individual-container"
$prefixName = "loop-"
# Approach 1: Retrieve an individual container
Get-AzStorageContainer -Name $containerName -Context $ctx
Write-Host
# Approach 2: Retrieve a list of containers
Get-AzStorageContainer -Prefix $prefixName -Context $ctx
Het resultaat bevat de URI van het blob-eindpunt en vermeldt de containers die zijn opgehaald op naam en voorvoegsel.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified IsDeleted VersionId
---- ------------ ------------ --------- ---------
individual-container 11/2/2021 5:52:08 PM +00:00
loop-container1 11/2/2021 12:22:00 AM +00:00
loop-container2 11/2/2021 12:22:00 AM +00:00
loop-container1 11/2/2021 12:22:00 AM +00:00
loop-container2 11/2/2021 12:22:00 AM +00:00
loop-container3 11/2/2021 12:22:00 AM +00:00 True 01D7E7129FDBD7D4
loop-container4 11/2/2021 12:22:00 AM +00:00 True 01D7E8A5EF01C787
Containereigenschappen en metagegevens lezen
Een container bevat zowel systeemeigenschappen als door de gebruiker gedefinieerde metagegevens. Er bestaan systeemeigenschappen op elke blobopslagresource. Sommige eigenschappen zijn alleen-lezen, terwijl andere kunnen worden gelezen of ingesteld. Onder de covers zijn sommige systeemeigenschappen toegewezen aan bepaalde standaard HTTP-headers.
Door de gebruiker gedefinieerde metagegevens bestaan uit een of meer naam-waardeparen die u opgeeft voor een blobopslagresource. U kunt metagegevens gebruiken om extra waarden op te slaan met de resource. Metagegevenswaarden zijn alleen bedoeld voor uw eigen doeleinden en hebben geen invloed op het gedrag van de resource.
Eigenschappen van de container
In het volgende voorbeeld worden alle containers opgehaald met het demovoorvoegsel en doorlopen ze, waarbij hun eigenschappen worden vermeld.
# Create variable
$prefix = "loop"
# Get containers
$containers = Get-AzStorageContainer -Prefix $prefix -Context $ctx
# Iterate containers, display properties
Foreach ($container in $containers)
{
$containerProperties = $container.BlobContainerClient.GetProperties()
Write-Host $container.Name "properties:"
$containerProperties.Value
}
In de resultaten worden alle containers met de voorvoegsellus weergegeven en worden hun eigenschappen weergegeven.
loop-container1 properties:
LastModified : 12/7/2021 7:47:17 PM +00:00
LeaseStatus : Unlocked
LeaseState : Available
LeaseDuration : Infinite
PublicAccess :
HasImmutabilityPolicy : False
HasLegalHold : False
DefaultEncryptionScope : $account-encryption-key
PreventEncryptionScopeOverride : False
DeletedOn :
RemainingRetentionDays :
ETag : 0x8D9B9BA602806DA
Metadata : {}
HasImmutableStorageWithVersioning : False
loop-container2 properties:
LastModified : 12/7/2021 7:47:18 PM +00:00
LeaseStatus : Unlocked
LeaseState : Available
LeaseDuration : Infinite
PublicAccess :
HasImmutabilityPolicy : False
HasLegalHold : False
DefaultEncryptionScope : $account-encryption-key
PreventEncryptionScopeOverride : False
DeletedOn :
RemainingRetentionDays :
ETag : 0x8D9B9BA605996AE
Metadata : {}
HasImmutableStorageWithVersioning : False
Containermetagegevens lezen en schrijven
Gebruikers met veel duizenden objecten in hun opslagaccount kunnen snel specifieke containers vinden op basis van hun metagegevens. Voor toegang tot de metagegevens gebruikt u het BlobContainerClient
object. Met dit object kunt u containers en hun blobs openen en bewerken. Als u metagegevens wilt bijwerken, moet u de SetMetadata()
methode aanroepen. De methode accepteert alleen sleutel-waardeparen die zijn opgeslagen in een algemeen IDictionary
object. Zie de klasse BlobContainerClient voor meer informatie
In het onderstaande voorbeeld worden eerst de metagegevens van een container bijgewerkt en daarna worden de metagegevens van een container opgehaald. In het voorbeeld wordt de voorbeeldcontainer uit het geheugen leeggemaakt en opnieuw opgehaald om ervoor te zorgen dat metagegevens niet worden gelezen uit het object in het geheugen.
# Create variable
$containerName = "individual-container"
# Retrieve container
$container = Get-AzStorageContainer -Name $containerName -Context $ctx
# Create IDictionary, add key-value metadata pairs to IDictionary
$metadata = New-Object System.Collections.Generic.Dictionary"[String,String]"
$metadata.Add("CustomerName","Anthony Bennedetto")
$metadata.Add("CustomerDOB","08/03/1926")
$metadata.Add("CustomerBirthplace","Long Island City")
# Update metadata
$container.BlobContainerClient.SetMetadata($metadata, $null)
# Flush container from memory, retrieve updated container
$container = $null
$container = Get-AzStorageContainer -Name $containerName -Context $ctx
# Display metadata
$properties = $container.BlobContainerClient.GetProperties()
Write-Host $container.Name "metadata:"
Write-Host $properties.Value.Metadata
In de resultaten worden de volledige metagegevens voor een container weergegeven.
individual-container metadata:
[CustomerName, Anthony Bennedetto] [CustomerDOB, 08/03/1926] [CustomerBirthplace, Long Island City]
Een handtekening voor gedeelde toegang voor een container ophalen
Een Shared Access Signature (SAS) biedt gedelegeerde toegang tot Azure-resources. Een SAS geeft u gedetailleerde controle over hoe een client toegang heeft tot uw gegevens. U kunt bijvoorbeeld opgeven welke resources beschikbaar zijn voor de client. U kunt ook de typen bewerkingen beperken die de client kan uitvoeren en de hoeveelheid tijd opgeven waarvoor de acties kunnen worden uitgevoerd.
Een SAS wordt vaak gebruikt om tijdelijke en veilige toegang te bieden tot een client die normaal gesproken niet over machtigingen beschikt. Een voorbeeld van dit scenario is een service waarmee gebruikers hun eigen gegevens kunnen lezen en schrijven naar uw opslagaccount.
Azure Storage ondersteunt drie typen handtekeningen voor gedeelde toegang: sas voor gebruikersdelegering, service en account. Zie het artikel Een service-SAS maken voor een container of blob voor meer informatie over handtekeningen voor gedeelde toegang.
Let op
Elke client die een geldige SAS heeft, heeft toegang tot gegevens in uw opslagaccount, zoals toegestaan door die SAS. Het is belangrijk om een SAS te beschermen tegen schadelijk of onbedoeld gebruik. Gebruik discretie bij het distribueren van een SAS en een plan voor het intrekken van een gecompromitteerde SAS.
In het volgende voorbeeld ziet u het proces voor het configureren van een service-SAS voor een specifieke container met behulp van de New-AzStorageContainerSASToken
cmdlet. In het voorbeeld wordt de SAS geconfigureerd met begin- en verlooptijden en een protocol. Ook worden de lees-, schrijf- en lijstmachtigingen in de SAS opgegeven met behulp van de -Permission
parameter. U kunt verwijzen naar de volledige tabel met machtigingen in het artikel Een service-SAS maken.
# Create variables
$accountName = "<storage-account>"
$containerName = "individual-container"
$startTime = Get-Date
$expiryTime = $startTime.AddDays(7)
$permissions = "rwl"
$protocol = "HttpsOnly"
# Create a context object using Azure AD credentials, retrieve container
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Approach 1: Generate SAS token for a specific container
$sas = New-AzStorageContainerSASToken `
-Context $ctx `
-Name $containerName `
-StartTime $startTime `
-ExpiryTime $expiryTime `
-Permission $permissions `
-Protocol $protocol
# Approach 2: Generate SAS tokens for a container list using pipeline
Get-AzStorageContainer -Container $filterName -Context $ctx | New-AzStorageContainerSASToken `
-Context $ctx `
-StartTime $startTime `
-ExpiryTime $expiryTime `
-Permission $permissions `
-Protocol $protocol | Write-Output
Notitie
Het SAS-token dat door Blob Storage wordt geretourneerd, bevat geen scheidingsteken ('?') voor de URL-queryreeks. Als u het SAS-token toevoegt aan een resource-URL, moet u ook het scheidingsteken toevoegen.
Containers verwijderen
Afhankelijk van uw use-case kunt u een container of lijst met containers met de Remove-AzStorageContainer
cmdlet verwijderen. Wanneer u een lijst met containers verwijdert, kunt u gebruikmaken van voorwaardelijke bewerkingen, lussen of de PowerShell-pijplijn, zoals wordt weergegeven in de onderstaande voorbeelden.
# Create variables
$accountName = "<storage-account>"
$containerName = "individual-container"
$prefixName = "loop-"
# Delete a single named container
Remove-AzStorageContainer -Name $containerName -Context $ctx
# Iterate a loop, deleting containers
for ($i = 1; $i -le 2; $i++) {
Remove-AzStorageContainer -Name (-join($containerPrefix, $i)) -Context $ctx
}
# Retrieve container list, delete using a pipeline
Get-AzStorageContainer -Prefix $prefixName -Context $ctx | Remove-AzStorageContainer
In sommige gevallen is het mogelijk om containers op te halen die zijn verwijderd. Als de optie voor gegevensbeveiliging voor voorlopig verwijderen van uw opslagaccount is ingeschakeld, retourneert de -IncludeDeleted
parameter containers die zijn verwijderd binnen de bijbehorende bewaarperiode. De -IncludeDeleted
parameter kan alleen worden gebruikt in combinatie met de parameter bij het -Prefix
retourneren van een lijst met containers. Raadpleeg het artikel Voorlopig verwijderen voor containers voor meer informatie over voorlopig verwijderen.
Gebruik het volgende voorbeeld om een lijst met containers op te halen die zijn verwijderd binnen de gekoppelde bewaarperiode van het opslagaccount.
# Retrieve a list of containers including those recently deleted
Get-AzStorageContainer -Prefix $prefixName -Context $ctx -IncludeDeleted
Een voorlopig verwijderde container herstellen
Zoals vermeld in de sectie Lijstcontainers , kunt u de optie voor gegevensbeveiliging voor voorlopig verwijderen configureren in uw opslagaccount. Wanneer deze optie is ingeschakeld, is het mogelijk om containers te herstellen die zijn verwijderd binnen de bijbehorende bewaarperiode.
In het volgende voorbeeld wordt uitgelegd hoe u een voorlopig verwijderde container herstelt met de Restore-AzStorageContainer
cmdlet. Voordat u dit voorbeeld kunt volgen, moet u voorlopig verwijderen inschakelen en configureren voor ten minste één van uw opslagaccounts.
Raadpleeg het artikel Voorlopig verwijderen voor containers voor meer informatie over de optie voor gegevensbescherming voor voorlopig verwijderen.
# Create variables
$accountName = "<storage-account>"
$prefixName = "loop-"
# Create a context object using Azure AD credentials
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Retrieve all containers, filter deleted containers, restore deleted containers
Get-AzStorageContainer -Prefix $prefixName -IncludeDeleted `
-Context $ctx | ? { $_.IsDeleted } | Restore-AzStorageContainer
In de resultaten worden alle containers weergegeven met het voorvoegseldemo die is hersteld.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified IsDeleted VersionId
---- ------------ ------------ --------- ---------
loop-container3
loop-container4