Aracılığıyla paylaş


Python ile blok blobu erişim katmanını ayarlama veya değiştirme

Bu makalede, Python 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.

Zaman uyumsuz API'leri kullanarak blob'un erişim katmanını değiştirme hakkında bilgi edinmek için bkz . Blob'un erişim katmanını zaman uyumsuz olarak değiştirme.

Önkoşullar

  • Bu makalede, Python için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, deyim ekleme import ve yetkili istemci nesnesi oluşturma dahil olmak üzere projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve Python'ı 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).

Dekont

Erişim katmanını Python'ı kullanacak şekilde ayarlamak için Cold en düşük istemci kitaplığı sürümü olan 12.15.0 kullanmanız gerekir.

Karşıya yükleme sırasında blob'un erişim katmanını ayarlama

Anahtar sözcük bağımsız değişkenini upload_blob veya upload_blob_from_url geçirerek standard_blob_tier 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:

def upload_blob_access_tier(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
    blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
    
    #Upload blob to the cool tier
    with open(file=os.path.join(r'file_path', blob_name), mode="rb") as data:
        blob_client = blob_client.upload_blob(data=data, overwrite=True, standard_blob_tier=StandardBlobTier.COOL)

Python ile blob yükleme hakkında daha fazla bilgi edinmek için bkz . Python ile blob yükleme.

Mevcut blok blobunun erişim katmanını değiştirme

Aşağıdaki işlevi kullanarak mevcut bir blok blobunun erişim katmanını değiştirebilirsiniz:

Aşağıdaki kod örneğinde, mevcut blob Cooliçin erişim katmanının olarak nasıl değiştireceği gösterilmektedir:

def change_blob_access_tier(self, blob_client: BlobClient):
    # Change the blob access tier to cool
    blob_client.set_standard_blob_tier(StandardBlobTier.COOL)

Arşivlenmiş bir blobu yeniden doldurmaya devam ediyorsanız, isteğe bağlı olarak anahtar sözcük bağımsız değişkenini rehydrate_priority veya STANDARDolarak HIGH geçirebilirsiniz.

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 anahtar sözcük bağımsız değişkenini standard_blob_tierstart_copy_from_url geçirin. Bir kopyalama işlemi kullanarak arşiv katmanından bir blobu yeniden doldurmaya devam ediyorsanız, isteğe bağlı olarak anahtar sözcük bağımsız değişkenini rehydrate_priority veya STANDARDolarak HIGH geçirebilirsiniz.

Aşağıdaki kod örneği, bir kopyalama işlemi kullanarak arşivlenmiş blobu katmana yeniden doldurma işlemini Hot gösterir:

def rehydrate_blob_using_copy(self, source_archive_blob: BlobClient, destination_rehydrated_blob: BlobClient):
    # Note: the destination blob must have a different name than the source blob

    # Start the copy operation - specify the rehydrate priority and blob access tier
    copy_operation = dict()
    copy_operation = destination_rehydrated_blob.start_copy_from_url(
        source_url=source_archive_blob.url,
        standard_blob_tier=StandardBlobTier.HOT,
        rehydrate_priority=RehydratePriority.STANDARD,
        requires_sync=False)

Python ile blob kopyalama hakkında daha fazla bilgi edinmek için bkz . Python ile blob kopyalama.

Blob'un erişim katmanını zaman uyumsuz olarak değiştirme

Python için Azure Blob Depolama istemci kitaplığı, bir blob'un erişim katmanını zaman uyumsuz olarak değiştirmeyi destekler. Proje kurulum gereksinimleri hakkında daha fazla bilgi edinmek için bkz . Zaman uyumsuz programlama.

Zaman uyumsuz API'leri kullanarak blob'un erişim katmanını değiştirmek için şu adımları izleyin:

  1. Aşağıdaki içeri aktarma deyimlerini ekleyin:

    import asyncio
    
    from azure.storage.blob import (
    StandardBlobTier
    )
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import (
    BlobServiceClient,
    BlobClient
    )
    
  2. kullanarak asyncio.runprogramı çalıştırmak için kod ekleyin. Bu işlev, main() örneğimizde geçirilen eş yordamları çalıştırır ve olay döngüsünü yönetir asyncio . Eş yordamlar zaman uyumsuz/await söz dizimi ile bildirilir. Bu örnekte, main() eş yordam önce kullanarak async withen üst düzeyi BlobServiceClient oluşturur, ardından blob'un erişim katmanını değiştiren yöntemi çağırır. Yalnızca en üst düzey istemcinin kullanması async withgerektiğini unutmayın; bu istemciden oluşturulan diğer istemciler aynı bağlantı havuzunu paylaşır.

    async def main():
        sample = BlobAccessTierSamples()
    
        # TODO: Replace <storage-account-name> with an actual storage account name
        account_url = "https://<storage-account-name>.blob.core.windows.net"
        credential = DefaultAzureCredential()
    
        async with BlobServiceClient(account_url, credential=credential) as blob_service_client:
            # Change the blob access tier to cool
            blob_client = blob_service_client.get_blob_client(container="sample-container", blob="sample-blob.txt")
            await sample.change_blob_access_tier(blob_client=blob_client)
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. Blob'un erişim katmanını değiştirmek için kod ekleyin. Kod, zaman uyumlu örnekle aynıdır, ancak yöntemi anahtar sözcüğüyle async bildirilir ve await yöntemi çağrılırken set_standard_blob_tier anahtar sözcüğü kullanılır.

    async def change_blob_access_tier(self, blob_client: BlobClient):
        # Change the blob access tier to cool
        await blob_client.set_standard_blob_tier(StandardBlobTier.COOL)
    

Bu temel kurulumla, bu makaledeki diğer örnekleri zaman uyumsuz/await söz dizimini kullanarak eş yordam olarak uygulayabilirsiniz.

Kaynaklar

Python 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.

REST API işlemleri

Python için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Python 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:

İstemci kitaplığı kaynakları

Kod örnekleri

Ayrıca bkz.