Delen via


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:

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, Coldof 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

Volgende stappen