Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье показано, как удалить блобы с помощью клиентской библиотеки службы хранилища Azure для .NET и как восстановить мягко удаленные блобы в течение периода удержания.
Prerequisites
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Последняя версия .NET SDK для вашей операционной системы. Обязательно получите пакет SDK, а не среду выполнения.
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для .NET. Ниже приведены шаги по установке пакета, добавлению using директив и созданию авторизованного клиентского объекта. Дополнительные сведения см. в статье "Начало работы с хранилищем BLOB-объектов Azure и .NET".
Установка пакетов
В каталоге вашего проекта установите пакеты для клиентских библиотек Azure Blob Storage и Azure Identity с помощью команды dotnet add package. Пакет Azure.Identity необходим для подключений без пароля к службам Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Добавьте директивы using.
Добавьте эти using директивы в начало файла кода:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Для некоторых примеров кода в этой статье могут потребоваться дополнительные using директивы.
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient. В следующем примере показано, как создать клиентский объект с помощью DefaultAzureCredential авторизации:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Вы можете зарегистрировать клиент службы для внедрения зависимостей в приложении .NET.
Вы также можете создавать клиентские объекты для определенных контейнеров или блобов. Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Authorization
Механизм авторизации должен иметь необходимые разрешения для удаления объекта blob или восстановления мягко удаленного объекта blob. Для авторизации с помощью Microsoft Entra ID (рекомендуется) требуется встроенная роль Сотрудник по данным объектов хранилища BLOB или выше. Чтобы узнать больше, ознакомьтесь с рекомендациями по авторизации для операций Удаление Blob (REST API) и Восстановление Blob (REST API).
Удалить BLOB
Note
Если мягкое удаление BLOB-объектов включено для учетной записи хранения, невозможно выполнить постоянное удаление с помощью методов клиентской библиотеки. Используя методы, приведенные в этой статье, мягко удаленный большой двоичный объект, его версия или моментальный снимок остаются доступными до истечения срока хранения, после чего он будет окончательно удален. Дополнительные сведения о базовой операции REST API см. в статье "Удаление BLOB-объектов (REST API)".
Чтобы удалить блоб, используйте любой из следующих методов:
В следующем примере удаляется blob:
public static async Task DeleteBlobAsync(BlobClient blob)
{
await blob.DeleteAsync();
}
Если блоб имеет связанные с ним моментальные снимки, необходимо удалить все его моментальные снимки, чтобы удалить сам блоб. В следующем примере удаляются объект BLOB и его снимки:
public static async Task DeleteBlobSnapshotsAsync(BlobClient blob)
{
// Delete a blob and all of its snapshots
await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.IncludeSnapshots);
// Delete only the blob's snapshots
//await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.OnlySnapshots);
}
Чтобы удалить только моментальные снимки, а не сам блоб, можно передать параметр DeleteSnapshotsOption.OnlySnapshots.
Восстановите удаленный блоб
Мягкое удаление объекта BLOB защищает отдельный объект BLOB и его версии, моментальные снимки и метаданные от случайного удаления или перезаписи, сохраняя удаленные данные в системе в течение заданного периода времени. В течение периода хранения, можно восстановить блоб в состоянии, в котором он находился на момент удаления. После истечения срока хранения, blob окончательно удаляется. Дополнительные сведения об обратимом удалении BLOBs см. раздел "Обратимое удаление для BLOBs".
Можно использовать клиентские библиотеки Azure Storage для восстановления мягко удаленного большого двоичного объекта или моментального снимка.
Восстановление мягко удаленного BLOB зависит от того, включено ли у вашей учетной записи хранения версионирование BLOB. Дополнительные сведения об управлении версиями BLOB-объектов см. в статье Управление версиями BLOB-объектов. См. один из следующих разделов в зависимости от вашего сценария:
Восстановление временно удаленных объектов, когда отключено управление версиями.
Чтобы восстановить удаленные BLOB-объекты, если управление версиями не включено, вызовите один из следующих методов:
Эти методы восстанавливают условно удаленные объекты BLOB и все удаленные моментальные снимки, связанные с ними. Вызов любого из этих методов для блоба, который не был удален, не имеет эффекта. В следующем примере восстанавливаются все мягко удаленные блобы и их снапшоты в контейнере:
public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
{
await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
}
}
Чтобы восстановить определенный мягко удалённый моментальный снимок, сначала вызовите Undelete или UndeleteAsync на базовом BLOB-объекте, а затем скопируйте нужный моментальный снимок на него. В следующем примере восстанавливается блочный BLOB до последнего созданного моментального снимка.
public static async Task RestoreSnapshotsAsync(
BlobContainerClient container,
BlobClient blob)
{
// Restore the deleted blob
await blob.UndeleteAsync();
// List blobs in this container that match prefix
// Include snapshots in listing
Pageable<BlobItem> blobItems = container.GetBlobs(
BlobTraits.None,
BlobStates.Snapshots,
prefix: blob.Name);
// Get the URI for the most recent snapshot
BlobUriBuilder blobSnapshotUri = new BlobUriBuilder(blob.Uri)
{
Snapshot = blobItems
.OrderByDescending(snapshot => snapshot.Snapshot)
.ElementAtOrDefault(0)?.Snapshot
};
// Restore the most recent snapshot by copying it to the blob
await blob.StartCopyFromUriAsync(blobSnapshotUri.ToUri());
}
Восстановление мягко удаленных BLOB-объектов при включенном управлении версиями
Если учетная запись хранения настроена для включения версионирования BLOB-объектов, удаление объекта BLOB приводит к тому, что текущая версия становится предыдущей версией. Чтобы восстановить мягко удаленный двоичный объект, когда управление версиями включено, скопируйте предыдущую версию поверх базового двоичного объекта. Можно использовать один из следующих методов:
В следующем примере кода показано, как получить последнюю версию удаленного большого двоичного объекта и восстановить последнюю версию, скопировав ее в базовый большой двоичный объект:
public static void RestoreBlobWithVersioning(
BlobContainerClient container,
BlobClient blob)
{
// List blobs in this container that match prefix
// Include versions in listing
Pageable<BlobItem> blobItems = container.GetBlobs(
BlobTraits.None,
BlobStates.Version,
prefix: blob.Name);
// Get the URI for the most recent version
BlobUriBuilder blobVersionUri = new BlobUriBuilder(blob.Uri)
{
VersionId = blobItems.
OrderByDescending(version => version.VersionId).
ElementAtOrDefault(0)?.VersionId
};
// Restore the most recently generated version by copying it to the base blob
blob.StartCopyFromUri(blobVersionUri.ToUri());
}
Resources
Дополнительные сведения об удалении BLOB-объектов и восстановлении удаленных BLOB-объектов с помощью клиентской библиотеки хранилища BLOB-объектов Azure для .NET см. в следующих ресурсах.
Примеры кода
Операции REST API
Пакет SDK Azure для .NET содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы .NET. Методы клиентской библиотеки для удаления BLOB-объектов и восстановления удаленных BLOB-объектов используют следующие операции REST API:
- Удаление BLOB-объекта (REST API)
- Отмена удаления БОЛЬШОго двоичного объекта (REST API)
Ресурсы клиентской библиотеки
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для .NET. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения .NET.