Blob-pillanatkép létrehozása és kezelése a .NET-tel
A pillanatkép egy adott időpontban készített blob írásvédett verziója. Ez a cikk bemutatja, hogyan hozhat létre és kezelhet blob pillanatképeket a .NET-hez készült Azure Storage-ügyfélkódtár használatával.
Az Azure Storage blob pillanatképeiről további információt a Blob-pillanatképek című témakörben talál.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Az operációs rendszer legújabb .NET SDK-ja . Mindenképpen szerezze be az SDK-t, és ne a futtatókörnyezetet.
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 blob-pillanatképek 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 Snapshot Blob engedélyezési útmutatóját.
Pillanatkép létrehozása
Blokkblob pillanatképének létrehozásához használja az alábbi módszerek egyikét:
Az alábbi példakód bemutatja, hogyan hozhat létre pillanatképet. Adjon meg egy hivatkozást az Azure.Identity-kódtárra , hogy a Microsoft Entra hitelesítő adataival engedélyezze a szolgáltatásra irányuló kérelmeket. A DefaultAzureCredential osztálynak az Azure Storage-hoz való hozzáférés engedélyezésére szolgáló DefaultAzureCredential osztály használatával kapcsolatos további információkért tekintse meg a .NET-hez készült Azure Identity ügyfélkódtárat.
private static async Task CreateBlockBlobSnapshot(
string accountName,
string containerName,
string blobName,
Stream data)
{
const string blobServiceEndpointSuffix = ".blob.core.windows.net";
Uri containerUri =
new Uri("https://" + accountName + blobServiceEndpointSuffix + "/" + containerName);
// Get a container client object and create the container.
BlobContainerClient containerClient = new BlobContainerClient(containerUri,
new DefaultAzureCredential());
await containerClient.CreateIfNotExistsAsync();
// Get a blob client object.
BlobClient blobClient = containerClient.GetBlobClient(blobName);
try
{
// Upload text to create a block blob.
await blobClient.UploadAsync(data);
// Add blob metadata.
IDictionary<string, string> metadata = new Dictionary<string, string>
{
{ "ApproxBlobCreatedDate", DateTime.UtcNow.ToString() },
{ "FileType", "text" }
};
await blobClient.SetMetadataAsync(metadata);
// Sleep 5 seconds.
System.Threading.Thread.Sleep(5000);
// Create a snapshot of the base blob.
// You can specify metadata at the time that the snapshot is created.
// If no metadata is specified, then the blob's metadata is copied to the snapshot.
await blobClient.CreateSnapshotAsync();
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
Pillanatképek törlése
Blob törléséhez először törölnie kell a blob pillanatképeit. Egyesével törölheti a pillanatképeket, vagy megadhatja, hogy a forrásblob törlésekor az összes pillanatkép törölve legyen. Ha egy olyan blobot próbál törölni, amely továbbra is rendelkezik pillanatképekkel, hibaüzenet jelenik meg.
Blob és pillanatképeinek törléséhez használja az alábbi módszerek egyikét, és adja meg a DeleteSnapshotsOption enumerálást :
Az alábbi példakód bemutatja, hogyan törölhet egy blobot és annak pillanatképeit a .NET-ben, ahol blobClient
egy BlobClient típusú objektum található:
await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, default);
Blob-pillanatkép másolása az alapblobra
Másolási művelettel előléptethet egy pillanatképet az alapblobon, feltéve, hogy az alapblob online szinten van (gyakori vagy ritka elérésű). A pillanatkép megmarad, de a célhelyet felülírja egy olyan másolattal, amely olvasható és írható.
Az alábbi példakód bemutatja, hogyan másolhat blob pillanatképet az alapblobra:
public static async Task<BlockBlobClient> CopySnapshotOverBaseBlobAsync(
BlockBlobClient client,
string snapshotTimestamp)
{
// Instantiate BlockBlobClient with identical URI and add snapshot timestamp
BlockBlobClient snapshotClient = client.WithSnapshot(snapshotTimestamp);
// Restore the specified snapshot by copying it over the base blob
await client.SyncUploadFromUriAsync(snapshotClient.Uri, overwrite: true);
// Return the client object after the copy operation
return client;
}
Források
Ha többet szeretne megtudni a blob pillanatképeinek az Azure Blob Storage .NET-hez készült ügyfélkódtárával való kezeléséről, tekintse meg az alábbi erőforrásokat.
Az elavult .NET 11.x SDK-kkal kapcsolatos kódmintákért lásd a .NET 11.x verzióját használó kódmintákat.