Nastavení nebo změna úrovně přístupu objektu blob bloku pomocí JavaScriptu nebo TypeScriptu
Tento článek ukazuje, jak nastavit nebo změnit úroveň přístupu objektu blob pro objekty blob bloku pomocí klientské knihovny služby Azure Storage pro JavaScript.
Požadavky
- Příklady v tomto článku předpokládají, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou Azure Blob Storage pro JavaScript. Další informace o nastavení projektu, včetně instalace balíčku, importu modulů a vytvoření autorizovaného klientského objektu pro práci s datovými prostředky, najdete v tématu Začínáme se službou Azure Blob Storage a JavaScriptem.
- Autorizační mechanismus musí mít oprávnění k nastavení úrovně přístupu objektu blob. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:
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 datům v objektech blob
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.
- Studená úroveň – online úroveň optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravená. 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 na úrovni Zřídkavý přístup by měla být uložená minimálně 90 dnů. Úroveň Zřídkavý přístup má v porovnání se studenou úrovní nižší náklady na úložiště a vyšší náklady na přístup.
- 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ů.
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ého objektu blob, musíte nejprve znovu dosadit objekt blob do online vrstvy. Další informace o dosazování objektu blob z archivní úrovně do online úrovně najdete v tématu Dosazování objektů blob z archivní úrovně.
Omezení
Nastavení úrovně přístupu je povolené jenom u objektů blob bloku. Další informace o omezeních nastavení úrovně přístupu objektu blob bloku najdete v tématu Nastavení úrovně objektů blob (REST API).
Poznámka:
Pokud chcete nastavit úroveň přístupu na Cold
použití JavaScriptu, musíte použít minimální verzi klientské knihovny 12.13.0.
Nastavení úrovně přístupu objektu blob během nahrávání
Pokud chcete nahrát objekt blob do konkrétní úrovně přístupu, použijte BlockBlobUploadOptions. Možnosti tier
vlastností: Hot
, Cool
, Cold
nebo Archive
.
async function uploadWithAccessTier(containerClient, blobName) {
const fileContentsAsString = `Hello from a string`
// upload blob to `Cool` access tier
const uploadOptions = {
// 'Hot', 'Cool', 'Cold', or 'Archive'
tier: 'Cool',
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload string
await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length, uploadOptions);
// Return client to continue with other operations
return blockBlobClient;
}
Změna úrovně přístupu objektu blob po nahrání
Pokud chcete změnit úroveň přístupu objektu blob po nahrání do úložiště, použijte setAccessTier. Společně s úrovní můžete nastavit prioritu dosazování vlastnosti BlobSetTierOptions tak, aby objekt blob bloku přešel z archivovaného stavu. Možné hodnoty jsou High
nebo Standard
.
async function main(blockBlobClient) {
// Get current access tier
const { accessTier } = await blockBlobClient.getProperties();
console.log(`Current access tier: ${accessTier}`);
// 'Hot', 'Cool', or 'Archive'
const newAccessTier = 'Cool';
// Rehydrate priority: 'High' or 'Standard'
const rehydratePriority = 'High';
const result = await blockBlobClient.setAccessTier(
newAccessTier,
{ rehydratePriority }
);
if (result?.errorCode == undefined) {
console.log(`Change to access was successful`);
} else {
console.log(result);
}
}
Kopírování objektu blob do jiné úrovně přístupu
Použijte Objekt blobClient.beginCopyFromURL metoda pro zkopírování objektu blob. Pokud chcete změnit úroveň přístupu během operace kopírování, použijte vlastnost BlobBeginCopyFromURLOptions tier
a zadejte jinou úroveň přístupu než zdrojový objekt blob.
async function copyBlobWithDifferentAccessTier(containerClient) {
// create blob clients
const sourceBlobClient = containerClient.getBlobClient(originalBlob);
const destinationBlobClient = containerClient.getBlobClient(copyBlob);
// start copy, access tiers include `Hot`, `Cool`, `Cold`, `Archive`
const copyPoller = await destinationBlobClient.beginCopyFromURL(sourceBlobClient.url, { tier: 'Hot' });
console.log('start copy from original to copy');
// wait until done
await copyPoller.pollUntilDone();
console.log('copy finished')
}
Změna úrovně přístupu pro mnoho objektů blob pomocí dávky
Dávka představuje agregovanou sadu operací s objekty blob, jako je odstranění nebo nastavení úrovně přístupu. Abyste mohli úspěšně provést každou operaci, musíte předat správné přihlašovací údaje. V tomto příkladu se stejné přihlašovací údaje používají pro sadu objektů blob ve stejném kontejneru.
Vytvořte objekt BlobBatchClient. Pomocí klienta vytvořte dávku pomocí metody createBatch(). Jakmile je dávka připravená, odešlete dávku ke zpracování. Pomocí vrácené struktury ověřte, že operace každého objektu blob proběhla úspěšně.
async function main(containerClient) {
// Prep array
const blockBlobCount = 3;
const blockBlobClients = new Array(blockBlobCount);
// Create container and blobs in `Hot` tier
await prepContainer(containerClient, blockBlobCount, blockBlobClients);
// Blob batch client and batch
const containerScopedBatchClient = containerClient.getBlobBatchClient();
const blobBatch = containerScopedBatchClient.createBatch();
// Assemble batch to set tier to `Cool` tier
for (let i = 0; i < blockBlobCount; i++) {
await blobBatch.setBlobAccessTier(blockBlobClients[i].url, sharedKeyCredential, "Cool", {});
}
// Submit batch request and verify response
const resp = await containerScopedBatchClient.submitBatch(blobBatch, {});
console.log(`Requested ${blockBlobCount}, batched ${resp.subResponses.length}, success ${resp.subResponsesSucceededCount}, failure ${resp.subResponsesFailedCount}`);
// Examine each batch item
for (let i = 0; i < blockBlobCount; i++) {
// Check blob tier set properly
const resp2 = await blockBlobClients[i].getProperties();
console.log(`[${i}] access tier ${resp2.accessTier}, status ${resp.subResponses[i].status}, message ${resp.subResponses[i].statusMessage}`)
}
}
Ukázky kódu
- Nastavení úrovně přístupu k objektům blob během nahrávání pro JavaScript nebo TypeScript
- Změna úrovně přístupu k objektům blob po nahrání pro JavaScript nebo TypeScript
- Kopírování objektu blob do jiné úrovně přístupu pro JavaScript nebo TypeScript
- Změna úrovně přístupu pro mnoho objektů blob pro JavaScript nebo TypeScript pomocí dávky