TypeScript ile blok blobu erişim katmanını ayarlama veya değiştirme
Bu makalede, JavaScript için Azure Depolama istemci kitaplığıyla blob erişim katmanını ayarlama veya değiştirme adımları gösterilmektedir.
Önkoşullar
- Bu makaledeki örneklerde JavaScript için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, modülleri içeri aktarma ve veri kaynaklarıyla çalışacak yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve TypeScript'i kullanmaya başlama.
- Yetkilendirme mekanizmasının blob erişim katmanını ayarlama izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemi için yetkilendirme kılavuzuna bakın:
Blok blobu erişim katmanları hakkında
Depolama gereksinimlerinin maliyetlerini yönetmek için verilerinizi ne sıklıkta erişildiğinden ve ne kadar süreyle saklanması gerektiğinden yola çıkarak düzenlemek yararlı olabilir. Azure depolama, blob verilerinizi nasıl kullanıldığına göre en uygun maliyetli şekilde depolayabileceğiniz farklı erişim katmanları sunar.
Blob verileri için erişim katmanları
Azure Depolama erişim katmanları şunlardır:
- Sık erişim katmanı - Sık erişilen veya değiştirilen verileri depolamak için iyileştirilmiş bir çevrimiçi katman. Sık erişim katmanı en yüksek depolama maliyetlerine, ancak en düşük erişim maliyetlerine sahiptir.
- Seyrek erişim katmanı - Seyrek erişilen veya değiştirilen verileri depolamak için iyileştirilmiş çevrimiçi katman. Seyrek erişim katmanındaki veriler en az 30 gün boyunca depolanmalıdır. Seyrek erişim katmanı, sık erişim katmanına kıyasla daha düşük depolama maliyetlerine ve daha yüksek erişim maliyetlerine sahiptir.
- Soğuk katman - Seyrek erişilen veya değiştirilen verileri depolamak için iyileştirilmiş çevrimiçi katman. Soğuk katmandaki veriler en az 90 gün saklanmalıdır. Soğuk katman, seyrek erişim katmanına kıyasla depolama açısından daha düşük, erişim açısından daha yüksek maliyetlidir.
- Arşiv katmanı - Seyrek erişilen ve esnek gecikme süresi gereksinimlerine sahip verileri saat sırasına göre depolamak için iyileştirilmiş çevrimdışı katman. Arşiv katmanındaki veriler en az 180 gün boyunca depolanmalıdır.
Erişim katmanları hakkında daha fazla bilgi edinmek için bkz . Blob verileri için erişim katmanları.
Blob Arşiv erişim katmanındayken çevrimdışı olduğu kabul edilir ve okunamaz veya değiştirilemez. Arşivlenmiş bir blobdaki verileri okumak veya değiştirmek için önce blobu çevrimiçi bir katmanda yeniden doldurmanız gerekir. Bir blobu Arşiv katmanından çevrimiçi katmana yeniden doldurma hakkında daha fazla bilgi edinmek için bkz . Arşiv katmanından blob yeniden doldurma.
Kısıtlamalar
Erişim katmanının ayarlanmasına yalnızca blok bloblarında izin verilir. Blok blobu erişim katmanını ayarlama kısıtlamaları hakkında daha fazla bilgi edinmek için bkz . Blob Katmanını Ayarlama (REST API).
Not
Erişim katmanını TypeScript'i kullanacak şekilde ayarlamak için Cold
en düşük istemci kitaplığı sürümü olan 12.13.0 kullanmanız gerekir.
Karşıya yükleme sırasında blob'un erişim katmanını ayarlama
Blobu belirli bir erişim katmanına yüklemek için BlockBlobUploadOptions kullanın. Özellik tier
seçenekleri şunlardır: Hot
, Cool
, Cold
veya Archive
.
async function uploadWithAccessTier(
containerClient: ContainerClient
): Promise<BlockBlobClient> {
// Create blob
const timestamp = Date.now();
const blobName = `myblob-${timestamp}`;
console.log(`creating blob ${blobName}`);
const fileContentsAsString = `Hello from a string`;
const tags: Tags = {};
// Upload blob to cool tier
const uploadOptions: BlockBlobUploadOptions = {
// access tier setting
// 'Hot', 'Cool', or 'Archive'
tier: 'Cool',
// other properties
metadata: undefined,
tags
};
// Create blob client from container client
const blockBlobClient: BlockBlobClient =
await containerClient.getBlockBlobClient(blobName);
// Upload string
const uploadResult = await blockBlobClient.upload(
fileContentsAsString,
fileContentsAsString.length,
uploadOptions
);
if (uploadResult.errorCode) throw Error(uploadResult.errorCode);
// Return client to continue with other operations
return blockBlobClient;
}
Karşıya yüklemeden sonra blob'un erişim katmanını değiştirme
Depolama alanına yüklendikten sonra blobun erişim katmanını değiştirmek için setAccessTier'ı kullanın. Katmanla birlikte BlobSetTierOptions özelliği yeniden doldurma önceliğini ayarlayarak blok blobunu arşivlenmiş durumdan çıkarabilirsiniz. Olası değerler: High
veya Standard
.
async function main(blockBlobClient: BlockBlobClient): Promise<void> {
const options: BlobGetPropertiesOptions = {};
// Get current access tier
const { errorCode, accessTier } = await blockBlobClient.getProperties(
options
);
if (!errorCode) {
console.log(`Current access tier: ${accessTier}`);
}
// 'Hot', 'Cool', or 'Archive'
const newAccessTier = 'Cool';
// Rehydrate priority: 'High' or 'Standard'
const tierOptions: BlobSetTierOptions = {
rehydratePriority: 'High'
};
const result: BlobSetTierResponse = await blockBlobClient.setAccessTier(
newAccessTier,
tierOptions
);
if (!result?.errorCode) {
console.log(`Change to access was successful`);
} else {
console.log(result);
}
}
Blobu farklı bir erişim katmanına kopyalama
BlobClient kullanın.blobu kopyalamak için beginCopyFromURL yöntemi. Kopyalama işlemi sırasında erişim katmanını değiştirmek için BlobBeginCopyFromURLOptions tier
özelliğini kullanın ve kaynak blobdan farklı bir erişim katmanı belirtin.
async function copyBlobWithDifferentAccessTier(
containerClient: ContainerClient
): Promise<void> {
// create blob clients
const sourceBlobClient: BlobClient = await containerClient.getBlobClient(
originalBlob
);
const destinationBlobClient: BlobClient = await containerClient.getBlobClient(
copyBlob
);
const copyOptions: BlobBeginCopyFromURLOptions = { tier: 'Hot' };
// start copy, access tiers include `Hot`, `Cool`, `Archive`
const copyPoller = await destinationBlobClient.beginCopyFromURL(
sourceBlobClient.url,
copyOptions
);
console.log('start copy from original to copy');
// wait until done
await copyPoller.pollUntilDone();
console.log('copy finished');
}
Birçok blob için erişim katmanını değiştirmek için toplu iş kullanma
Toplu işlem, bloblarda silme veya erişim katmanı ayarlama gibi toplu bir işlem kümesini temsil eder. Her işlemi başarıyla gerçekleştirmek için doğru kimlik bilgilerini geçirmeniz gerekir. Bu örnekte, aynı kapsayıcıdaki bir blob kümesi için aynı kimlik bilgisi kullanılır.
BlobBatchClient oluşturun. createBatch() yöntemiyle toplu iş oluşturmak için istemcisini kullanın. Toplu iş hazır olduğunda toplu işlemi işlenmek üzere gönderin . Döndürülen yapıyı kullanarak her blob işleminin başarılı olduğunu doğrulayın.
async function batchChangeAccessTier(
containerClient: ContainerClient
): Promise<void> {
// Prep array
const blockBlobCount = 3;
const blockBlobClients: BlockBlobClient[] = new Array(blockBlobCount);
// Create container and blobs in `Hot` tier
await prepContainer(containerClient, blockBlobCount, blockBlobClients);
// Blob batch client and batch
const containerScopedBatchClient: BlobBatchClient =
containerClient.getBlobBatchClient();
const blobBatch: 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, {});
if (resp.errorCode) throw Error(resp.errorCode);
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();
if (resp2.errorCode) throw Error(resp2.errorCode);
console.log(
`[${i}] access tier ${resp2.accessTier}, status ${resp.subResponses[i].status}, message ${resp.subResponses[i].statusMessage}`
);
}
}
Kod örnekleri
- Karşıya yükleme sırasında blob'un erişim katmanını ayarlama
- Karşıya yüklemeden sonra blob'un erişim katmanını değiştirme
- Blobu farklı erişim katmanına kopyalama
- Birçok blob için erişim katmanını değiştirmek için toplu iş kullanma
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin