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


Blobbérletek létrehozása és kezelése a .NET-tel

Ez a cikk bemutatja, hogyan hozhat létre és kezelhet blobbérleteket a .NET-hez készült Azure Storage-ügyfélkódtár használatával. Az ügyfélkódtár használatával blobbérleteket szerezhet be, újíthat meg, adhat ki és szakíthat meg.

Előfeltételek

Saját környezet beállítása

Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be projektet a .NET-hez készült Azure Blob Storage ügyfélkódtár használatához. A lépések közé tartozik a csomagtelepítés, az irányelvek hozzáadása using és egy engedélyezett ügyfélobjektum létrehozása. További részletekért tekintse meg az Azure Blob Storage és a .NET használatának első lépéseit.

Csomagok telepítése

A projektkönyvtárból telepítse az Azure Blob Storage- és Az Azure Identity-ügyfélkódtárak csomagjait a dotnet add package paranccsal. Az Azure.Identity-csomagra az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz van szükség.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Irányelvek hozzáadása using

Adja hozzá ezeket az using irányelveket a kódfájl elejéhez:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

A cikkben szereplő néhány példakód további using irányelveket igényelhet.

Ügyfélobjektum létrehozása

Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt. Az alábbi példa bemutatja, hogyan hozhat létre ügyfélobjektumot DefaultAzureCredential engedélyezés céljából:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

A szolgáltatásügyfél regisztrálható a függőséginjektáláshoz egy .NET-alkalmazásban.

Ügyfélobjektumokat is létrehozhat adott tárolókhoz vagy blobokhoz. Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.

Engedélyezés

Az engedélyezési mechanizmusnak rendelkeznie kell a blobbérlet használatához szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített szerepkörű Storage Blob Data Közreműködő vagy újabb szerepkörre van szüksége. További információkért tekintse meg a bérletblob (REST API) engedélyezési útmutatóját.

Tudnivalók a blobbérletekről

A bérlet létrehoz és kezel egy blob zárolását az írási és törlési műveletekhez. A zárolás időtartama 15–60 másodperc lehet, vagy végtelen is lehet. A blobok bérlete kizárólagos írási és törlési hozzáférést biztosít a blobhoz. Ha aktív bérlettel rendelkező blobba szeretne írni, az ügyfélnek tartalmaznia kell az aktív bérlet azonosítóját az írási kérelemmel.

Ha többet szeretne megtudni a bérletállapotokról, és hogy mikor hajthat végre egy adott műveletet egy bérleten, tekintse meg a bérletállapotokat és a műveleteket.

Minden tárolóművelet engedélyezett egy olyan tárolón, amely aktív bérlettel rendelkező blobokat tartalmaz, beleértve a tároló törlését is. Ezért a tároló akkor is törölhető, ha a benne lévő blobok aktív bérletekkel rendelkeznek. A Tárolóbérlet művelettel szabályozhatja a tároló törléséhez szükséges jogosultságokat.

A bérletműveleteket a BlobLeaseClient osztály kezeli, amely egy olyan ügyfelet biztosít, amely a blobok és tárolók összes bérletműveletét tartalmazza. Ha többet szeretne megtudni a tárolóbérletekről az ügyfélkódtár használatával, olvassa el a tárolóbérletek létrehozása és kezelése a .NET-tel című témakört.

Bérlet beszerzése

Blobbérlet beszerzésekor egy bérletazonosítót kap, amelyet a kód a blobon való működéshez használhat. Ha a blob már rendelkezik aktív bérletekkel, csak az aktív bérletazonosító használatával kérhet új bérletet. Megadhatja azonban az új bérlet időtartamát.

Bérlet beszerzéséhez hozza létre a BlobLeaseClient osztály egy példányát, majd használja az alábbi módszerek egyikét:

Az alábbi példa egy blob 30 másodperces bérletét szerzi be:

public static async Task<BlobLeaseClient> AcquireBlobLeaseAsync(
    BlobClient blobClient)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient();

    Response<BlobLease> response = 
        await leaseClient.AcquireAsync(duration: TimeSpan.FromSeconds(30));

    // Use response.Value to get information about the blob lease

    return leaseClient;
}

Bérlet megújítása

Megújíthat egy blobbérletet, ha a kérelemben megadott bérletazonosító megegyezik a blobhoz társított bérletazonosítóval. A bérlet akkor is megújítható, ha lejárt, feltéve, hogy a blobot a bérlet lejárata óta nem módosították vagy bérletezték újra. Amikor megújít egy bérletet, a bérlet időtartama visszaáll.

A bérlet megújításához használja az alábbi módszerek egyikét egy BlobLeaseClient-példányon :

