Blobtárolók kezelése a PowerShell használatával
Az Azure Blob Storage nagy mennyiségű strukturálatlan objektumadat tárolását teszi lehetővé. A Blob Storage használatával média-, tartalom- vagy alkalmazásadatokat gyűjthet vagy tehet közzé a felhasználók számára. Mivel az összes blobadat tárolókban van tárolva, az adatok feltöltésének megkezdése előtt létre kell hoznia egy tárolót. A blobtárolóval kapcsolatos további információkért olvassa el az Azure Blob Storage bemutatása című témakört.
Ez az útmutató bemutatja, hogyan használható önálló és több tárolótároló-objektum.
Előfeltételek
Azure-előfizetés. Lásd: Ingyenes Azure-fiók létrehozása.
Az Azure PowerShell Az modulja, amely az Azure-ral való interakcióhoz ajánlott PowerShell-modul. Az Az PowerShell-modul használatának megkezdéséhez lásd az Azure PowerShell telepítését ismertető szakaszt.
A cikkben szereplő példák használatához be kell szereznie egy Azure-előfizetéshez való engedélyezést. Az engedélyezés történhet Microsoft Entra-fiókkal vagy megosztott kulccsal történő hitelesítéssel. A cikkben szereplő példák a Microsoft Entra-hitelesítést használják környezetobjektumokkal együtt. A környezeti objektumok beágyazják a Microsoft Entra hitelesítő adatait, és átadják azokat a későbbi adatműveleteknek, így nincs szükség újrahitelesítésre.
Ha Microsoft Entra-fiókkal szeretne bejelentkezni az Azure-fiókjába, nyissa meg a PowerShellt, és hívja meg az Csatlakozás-AzAccount parancsmagot.
# Connect to your Azure subscription
Connect-AzAccount
A kapcsolat létrejötte után hozza létre a tárfiók környezetét a New-AzStorageContext
parancsmag meghívásával. Adja meg a paramétert -UseConnectedAccount
, hogy az adatműveletek a Microsoft Entra hitelesítő adataival legyenek végrehajtva.
# Create a context object using Azure AD credentials
$ctx = New-AzStorageContext -StorageAccountName <storage account name> -UseConnectedAccount
Ne felejtse el lecserélni a zárójelek helyőrző értékeit a saját értékeire. További információ az Azure-ba a PowerShell-lel való bejelentkezésről: Bejelentkezés az Azure PowerShell-lel.
Tároló létrehozása
Tárolók PowerShell-lel való létrehozásához hívja meg a New-AzStorageContainer parancsmagot. A tárfiókon belül létrehozható blobok vagy tárolók száma nincs korlátozva. A tárolók nem ágyazhatók be más tárolókba.
Az alábbi példa három lehetőséget mutat be a blobtárolók parancsmaggal való New-AzStorageContainer
létrehozására. Az első megközelítés egyetlen tárolót hoz létre, míg a fennmaradó két módszer a PowerShell-műveleteket használja a tárolólétrehozás automatizálásához.
A példa használatához adja meg a változók értékeit, és győződjön meg arról, hogy létrehozott egy kapcsolatot az Azure-előfizetésével. Ne felejtse el lecserélni a zárójelek helyőrző értékeit a saját értékeire.
# 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
Az eredmény megadja a tárfiók nevét, és megerősíti az új tároló létrehozását.
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
Tárolók listázása
Get-AzStorageContainer
A parancsmaggal kérje le a tárolókat. Egyetlen tároló lekéréséhez adja meg a paramétert -Name
. Ha egy adott karaktersztringgel kezdődő tárolók listáját szeretné visszaadni, adja meg a -Prefix paraméter értékét.
Az alábbi példa lekéri az egyes tárolókat és a tárolóerőforrások listáját.
# 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
Az eredmény megadja a blobvégpont URI-ját, és felsorolja a név és előtag alapján lekért tárolókat.
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
Tároló tulajdonságainak és metaadatainak olvasása
A tároló a rendszertulajdonságokat és a felhasználó által definiált metaadatokat is elérhetővé teszi. A rendszertulajdonságok minden blobtároló-erőforráson léteznek. Egyes tulajdonságok írásvédettek, míg mások írásvédettek vagy beállíthatók. A borítók alatt egyes rendszertulajdonságok bizonyos szabványos HTTP-fejlécekre vannak leképezve.
A felhasználó által definiált metaadatok egy vagy több, blobtároló-erőforráshoz megadott név-érték párból állnak. Metaadatok használatával további értékeket tárolhat az erőforrással. A metaadat-értékek csak saját célra szolgálnak, és nem befolyásolják az erőforrás viselkedését.
Tároló tulajdonságai
Az alábbi példa lekéri a demo előtaggal rendelkező összes tárolót, és iterálja őket, felsorolva azok tulajdonságait.
# 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
}
Az eredmények az előtag hurokkal rendelkező összes tárolót megjelenítik, és felsorolják azok tulajdonságait.
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
Tároló metaadatainak olvasása és írása
Azok a felhasználók, akiknek több ezer objektum van a tárfiókjukban, gyorsan megtalálhatnak bizonyos tárolókat a metaadataik alapján. A metaadatok eléréséhez az objektumot BlobContainerClient
fogja használni. Ez az objektum lehetővé teszi a tárolók és a blobok elérését és kezelésére. A metaadatok frissítéséhez meg kell hívnia a metódust SetMetadata()
. A metódus csak általános IDictionary
objektumban tárolt kulcs-érték párokat fogad el. További információ: BlobContainerClient osztály
Az alábbi példa először frissíti a tároló metaadatait, majd lekéri a tároló metaadatait. A példa kiüríti a mintatárolót a memóriából, és újra lekéri, hogy a metaadatok ne legyenek beolvasva a memóriában lévő objektumból.
# 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
Az eredmények egy tároló teljes metaadatait jelenítik meg.
individual-container metadata:
[CustomerName, Anthony Bennedetto] [CustomerDOB, 08/03/1926] [CustomerBirthplace, Long Island City]
Megosztott hozzáférésű jogosultságkód lekérése tárolóhoz
A közös hozzáférésű jogosultságkód (SAS) delegált hozzáférést biztosít az Azure-erőforrásokhoz. Az SAS részletes vezérlést biztosít arról, hogy az ügyfél hogyan férhet hozzá az adataihoz. Megadhatja például, hogy mely erőforrások érhetők el az ügyfél számára. Korlátozhatja az ügyfél által végrehajtható műveletek típusait is, és megadhatja, hogy mennyi ideig hajthatók végre a műveletek.
Az SAS-t gyakran használják ideiglenes és biztonságos hozzáférés biztosítására olyan ügyfelek számára, akik általában nem rendelkeznek engedélyekkel. Erre a forgatókönyvre példa lehet egy szolgáltatás, amely lehetővé teszi a felhasználók számára a saját adataik olvasását és írását a tárfiókba.
Az Azure Storage háromféle közös hozzáférésű jogosultságkódot támogat: a felhasználók delegálását, a szolgáltatást és a fiók SAS-t. A megosztott hozzáférésű jogosultságkódokkal kapcsolatos további információkért tekintse meg a tárolókhoz vagy blobokhoz készült szolgáltatás sasának létrehozását ismertető cikket.
Figyelmeztetés
Minden olyan ügyfél, amely rendelkezik érvényes SAS-szel, hozzáférhet a tárfiókban lévő adatokhoz az adott SAS által engedélyezett módon. Fontos, hogy megvédje az SAS-t a rosszindulatú vagy nem szándékos használattól. Használja a diszkréciót egy SAS terjesztéséhez, és rendelkezik egy tervvel a feltört SAS visszavonásához.
Az alábbi példa azt mutatja be, hogy a parancsmag használatával New-AzStorageContainerSASToken
konfigurálható egy szolgáltatás SAS egy adott tárolóhoz. A példa az SAS-t a kezdési és a lejárati idő, valamint egy protokoll használatával konfigurálja. Emellett meg fogja adni az olvasási, írási és listázási engedélyeket az SAS-ben a -Permission
paraméter használatával. A szolgáltatás SAS-létrehozása cikkben hivatkozhat a teljes engedélytáblára.
# 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
Megjegyzés:
A Blob Storage által visszaadott SAS-jogkivonat nem tartalmazza az URL-lekérdezési sztring elválasztó karakterét ('?'). Ha az SAS-jogkivonatot egy erőforrás URL-címéhez fűzi, ne felejtse el hozzáfűzni az elválasztó karaktert is.
Tárolók törlése
A használati esettől függően a parancsmaggal törölheti a tárolókat vagy a Remove-AzStorageContainer
tárolók listáját. Tárolók listájának törlésekor feltételes műveleteket, hurkokat vagy PowerShell-folyamatot használhat az alábbi példákban látható módon.
# 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
Bizonyos esetekben lehetséges a törölt tárolók lekérése. Ha a tárfiók helyreállítható törlési adatvédelmi lehetősége engedélyezve van, a paraméter a -IncludeDeleted
kapcsolódó megőrzési időszakon belül törölt tárolókat adja vissza. A -IncludeDeleted
paraméter csak a paraméterrel együtt használható a -Prefix
tárolók listájának visszaadásakor. A helyreállítható törléssel kapcsolatos további információkért tekintse meg a tárolók helyreállítható törléséről szóló cikket.
Az alábbi példában lekérheti a tárfiókhoz társított megőrzési időszakon belül törölt tárolók listáját.
# Retrieve a list of containers including those recently deleted
Get-AzStorageContainer -Prefix $prefixName -Context $ctx -IncludeDeleted
Helyreállíthatóan törölt tároló visszaállítása
A Tárolók listázása szakaszban leírtaknak megfelelően konfigurálhatja a helyreállítható törlési adatvédelmi beállítást a tárfiókban. Ha engedélyezve van, a kapcsolódó megőrzési időszakon belül törölt tárolók visszaállíthatók.
Az alábbi példa bemutatja, hogyan lehet helyreállítani egy helyreállíthatóan törölt tárolót a Restore-AzStorageContainer
parancsmaggal. A példa követéséhez engedélyeznie kell a helyreállítható törlést, és konfigurálnia kell azt legalább egy tárfiókon.
A helyreállítható törlés adatvédelmi beállításával kapcsolatos további információkért tekintse meg a Tárolók helyreállítható törlése című cikket.
# 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
Az eredmények az összes visszaállított előtagú tárolót megjelenítik.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified IsDeleted VersionId
---- ------------ ------------ --------- ---------
loop-container3
loop-container4