Sdílet prostřednictvím


Odstranění a obnovení objektu blob pomocí .NET

Tento článek ukazuje, jak odstranit objekty blob pomocí klientské knihovny azure Storage pro .NET a jak obnovit obnovitelné odstraněné objekty blob během doby uchovávání.

Požadavky

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řidání using direktiv

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 pro DefaultAzureCredential autorizaci:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Klienta služby můžete zaregistrovat pro injektáž 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í k odstranění objektu blob nebo obnovení obnovitelného odstraněného objektu blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete předdefinovanou roli Přispěvatel dat objektů blob služby Azure RBAC nebo vyšší. Další informace najdete v pokynech pro autorizaci k odstranění objektů blob (REST API) a zrušení odstranění objektu blob (REST API).

Odstranění objektu blob

Poznámka:

Pokud je pro účet úložiště povolené obnovitelné odstranění objektů blob, nemůžete trvalé odstranění provést pomocí metod klientské knihovny. Pomocí metod v tomto článku zůstane obnovitelně odstraněný objekt blob, verze objektu blob nebo snímek k dispozici, dokud nevyprší doba uchovávání, kdy se trvale odstraní. Další informace o základní operaci rozhraní REST API najdete v tématu Odstranění objektu blob (REST API).

Pokud chcete odstranit objekt blob, zavolejte některou z následujících metod:

Následující příklad odstraní objekt blob:

public static async Task DeleteBlobAsync(BlobClient blob)
{
    await blob.DeleteAsync();
}

Pokud objekt blob obsahuje nějaké přidružené snímky, musíte odstranit všechny jeho snímky, abyste objekt blob odstranili. Následující příklad odstraní objekt blob a jeho snímky:

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);
}

Pokud chcete odstranit pouze snímky a ne samotný objekt blob, můžete předat parametr DeleteSnapshotsOption.OnlySnapshots.

Obnovení odstraněného objektu blob

Obnovitelné odstranění objektu blob chrání jednotlivý blob a jeho verze, snímky a metadata před náhodným odstraněním nebo přepsáním tak, že odstraněná data se po určitou dobu uchovají v systému. Během doby uchovávání můžete blob obnovit do stavu v době jeho odstranění. Po uplynutí doby uchovávání se objekt blob odstraní trvale. Další informace o obnovitelném odstranění objektů blob najdete v tématu Obnovitelné odstranění objektů blob.

Klientské knihovny Azure Storage můžete použít k obnovení obnovitelně odstraněného objektu blob nebo snímku.

Obnovení obnovitelně odstraněného objektu blob závisí na tom, jestli má váš účet úložiště povolenou správu verzí objektů blob. Další informace o správě verzí objektů blob najdete v tématu Správa verzí objektů blob. V závislosti na vašem scénáři si projděte jednu z následujících částí:

Obnovení obnovitelně odstraněných objektů při zakázání správy verzí

Pokud chcete obnovit odstraněné objekty blob v případě, že správa verzí není povolená, zavolejte některou z následujících metod:

Tyto metody obnovují obnovitelné odstraněné objekty blob a všechny odstraněné snímky přidružené k nim. Volání některé z těchto metod pro objekt blob, který nebyl odstraněn, nemá žádný vliv. Následující příklad obnoví všechny obnovitelné odstraněné objekty blob a jejich snímky v kontejneru:

public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
    foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
    {
        await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
    }
}

Pokud chcete obnovit konkrétní obnovitelně odstraněný snímek, nejprve v základním objektu blob zavolejte Undelete nebo UndeleteAsync a zkopírujte požadovaný snímek do základního objektu blob. Následující příklad obnoví objekt blob bloku na naposledy vygenerovaný snímek:

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());
}

Obnovení obnovitelně odstraněných objektů blob při povolení správy verzí

Pokud je účet úložiště nakonfigurovaný tak, aby umožňoval správu verzí objektů blob, odstranění objektu blob způsobí, že aktuální verze objektu blob se stane předchozí verzí. Pokud chcete obnovit obnovit obnovitelně odstraněný objekt blob při povolení správy verzí, zkopírujte předchozí verzi nad základní objekt blob. Můžete použít kteroukoli z těchto metod:

Následující příklad kódu ukazuje, jak získat nejnovější verzi odstraněného objektu blob a obnovit nejnovější verzi zkopírováním do základního objektu 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());
}

Zdroje informací

Další informace o tom, jak odstranit objekty blob a obnovit odstraněné objekty blob pomocí klientské knihovny služby Azure Blob Storage pro .NET, najdete v následujících zdrojích informací.

Ukázky kódu

Operace rozhraní REST API

Sada Azure SDK pro .NET obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat .NET. Metody klientské knihovny pro odstranění objektů blob a obnovení odstraněných objektů blob používají následující operace rozhraní REST API:

Prostředky klientské knihovny

Viz také

  • Tento článek je součástí příručky pro vývojáře služby Blob Storage pro .NET. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace .NET.