Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Migawka to wersja tylko do odczytu obiektu blob, która jest wykonywana w danym momencie. W tym artykule pokazano, jak tworzyć migawki obiektów blob i zarządzać nimi przy użyciu biblioteki klienta usługi Azure Storage dla platformy .NET.
Aby uzyskać więcej informacji na temat migawek obiektów blob w usłudze Azure Storage, zobacz Migawki obiektów blob.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — utworzyć konto magazynowe
- Najnowszy zestaw .NET SDK dla systemu operacyjnego. Pamiętaj, aby pobrać zestaw SDK, a nie środowisko uruchomieniowe.
Konfigurowanie środowiska
Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla platformy .NET. Kroki obejmują instalację pakietu, dodawanie using dyrektyw i tworzenie autoryzowanego obiektu klienta. Aby uzyskać szczegółowe informacje, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i .NET.
Instalowanie pakietów
Z katalogu projektu zainstaluj pakiety dla bibliotek klienta Azure Blob Storage i Azure Identity przy użyciu polecenia dotnet add package. Pakiet Azure.Identity jest wymagany w przypadku połączeń bez hasła z usługami platformy Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Dodaj using dyrektywy
Dodaj te using dyrektywy na początku pliku kodu:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Niektóre przykłady kodu w tym artykule mogą wymagać dodatkowych using dyrektyw.
Tworzenie obiektu klienta
Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie BlobServiceClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Możesz zarejestrować klienta usługi na potrzeby iniekcji zależności w aplikacji .NET.
Można również tworzyć obiekty klienta dla określonych kontenerów lub obiektów blob. Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.
Autoryzacja
Mechanizm autoryzacji musi mieć niezbędne uprawnienia do pracy z migawkami blobów. Aby uzyskać autoryzację przy użyciu Microsoft Entra ID (zalecane), potrzebujesz wbudowanej roli dostępu opartej na rolach platformy Azure Storage Blob Data Contributor lub wyższej. Aby dowiedzieć się więcej, zapoznaj się z zaleceniami dotyczącymi autoryzacji dla migawki obiektu blob.
Utwórz migawkę
Aby utworzyć migawkę blokowego obiektu blob, użyj jednej z następujących metod:
W poniższym przykładzie kodu pokazano, jak utworzyć migawkę. Dołącz odwołanie do biblioteki Azure.Identity, aby użyć poświadczeń Microsoft Entra w celu autoryzacji żądań do usługi. Aby uzyskać więcej informacji na temat używania klasy DefaultAzureCredential do autoryzowania tożsamości zarządzanej w celu uzyskania dostępu do usługi Azure Storage, zobacz Biblioteka klienta tożsamości platformy Azure dla platformy .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;
}
}
Usuwanie migawek
Aby usunąć obiekt blob, należy najpierw usunąć wszystkie jego migawki. Migawkę można usunąć pojedynczo lub określić, że wszystkie migawki zostaną usunięte, gdy źródłowy obiekt blob zostanie usunięty. Jeśli spróbujesz usunąć obiekt blob, który nadal zawiera migawki, zostanie wyświetlony komunikat o błędzie.
Aby usunąć obiekt blob i jego migawki, użyj jednej z poniższych metod oraz dodaj parametr DeleteSnapshotsOption.
Poniższy przykład kodu pokazuje, jak usunąć obiekt blob i jego migawki na platformie .NET, gdzie blobClient jest obiektem typu BlobClient:
await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, default);
Skopiuj migawkę obiektu blob na obiekt blob podstawowy
Możesz wykonać operację kopiowania w celu podwyższenia poziomu migawki do podstawowego obiektu blob, o ile podstawowy obiekt blob znajduje się w warstwie online (gorąca lub chłodna). Migawka pozostaje, ale jej miejsce docelowe jest zastępowane kopią, którą można odczytać i zapisać.
Poniższy przykład kodu pokazuje, jak skopiować migawkę blobu do bazowego blobu.
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;
}
Zasoby
Aby dowiedzieć się więcej na temat zarządzania migawkami obiektów blob przy użyciu biblioteki klienta usługi Azure Blob Storage dla platformy .NET, zobacz następujące zasoby.
Aby uzyskać powiązane przykłady kodu korzystające z przestarzałych zestawów SDK platformy .NET w wersji 11.x, zobacz Przykłady kodu korzystające z platformy .NET w wersji 11.x.