Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Snímek je verze objektu blob jen pro čtení, která se pořizuje v určitém okamžiku. Tento článek ukazuje, jak vytvářet a spravovat snímky objektů blob pomocí klientské knihovny Azure Storage pro .NET.
Další informace o snímcích objektů blob ve službě Azure Storage najdete v tématu Snímky objektů blob.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Nejnovější sada .NET SDK pro váš operační systém Nezapomeňte si pořídit SDK a ne runtime.
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro .NET. Kroky zahrnují instalaci balíčku, přidání using direktiv a vytvoření autorizovaného objektu klienta. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a .NET.
Instalace balíčků
Z adresáře projektu nainstalujte balíčky pro klientské knihovny Azure Blob Storage a Azure Identity pomocí dotnet add package příkazu. Balíček Azure.Identity je potřeba pro připojení bez hesla ke službám Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Přidejte using direktivy
Na začátek souboru kódu přidejte tyto using direktivy:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Některé příklady kódu v tomto článku mohou vyžadovat další using direktivy.
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak vytvořit objekt klienta pomocí DefaultAzureCredential pro autorizaci:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Můžete zaregistrovat klienta služby pro injektování závislostí v aplikaci .NET.
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob. Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění pro práci se snímky blobů. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete předdefinovanou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k autorizaci objektu Blob snímku.
Vytvoření snímku
Pokud chcete vytvořit snímek objektu blob bloku, použijte jednu z následujících metod:
Následující příklad kódu ukazuje, jak vytvořit snímek. Uveďte odkaz na knihovnu Azure.Identity , která používá vaše přihlašovací údaje Microsoft Entra k autorizaci požadavků na službu. Další informace o použití defaultAzureCredential třídy k autorizaci spravované identity pro přístup ke službě Azure Storage naleznete v tématu Klientská knihovna identit Azure pro .NET.
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;
}
}
Odstranění snímků
Pokud chcete odstranit objekt blob, musíte nejprve odstranit všechny snímky tohoto objektu blob. Snímek můžete odstranit jednotlivě nebo určit, že se při odstranění zdrojového objektu blob odstraní všechny snímky. Pokud se pokusíte odstranit objekt blob, který stále obsahuje snímky, dojde k chybě.
Pokud chcete odstranit objekt blob a jeho snímky, použijte jednu z následujících metod a uveďte výčet DeleteSnapshotsOption :
Následující příklad kódu ukazuje, jak odstranit objekt blob a jeho snímky v .NET, kde blobClient je objekt typu BlobClient:
await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, default);
Zkopírování snímku objektu blob přes základní objekt blob
Operaci kopírování můžete provést za účelem povýšení snímku nad jeho základní blob, pokud je základní blob v online vrstvě (hot nebo cool). Snímek zůstane, ale jeho cíl se přepíše kopií, do níž je možné číst i zapisovat.
Následující příklad kódu ukazuje, jak zkopírovat snímek objektu blob nad základní objekt blob:
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;
}
Zdroje informací
Další informace o správě snímků objektů blob pomocí klientské knihovny služby Azure Blob Storage pro .NET najdete v následujících zdrojích informací.
Související ukázky kódu s využitím zastaralých sad .NET verze 11.x najdete v ukázkách kódu pomocí .NET verze 11.x.