Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Prerequisites
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Operációs rendszeréhez tartozó legújabb .NET SDK. 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
Adj hozzá using irányelveket
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;
}
Regisztrálhat egy klienst függőség-injektá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.
Authorization
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 történő engedélyezéshez (ajánlott) szüksége van az Azure RBAC beépített szerepköreinek egyikére, például a Storage Blob Data közreműködő vagy annál magasabb szintű szerepkörre. 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ály használatával kapcsolatos további információkért az Azure Storage-hoz való hozzáférés engedélyezésére, tekintse meg a .NET-hez készült Azure Identity ügyfélkönyvtá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.
A blob és annak pillanatképeinek törléséhez használja az alábbi módszerek egyikét, és adja meg a DeleteSnapshotsOption enumerációt.
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 egy pillanatképet alapblobjává tehet, feltéve, hogy az alapblob online tárolási rétegben van (gyakori vagy ritka elérésű). A pillanatkép megmarad, de a célhely újraíródik egy olvasható és írható másolattal.
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;
}
Resources
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.