Az alábbi példa megújít egy blob bérletét:

public static async Task RenewBlobLeaseAsync(
    BlobClient blobClient,
    string leaseID)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient(leaseID);

    await leaseClient.RenewAsync();
}

Bérlet felszabadítása

Blobbérletet akkor adhat ki, ha a kérelemben megadott bérletazonosító megegyezik a blobhoz társított bérletazonosítóval. A bérlet felszabadítása lehetővé teszi, hogy egy másik ügyfél közvetlenül a kiadás befejezése után megszerezze a blob bérletét.

A BlobLeaseClient-példányon az alábbi módszerek egyikével adhat ki bérletet:

Az alábbi példa egy blob bérletét adja ki:

public static async Task ReleaseBlobLeaseAsync(
    BlobClient blobClient,
    string leaseID)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient(leaseID);

    await leaseClient.ReleaseAsync();
}

Bérlet megszakítása

A blobbérleteket megszakíthatja, ha a blob aktív bérletet kapott. Bármely engedélyezett kérelem megszakíthatja a bérletet; a kérelem nem szükséges egyező bérletazonosító megadásához. A bérletek nem újíthatók meg a szerződés megszakadása után, és a bérlet feltörése megakadályozza az új bérlet beszerzését egy ideig, amíg az eredeti bérlet lejár vagy fel nem szabadul.

Egy BlobLeaseClient-példányon az alábbi módszerek egyikével szakíthat meg egy bérletet:

Az alábbi példa egy blob bérletét bontja fel:

public static async Task BreakBlobLeaseAsync(
    BlobClient blobClient)
{
    // Get a BlobLeaseClient object to work with a blob lease
    BlobLeaseClient leaseClient = blobClient.GetBlobLeaseClient();

    await leaseClient.BreakAsync();
}

Bérletállapotok és műveletek

Az alábbi ábra egy bérlet öt állapotát, valamint a bérletállapot-módosításokat okozó parancsokat vagy eseményeket mutatja be.

Diagram a blobbérleti állapotokról és az állapotváltozási eseményindítókról.

Az alábbi táblázat felsorolja az öt bérletállapotot, rövid leírást ad mindegyikről, és felsorolja az adott állapotban engedélyezett bérletműveleteket. Ezek a bérletműveletek állapotváltásokat okoznak, ahogy az a diagramon is látható.

Bérlet állapota Leírás Bérletműveletek engedélyezettek
Elérhető A bérlet feloldva van, és beszerezhető. acquire
Bérelt A bérlet zárolva van. acquire (csak ugyanaz a bérletazonosító), renew, change, releaseés break
Lejárt A bérlet időtartama lejárt. acquire, renew, releaseés break
Törés A bérlet megszakadt, de a bérlet a megszakítási időszak lejártáig zárolva marad. release és break
Törött A bérlet megszakadt, és a megszakítási időszak lejárt. acquire, releaseés break

Ha egy bérlet lejár, a blobszolgáltatás a bérletazonosítót addig tartja karban, amíg a blobot nem módosítják vagy újra nem bérletelik. Az ügyfél megkísérelheti megújítani vagy felszabadítani a bérletet a lejárt bérletazonosító használatával. Ha ez a művelet sikeres, az ügyfél tudja, hogy a blob nem módosult a bérletazonosító utolsó érvényességétől kezdve. Ha a kérés meghiúsul, az ügyfél tudja, hogy a blob módosult, vagy a blobot ismét bérletbe adták, mivel a bérlet utoljára aktív volt. Az ügyfélnek ezután új bérletet kell szereznie a blobon.

Ha egy bérlet lejár ahelyett, hogy explicit módon fel lett volna szabadítva, előfordulhat, hogy az ügyfélnek akár egy percet is várnia kell, mielőtt új bérletet szerezhet be a blob számára. Az ügyfél azonban azonnal megújíthatja a bérletet a bérletazonosítójával, ha a blobot nem módosították.

A blobok pillanatképeihez nem adható bérlet, mivel a pillanatképek írásvédettek. Ha bérletet kér egy pillanatképhez, az állapotkódot 400 (Bad Request)eredményez.

Források

Ha többet szeretne megtudni a blobbérletek .NET-hez készült Azure Blob Storage-ügyfélkódtár használatával történő kezeléséről, tekintse meg az alábbi erőforrásokat.

REST API-műveletek

A .NET-hez készült Azure SDK olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismerős .NET-paradigmákon keresztül. A blobbérletek kezelésére szolgáló ügyfélkódtár-metódusok a következő REST API-műveletet használják:

Kódminták

Ügyfélkódtár erőforrásai

Lásd még