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.
Tento článek ukazuje, jak nastavit nebo změnit úroveň přístupu objektu blob bloku pomocí klientské knihovny služby Azure Storage pro Javu.
Prerequisites
- 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.
Note
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 BOM souboru nebo přímé závislosti.
Přidejte příkazy importu
Přidejte následující import příkazy:
import com.azure.core.util.polling.LongRunningOperationStatus;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.options.BlobBeginCopyOptions;
Authorization
Autorizační mechanismus musí mít potřebná oprávnění k nastavení úrovně přístupu objektu blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete integrovanou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k oprávnění pro nastavení úrovně objektů blob.
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í DefaultAzureCredentiala 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.
Informace o úrovních přístupu k objektům blob bloku
Pokud chcete spravovat náklady na potřeby úložiště, může být užitečné uspořádat data na základě toho, jak často se k nim přistupuje a jak dlouho je potřeba uchovávat. Azure Storage nabízí různé úrovně přístupu, takže data objektů blob můžete ukládat nákladově nejefektivnějším způsobem na základě způsobu jejich použití.
Úrovně přístupu k blob datům
Mezi úrovně přístupu ke službě Azure Storage patří:
- Horká úroveň – online úroveň optimalizovaná pro ukládání dat, ke kterým se přistupuje nebo mění často. Horká úroveň má nejvyšší náklady na úložiště, ale nejnižší náklady na přístup.
- Chladná vrstva - online vrstva optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravovaná. Data ve studené vrstvě by měla být uložena minimálně po dobu 30 dnů. Studená úroveň má nižší náklady na úložiště a vyšší náklady na přístup v porovnání s horkou úrovní.
- Studená úroveň – online úroveň optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravená. Data v studené vrstvě by měla být uložena minimálně po dobu 90 dnů. Chladná úroveň má nižší náklady na úložiště a vyšší náklady na přístup v porovnání s úrovní cool.
- Archivní úroveň – offline úroveň optimalizovaná pro ukládání zřídka používaných dat a s flexibilními požadavky na latenci v řádu hodin. Data v archivní úrovni by měla být uložena minimálně po dobu 180 dnů.
Další informace o úrovních přístupu pro data objektů BLOB najdete v Úrovně přístupu pro data objektů BLOB.
I když je objekt blob v archivní úrovni přístupu, považuje se za offline a nedá se číst ani upravovat. Chcete-li číst nebo upravovat data v archivovaném objektu blob, musíte nejprve rehydratovat objekt blob do online vrstvy. Další informace o rehydrataci blobu z archivní úrovně do online úrovně najdete v tématu Rehydratace blobů z archivní úrovně.
Restrictions
Nastavení úrovně přístupu je umožněno jenom u blokových objektů blob. Další informace o omezeních nastavení úrovně přístupu objektu blob bloku najdete v tématu Nastavení úrovně objektů blob (REST API).
Note
Pokud chcete nastavit úroveň přístupu na Cold používání Javy, musíte použít minimální verzi klientské knihovny 12.21.0.
Nastavte úroveň přístupu objektu blob během nahrávání
Úroveň přístupu objektu blob můžete nastavit při nahrávání pomocí třídy BlobUploadFromFileOptions . Následující příklad kódu ukazuje, jak nastavit úroveň přístupu při nahrávání blobu:
public void uploadBlobWithAccessTier(BlobContainerClient blobContainerClient, Path filePath) {
String fileName = filePath.getFileName().toString();
BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString())
.setTier(AccessTier.COOL);
try {
Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
} catch (UncheckedIOException ex) {
System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
}
}
Další informace o nahrání objektu blob pomocí Javy najdete v tématu Nahrání objektu blob pomocí Javy.
Změna úrovně přístupu pro existující blokový blob
Úroveň přístupu existujícího objektu blob bloku můžete změnit pomocí jedné z následujících metod:
Následující příklad kódu ukazuje, jak pro existující objekt blob změnit úroveň přístupu na Chladnou.
public void changeBlobAccessTier(BlobClient blobClient) {
// Change the blob's access tier to cool
blobClient.setAccessTier(AccessTier.COOL);
}
Pokud rehydratujete archivovaný blob, použijte metodu setAccessTierWithResponse.
tier Nastavte parametr na platnou hodnotu AccessTier: HOT, COOL, COLD nebo ARCHIVE. Volitelně můžete parametr nastavit priority na platnou hodnotu HIGH nebo STANDARD.
Následující příklad kódu ukazuje, jak rehydratovat archivovaný objekt blob změnou přístupové vrstvy na Hot.
public void rehydrateBlobSetAccessTier(BlobClient blobClient) {
// Rehydrate the blob to hot tier using a standard rehydrate priority
blobClient.setAccessTierWithResponse(
AccessTier.HOT,
RehydratePriority.STANDARD,
null,
null,
null);
}
Metoda setAccessTierWithResponse může také přijmout parametr BlobSetAccessTierOptions pro určení možností konfigurace.
Kopírovat blob do jiné úrovně přístupu
Úroveň přístupu existujícího objektu blob bloku můžete změnit zadáním úrovně přístupu v rámci operace kopírování. Pokud chcete změnit úroveň přístupu během operace kopírování, použijte třídu BlobBeginCopyOptions .
Metodu setTier můžete použít k určení hodnoty AccessTier jako HOT, COOL, COLDnebo ARCHIVE. Pokud rehydrujete objekt blob z archivní vrstvy pomocí operace kopírování, pomocí metody setRehydratePriority zadejte hodnotu RehydratePriority jako HIGH nebo STANDARD.
Následující příklad kódu ukazuje, jak rehydratovat archivovaný objekt blob do úrovně Hot pomocí operace kopírování:
public void rehydrateBlobUsingCopy(
BlobClient sourceArchiveBlob,
BlobClient destinationRehydratedBlob) {
// Note: the destination blob must have a different name than the archived source blob
// Start the copy operation and wait for it to complete
final SyncPoller<BlobCopyInfo, Void> poller = destinationRehydratedBlob.beginCopy(
new BlobBeginCopyOptions(sourceArchiveBlob.getBlobUrl())
.setTier(AccessTier.HOT)
.setRehydratePriority(RehydratePriority.STANDARD));
PollResponse<BlobCopyInfo> response = poller
.waitUntil(LongRunningOperationStatus.SUCCESSFULLY_COMPLETED);
}
Další informace o kopírování objektu blob pomocí Javy najdete v tématu Kopírování objektu blob pomocí Javy.
Resources
Další informace o nastavení úrovní přístupu pomocí klientské knihovny 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 nastavení úrovní přístupu používají následující operaci rozhraní REST API:
- Nastavení úrovně 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ě.