Udostępnij za pośrednictwem


Ustawianie lub zmienianie warstwy dostępu blokowego obiektu blob za pomocą języka JavaScript

W tym artykule pokazano, jak ustawić lub zmienić warstwę dostępu obiektu blob dla blokowych obiektów blob za pomocą biblioteki klienta usługi Azure Storage dla języka JavaScript.

Wymagania wstępne

  • W przykładach w tym artykule założono, że masz już skonfigurowany projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka JavaScript. Aby dowiedzieć się więcej o konfigurowaniu projektu, w tym instalacji pakietu, importowaniu modułów i tworzeniu autoryzowanego obiektu klienta do pracy z zasobami danych, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i JavaScript.
  • Mechanizm autoryzacji musi mieć uprawnienia do ustawiania warstwy dostępu obiektu blob. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla następującej operacji interfejsu API REST:

Informacje o warstwach dostępu blokowych obiektów blob

Aby zarządzać kosztami magazynu, warto zorganizować dane na podstawie tego, jak często jest uzyskiwany dostęp i jak długo należy je przechowywać. Usługa Azure Storage oferuje różne warstwy dostępu, dzięki czemu można przechowywać dane obiektów blob w najbardziej ekonomiczny sposób na podstawie sposobu ich użycia.

Warstwy dostępu dla danych obiektów blob

Warstwy dostępu usługi Azure Storage obejmują:

  • Warstwa Gorąca — warstwa online zoptymalizowana pod kątem przechowywania danych, które są często używane lub modyfikowane. Warstwa Gorąca ma najwyższe koszty magazynowania, ale najniższe koszty dostępu.
  • Warstwa Chłodna — warstwa online zoptymalizowana pod kątem przechowywania danych, które są rzadko używane lub modyfikowane. Dane w warstwie Chłodna powinny być przechowywane przez co najmniej 30 dni. Warstwa Chłodna ma niższe koszty magazynowania i wyższe koszty dostępu w porównaniu z warstwą Gorąca.
  • Warstwa zimna — warstwa online zoptymalizowana pod kątem przechowywania danych, do których dostęp jest rzadko używany lub modyfikowany. Dane w warstwie Zimna powinny być przechowywane przez co najmniej 90 dni. Warstwa dostępu Zimna ma niższe koszty magazynowania i wyższe koszty dostępu w porównaniu do warstwy Chłodna.
  • Warstwa Archiwum — warstwa offline zoptymalizowana pod kątem przechowywania rzadko używanych danych i ma elastyczne wymagania dotyczące opóźnień w godzinach. Dane w warstwie Archiwum powinny być przechowywane przez co najmniej 180 dni.

Aby dowiedzieć się więcej na temat warstw dostępu, zobacz Warstwy dostępu dla danych obiektów blob.

Chociaż obiekt blob znajduje się w warstwie dostępu Archiwum, jest uważany za offline i nie można go odczytać ani zmodyfikować. Aby odczytywać lub modyfikować dane w zarchiwizowanym obiekcie blob, należy najpierw przywrócić obiekt blob do warstwy online. Aby dowiedzieć się więcej na temat ponownego wypełniania obiektu blob z warstwy Archiwum do warstwy online, zobacz Ponowne wypełnianie obiektów blob z warstwy Archiwum.

Ograniczenia

Ustawienie warstwy dostępu jest dozwolone tylko w blokowych obiektach blob. Aby dowiedzieć się więcej na temat ograniczeń dotyczących ustawiania warstwy dostępu blokowego obiektu blob, zobacz Ustawianie warstwy obiektu blob (interfejs API REST).

Uwaga

Aby ustawić warstwę dostępu na Cold używanie języka JavaScript, należy użyć minimalnej wersji biblioteki klienta 12.13.0.

Ustawianie warstwy dostępu obiektu blob podczas przekazywania

Aby przekazać obiekt blob do określonej warstwy dostępu, użyj polecenia BlockBlobUploadOptions. Opcje tier właściwości to: Hot, , CoolColdlub Archive.

async function uploadWithAccessTier(containerClient) {

  // Create blob
  const timestamp = Date.now();
  const blobName = `myblob-${timestamp}`;
  console.log(`creating blob ${blobName}`);

  const fileContentsAsString = `Hello from a string`

  // upload blob to `Cool` access tier
  const uploadOptions = {

    // access tier setting
    // 'Hot', 'Cool', or 'Archive'
    tier: 'Cool',

    // other properties
    metadata: undefined,
    tags: undefined,
  }

  // Create blob client from container client
  const blockBlobClient = await containerClient.getBlockBlobClient(blobName);

  // Upload string
  await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length, uploadOptions);

  // Return client to continue with other operations
  return blockBlobClient;
}

Zmiana warstwy dostępu obiektu blob po przekazaniu

Aby zmienić warstwę dostępu obiektu blob po przekazaniu go do magazynu, użyj polecenia setAccessTier. Oprócz warstwy można ustawić priorytet przywracania właściwości BlobSetTierOptions, aby przywrócić zarchiwizowany stan obiektu blob blokowego. Możliwe wartości to High lub 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);
  }
}

Kopiowanie obiektu blob do innej warstwy dostępu

Użyj obiektu BlobClient.beginCopyFromURL , metoda kopiowania obiektu blob. Aby zmienić warstwę dostępu podczas operacji kopiowania, użyj właściwości BlobBeginCopyFromURLOptionstier i określ inną warstwę dostępu niż źródłowy obiekt blob.

async function copyBlobWithDifferentAccessTier(containerClient) {

  // create blob clients
  const sourceBlobClient = await containerClient.getBlobClient(originalBlob);
  const destinationBlobClient = await containerClient.getBlobClient(copyBlob);

  // start copy, access tiers include `Hot`, `Cool`, `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')
}

Zmiana warstwy dostępu dla wielu obiektów blob za pomocą partii

Partia reprezentuje zagregowany zestaw operacji na obiektach blob, takich jak usuwanie lub ustawianie warstwy dostępu. Aby pomyślnie wykonać każdą operację, należy przekazać poprawne poświadczenia. W tym przykładzie to samo poświadczenie jest używane dla zestawu obiektów blob w tym samym kontenerze.

Utwórz obiekt BlobBatchClient. Użyj klienta, aby utworzyć partię za pomocą metody createBatch(). Gdy partia jest gotowa, prześlij partię do przetworzenia. Użyj zwróconej struktury, aby sprawdzić, czy operacja każdego obiektu blob zakończyła się pomyślnie.

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}`)
  }
}

Przykłady kodu

Następne kroki