De toegangslaag van een blok-blob instellen of wijzigen met JavaScript of TypeScript
In dit artikel wordt beschreven hoe u de toegangslaag van een blob instelt of wijzigt voor blok-blobs met de Azure Storage-clientbibliotheek voor JavaScript.
Vereisten
- In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en JavaScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject voor gebruik met gegevensbronnen.
- Het autorisatiemechanisme moet machtigingen hebben om de toegangslaag van de blob in te stellen. Zie de autorisatierichtlijnen voor de volgende REST API-bewerking voor meer informatie:
- Set Blob Tier (Blob-laag instellen)
Over blok-blob-toegangslagen
Voor het beheren van de kosten voor opslagbehoeften kan het handig zijn om uw gegevens te organiseren op basis van hoe vaak ze worden geopend en hoe lang deze moeten worden bewaard. Azure Storage biedt verschillende toegangslagen, zodat u uw blobgegevens op de meest rendabele manier kunt opslaan op basis van hoe deze worden gebruikt.
Toegangslagen voor blobgegevens
Azure Storage-toegangslagen zijn onder andere:
- Dynamische laag : een onlinelaag die is geoptimaliseerd voor het opslaan van gegevens die regelmatig worden geopend of gewijzigd. De dynamische laag heeft de hoogste opslagkosten, maar de laagste toegangskosten.
- Statische laag : een onlinelaag die is geoptimaliseerd voor het opslaan van gegevens die niet vaak worden geopend of gewijzigd. Gegevens in de statische laag moeten minimaal 30 dagen worden opgeslagen. De statische laag heeft lagere opslagkosten en hogere toegangskosten in vergelijking met de dynamische laag.
- Koude laag : een onlinelaag die is geoptimaliseerd voor het opslaan van gegevens die niet vaak worden geopend of gewijzigd. Gegevens in de koude laag moeten minimaal 90 dagen worden opgeslagen. De koude laag heeft lagere opslagkosten en hogere toegangskosten dan de statische laag.
- Archieflaag: een offlinelaag die is geoptimaliseerd voor het opslaan van gegevens die zelden worden geopend en die flexibele latentievereisten heeft, in de volgorde van uren. Gegevens in de archieflaag moeten minimaal 180 dagen worden opgeslagen.
Zie Toegangslagen voor blobgegevens voor meer informatie over toegangslagen.
Hoewel een blob zich in de archieftoegangslaag bevindt, wordt deze beschouwd als offline en kan deze niet worden gelezen of gewijzigd. Als u gegevens in een gearchiveerde blob wilt lezen of wijzigen, moet u de blob eerst reactiveren naar een onlinelaag. Zie Blob-rehydratatie vanuit de archieflaag voor meer informatie over het reactiveren van een blob vanuit de archieflaag naar een onlinelaag.
Beperkingen
Het instellen van de toegangslaag is alleen toegestaan voor blok-blobs. Zie Blob-laag (REST API) instellen voor meer informatie over beperkingen voor het instellen van de toegangslaag van een blok-blob.
Notitie
Als u de toegangslaag wilt instellen voor Cold
het gebruik van JavaScript, moet u een minimale clientbibliotheekversie van 12.13.0 gebruiken.
De toegangslaag van een blob instellen tijdens het uploaden
Als u een blob wilt uploaden naar een specifieke toegangslaag, gebruikt u de BlockBlobUploadOptions. De tier
eigenschappen zijn: Hot
, Cool
, Cold
of 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;
}
De toegangslaag van een blob wijzigen na het uploaden
Als u de toegangslaag van een blob wilt wijzigen nadat deze is geüpload naar de opslag, gebruikt u SetAccessTier. Samen met de laag kunt u de rehydratatieprioriteit van de eigenschap BlobSetTierOptions instellen om de blok-blob uit een gearchiveerde status te halen. Mogelijke waarden zijn High
en 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);
}
}
Een blob kopiëren naar een andere toegangslaag
Gebruik de BlobClient.beginCopyFromURL-methode om een blob te kopiëren. Als u de toegangslaag tijdens de kopieerbewerking wilt wijzigen, gebruikt u de eigenschap BlobBeginCopyFromURLOptions tier
en geeft u een andere toegangslaag op dan de bron-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')
}
Een batch gebruiken om de toegangslaag voor veel blobs te wijzigen
De batch vertegenwoordigt een geaggregeerde set bewerkingen op blobs, zoals verwijderen of instellen van de toegangslaag. U moet de juiste referentie doorgeven om elke bewerking te kunnen uitvoeren. In dit voorbeeld wordt dezelfde referentie gebruikt voor een set blobs in dezelfde container.
Maak een BlobBatchClient. Gebruik de client om een batch te maken met de methode createBatch(). Wanneer de batch gereed is, dient u de batch in voor verwerking. Gebruik de geretourneerde structuur om te controleren of de bewerking van elke blob is geslaagd.
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}`)
}
}
Codevoorbeelden
- Blob-toegangslaag instellen tijdens uploaden voor JavaScript of TypeScript
- Blob-toegangslaag wijzigen na uploaden voor JavaScript of TypeScript
- Blob kopiëren naar een andere toegangslaag voor JavaScript of TypeScript
- Een batch gebruiken om de toegangslaag te wijzigen voor veel blobs voor JavaScript of TypeScript