Megosztás a következőn keresztül:


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

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               

Kapcsolódó információk