Java ile blok blobu erişim katmanını ayarlama veya değiştirme
Bu makalede, Java için Azure Depolama istemci kitaplığını kullanarak blok blobu için erişim katmanını ayarlama veya değiştirme adımları gösterilmektedir.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Java Development Kit (JDK) sürüm 8 veya üzeri (en iyi deneyim için sürüm 17'yi öneririz)
- Apache Maven bu örnekte proje yönetimi için kullanılır
Ortamınızı ayarlama
Mevcut bir projeniz yoksa, bu bölümde Java için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Daha fazla bilgi için bkz. Azure Blob Depolama ve Java'yı kullanmaya başlama.
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Not
Bu makalede, örnek kodu derlemek ve çalıştırmak için Maven derleme aracı kullanılmaktadır. Gradle gibi diğer derleme araçları da Java için Azure SDK ile çalışır.
Paketleri yükleme
pom.xml
Dosyayı metin düzenleyicinizde açın. Bom dosyasını ekleyerek veya doğrudan bağımlılık ekleyerek paketleri yükleyin.
İçeri aktarma deyimleri ekleme
Aşağıdaki import
deyimlerini ekleyin:
import com.azure.core.util.polling.LongRunningOperationStatus;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.options.BlobBeginCopyOptions;
Yetkilendirme
Yetkilendirme mekanizması, blob erişim katmanını ayarlamak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Verileri Katkıda Bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Katmanını Ayarlama için yetkilendirme kılavuzu.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun.
Aşağıdaki örnek kullanarak bir BlobServiceClient
nesne DefaultAzureCredential
oluşturmak için BlobServiceClientBuilder'ı kullanır ve gerekirse kapsayıcı ve blob istemcilerinin nasıl oluşturulacağını gösterir:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.
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ı Java'yı kullanacak şekilde ayarlamak için Cold
en düşük istemci kitaplığı sürümü olan 12.21.0 kullanmanız gerekir.
Karşıya yükleme sırasında blob'un erişim katmanını ayarlama
BlobUploadFromFileOptions sınıfını kullanarak karşıya yüklemede blob'un erişim katmanını ayarlayabilirsiniz. Aşağıdaki kod örneğinde blob karşıya yüklenirken erişim katmanının nasıl ayarlanacağı gösterilmektedir:
public void uploadBlobWithAccessTier(BlobContainerClient blobContainerClient, Path filePath) {
String fileName = filePath.getFileName().toString();
BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString())
.setTier(AccessTier.COOL);
try {
Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
} catch (UncheckedIOException ex) {
System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
}
}
Java ile blob yükleme hakkında daha fazla bilgi edinmek için bkz . Java ile blob yükleme.
Mevcut blok blobunun erişim katmanını değiştirme
Aşağıdaki yöntemlerden birini kullanarak mevcut blok blobunun erişim katmanını değiştirebilirsiniz:
Aşağıdaki kod örneği, mevcut bir blob için erişim katmanının Seyrek Erişimli olarak nasıl değiştireceğini gösterir:
public void changeBlobAccessTier(BlobClient blobClient) {
// Change the blob's access tier to cool
blobClient.setAccessTier(AccessTier.COOL);
}
Arşivlenmiş bir blobu yeniden doldurmaya devam ediyorsanız setAccessTierWithResponse yöntemini kullanın. parametresini tier
, , COLD
COOL
veya ARCHIVE
geçerli bir AccessTier değerine HOT
ayarlayın. İsteğe bağlı olarak parametresini priority
geçerli bir RehydratePriority değerine HIGH
veya STANDARD
olarak ayarlayabilirsiniz.
Aşağıdaki kod örneği, erişim katmanını Sık Erişimli olarak değiştirerek arşivlenmiş blobu yeniden doldurma işlemini gösterir:
public void rehydrateBlobSetAccessTier(BlobClient blobClient) {
// Rehydrate the blob to hot tier using a standard rehydrate priority
blobClient.setAccessTierWithResponse(
AccessTier.HOT,
RehydratePriority.STANDARD,
null,
null,
null);
}
setAccessTierWithResponse yöntemi, yapılandırma seçeneklerini belirtmek için blobSetAccessTierOptions parametresini de kabul edebilir.
Blobu farklı bir erişim katmanına kopyalama
Kopyalama işleminin bir parçası olarak bir erişim katmanı belirterek mevcut bir blok blobunun erişim katmanını değiştirebilirsiniz. Kopyalama işlemi sırasında erişim katmanını değiştirmek için BlobBeginCopyOptions sınıfını kullanın.
AccessTier değerini , , COOL
COLD
veya ARCHIVE
olarak HOT
belirtmek için setTier yöntemini kullanabilirsiniz. Bir kopyalama işlemi kullanarak arşiv katmanından bir blobu yeniden doldurma işlemini kullanıyorsanız, veya STANDARD
olarak RehydratePriority değerini belirtmek için setRehydratePriority yöntemini kullanınHIGH
.
Aşağıdaki kod örneği, bir kopyalama işlemi kullanarak arşivlenmiş blobu Sık Erişim katmanına yeniden doldurma işlemini gösterir:
public void rehydrateBlobUsingCopy(
BlobClient sourceArchiveBlob,
BlobClient destinationRehydratedBlob) {
// Note: the destination blob must have a different name than the archived source blob
// Start the copy operation and wait for it to complete
final SyncPoller<BlobCopyInfo, Void> poller = destinationRehydratedBlob.beginCopy(
new BlobBeginCopyOptions(sourceArchiveBlob.getBlobUrl())
.setTier(AccessTier.HOT)
.setRehydratePriority(RehydratePriority.STANDARD));
PollResponse<BlobCopyInfo> response = poller
.waitUntil(LongRunningOperationStatus.SUCCESSFULLY_COMPLETED);
}
Java ile blob kopyalama hakkında daha fazla bilgi edinmek için bkz . Java ile blob kopyalama.
Kaynaklar
Java için Azure Blob Depolama istemci kitaplığını kullanarak erişim katmanlarını ayarlama hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
REST API işlemleri
Java için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Java paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Erişim katmanlarını ayarlamak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:
- Blob Katmanını Ayarlama (REST API)
İstemci kitaplığı kaynakları
Ayrıca bkz.
İlgili içerik
- Bu makale, Java için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Java uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.