Odstranění a obnovení objektu blob pomocí Javy
Tento článek ukazuje, jak odstranit objekty blob s klientskou knihovnou azure Storage pro Javu a jak obnovit obnovitelné odstraněné objekty blob během doby uchovávání.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Sada Java Development Kit (JDK) verze 8 nebo novější (pro zajištění co nejlepšího prostředí doporučujeme verzi 17)
- Apache Maven se používá pro řízení projektů v tomto příkladu.
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 Javu. Další informace najdete v tématu Začínáme se službou Azure Blob Storage a Javou.
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Poznámka:
Tento článek používá nástroj pro sestavení Maven k sestavení a spuštění ukázkového kódu. Další nástroje sestavení, jako je Gradle, také pracují se sadou Azure SDK pro Javu.
Instalace balíčků
Otevřete soubor v textovém pom.xml
editoru. Nainstalujte balíčky zahrnutím souboru kusovníku nebo zahrnutím přímé závislosti.
Přidání příkazů importu
Přidejte následující příkazy import
:
import com.azure.core.http.rest.*;
import com.azure.core.util.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
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).
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient.
Následující příklad používá BlobServiceClientBuilder k sestavení BlobServiceClient
objektu pomocí DefaultAzureCredential
a ukazuje, jak vytvořit kontejner a klienty objektů blob v případě potřeby:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
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.
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 void deleteBlob(BlobClient blobClient) {
blobClient.delete();
}
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 s odpovědí:
public void deleteBlobWithSnapshots(BlobClient blobClient) {
Response<Boolean> response = blobClient.deleteIfExistsWithResponse(DeleteSnapshotsOptionType.INCLUDE, null,
null,
new Context("key", "value"));
if (response.getStatusCode() == 404) {
System.out.println("Blob does not exist");
} else {
System.out.printf("Delete blob completed with status %d%n", response.getStatusCode());
}
}
Pokud chcete odstranit pouze snímky a ne samotný objekt blob, můžete předat parametr DeleteSnapshotsOptionType.ONLY
.
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, zavolejte následující metodu:
Tato metoda obnoví obsah a metadata obnovitelně odstraněného objektu blob a všechny přidružené obnovitelné odstraněné snímky. Volání této metody pro objekt blob, který nebyl odstraněn, nemá žádný vliv.
public void restoreBlob(BlobClient blobClient) {
blobClient.undelete();
}
Obnovení obnovitelně odstraněných objektů 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 následující metodu:
Tato metoda obnoví obsah a metadata obnovitelně odstraněného objektu blob a všechny přidružené obnovitelné odstraněné snímky. Volání této metody pro objekt blob, který nebyl odstraněn, nemá žádný vliv.
public void restoreBlobVersion(BlobContainerClient containerClient, BlobClient blobClient){
// List blobs in this container that match the prefix
// Include versions in the listing
ListBlobsOptions options = new ListBlobsOptions()
.setPrefix(blobClient.getBlobName())
.setDetails(new BlobListDetails()
.setRetrieveVersions(true));
Iterator<BlobItem> blobItem = containerClient.listBlobs(options, null).iterator();
List<String> blobVersions = new ArrayList<>();
while (blobItem.hasNext()) {
blobVersions.add(blobItem.next().getVersionId());
}
// Sort the list of blob versions and get the most recent version ID
Collections.sort(blobVersions, Collections.reverseOrder());
String latestVersion = blobVersions.get(0);
// Get a client object with the name of the deleted blob and the specified version
BlobClient blob = containerClient.getBlobVersionClient("sampleBlob.txt", latestVersion);
// Restore the most recent version by copying it to the base blob
blobClient.copyFromUrl(blob.getBlobUrl());
}
Obnovení obnovitelně odstraněných objektů blob a adresářů (hierarchický obor názvů)
Důležité
Tato část se vztahuje pouze na účty, které mají hierarchický obor názvů.
Začněte tím, že otevřete soubor pom.xml v textovém editoru. Do skupiny závislostí přidejte následující prvek závislosti.
<dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-file-datalake</artifactId> <version>12.6.0</version> </dependency>
Pak tyto příkazy importu přidejte do souboru kódu.
Put imports here
Následující fragment kódu obnoví obnovitelně odstraněný soubor s názvem
my-file
.Tato metoda předpokládá, že jste vytvořili instanci DataLakeServiceClient . Informace o vytvoření instance DataLakeServiceClient najdete v tématu Připojení k účtu.
public void RestoreFile(DataLakeServiceClient serviceClient){ DataLakeFileSystemClient fileSystemClient = serviceClient.getFileSystemClient("my-container"); DataLakeFileClient fileClient = fileSystemClient.getFileClient("my-file"); String deletionId = null; for (PathDeletedItem item : fileSystemClient.listDeletedPaths()) { if (item.getName().equals(fileClient.getFilePath())) { deletionId = item.getDeletionId(); } } fileSystemClient.restorePath(fileClient.getFilePath(), deletionId); }
Pokud přejmenujete adresář obsahující obnovitelné odstraněné položky, tyto položky se od adresáře odpojí. Pokud chcete tyto položky obnovit, budete muset vrátit název adresáře zpět k původnímu názvu nebo vytvořit samostatný adresář, který používá původní název adresáře. Jinak se při pokusu o obnovení těchto obnovitelně odstraněných položek zobrazí chyba.
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 Javu, najdete v následujících zdrojích informací.
Ukázky kódu
Operace rozhraní REST API
Sada Azure SDK pro Javu 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 Javy. Metody klientské knihovny pro odstranění objektů blob a obnovení odstraněných objektů blob používají následující operace rozhraní REST API:
- Odstranění objektu blob (REST API)
- Zrušení odstranění objektu blob (REST API)
Prostředky klientské knihovny
Viz také
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Javu. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Javě.