Aracılığıyla paylaş


Hızlı Başlangıç: Python için Azure Blob Depolama istemci kitaplığı

Not

Sıfırdan oluştur seçeneği, yeni proje oluşturma, paketleri yükleme, kodu yazma ve temel bir konsol uygulamasını çalıştırma sürecinde adım adım size yol gösterir. Azure Blob Depolama bağlanan bir uygulama oluştururken yer alan tüm ayrıntıları anlamak istiyorsanız bu yaklaşım önerilir. Dağıtım görevlerini otomatikleştirmeyi ve tamamlanmış bir projeyle başlamayı tercih ediyorsanız Şablonla başla'yı seçin.

Not

Şablonla başla seçeneği, dağıtım görevlerini otomatikleştirmek için Azure Geliştirici CLI'sini kullanır ve tamamlanmış bir projeyle çalışmaya başlar. Bu yaklaşım, kurulum görevlerine geçmeden kodu mümkün olan en kısa sürede keşfetmek istiyorsanız önerilir. Uygulamayı derlemek için adım adım yönergeleri tercih ediyorsanız Sıfırdan oluştur'u seçin.

Blobları ve kapsayıcıları yönetmek için Python için Azure Blob Depolama istemci kitaplığını kullanmaya başlayın.

Bu makalede, paketi yüklemek için adımları izleyin ve temel görevler için örnek kodu deneyin.

Bu makalede, Azure kaynaklarını dağıtmak ve yalnızca birkaç komutla tamamlanmış bir konsol uygulaması çalıştırmak için Azure Geliştirici CLI'sini kullanacaksınız.

API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (PyPi)Örnekleri |

Bu videoda Python için Azure Blob Depolama istemci kitaplığını kullanmaya nasıl başlayacağınız gösterilmektedir.

Videodaki adımlar aşağıdaki bölümlerde de açıklanmıştır.

Önkoşullar

Ayarlama

Bu bölüm, Python için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir proje hazırlama işleminde size yol gösterir.

Proje oluşturma

blob-quickstart adlı bir Python uygulaması oluşturun.

  1. Konsol penceresinde (PowerShell veya Bash gibi) proje için yeni bir dizin oluşturun:

    mkdir blob-quickstart
    
  2. Yeni oluşturulan blob-quickstart dizinine geçin:

    cd blob-quickstart
    

Paketleri yükleme

Proje dizininden komutunu kullanarak pip install Azure Blob Depolama ve Azure Identity istemci kitaplıkları için paketleri yükleyin. Azure hizmetlerine parolasız bağlantılar için azure-identity paketi gereklidir.

pip install azure-storage-blob azure-identity

Uygulama çerçevesini ayarlama

Proje dizininden uygulamanın temel yapısını oluşturmak için aşağıdaki adımları izleyin:

  1. Kod düzenleyicinizde yeni bir metin dosyası açın.
  2. Deyimleri ekleyin import , programın yapısını oluşturun ve aşağıda gösterildiği gibi temel özel durum işlemeyi ekleyin.
  3. Yeni dosyayı blob-quickstart dizinine blob_quickstart.py olarak kaydedin.
import os, uuid
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

try:
    print("Azure Blob Storage Python quickstart sample")

    # Quickstart code goes here

except Exception as ex:
    print('Exception:')
    print(ex)

Azure Geliştirici CLI'sı yüklendikten sonra bir depolama hesabı oluşturabilir ve örnek kodu yalnızca birkaç komutla çalıştırabilirsiniz. Projeyi yerel geliştirme ortamınızda veya DevContainer'da çalıştırabilirsiniz.

Azure Geliştirici CLI şablonunu başlatma ve kaynakları dağıtma

Boş bir dizinden şablonu başlatmak azd , Azure kaynaklarını sağlamak ve kodu kullanmaya başlamak için şu adımları izleyin:

  • GitHub'dan hızlı başlangıç deposu varlıklarını kopyalayın ve şablonu yerel olarak başlatın:

    azd init --template blob-storage-quickstart-python
    

    Aşağıdaki bilgiler istenir:

    • Ortam adı: Bu değer, Azure Geliştirici CLI tarafından oluşturulan tüm Azure kaynakları için ön ek olarak kullanılır. Adın tüm Azure aboneliklerinde benzersiz olması ve 3 ile 24 karakter uzunluğunda olması gerekir. Ad yalnızca sayılar ve küçük harfler içerebilir.
  • Azure'da oturum açın:

    azd auth login
    
  • Kaynakları sağlayın ve Azure'a dağıtın:

    azd up
    

    Aşağıdaki bilgiler istenir:

    • Abonelik: Kaynaklarınızın dağıtılacağı Azure aboneliği.
    • Konum: Kaynaklarınızın dağıtıldığı Azure bölgesi.

    Dağıtımın tamamlanması birkaç dakika sürebilir. Komutun çıktısı azd up , yeni oluşturulan depolama hesabının adını içerir ve bu adı daha sonra kodu çalıştırmak için kullanmanız gerekir.

Örnek kodu çalıştırma

Bu noktada kaynaklar Azure'a dağıtılır ve kod neredeyse çalışmaya hazırdır. Paketleri yüklemek, koddaki depolama hesabının adını güncelleştirmek ve örnek konsol uygulamasını çalıştırmak için şu adımları izleyin:

  • Paketleri yükleme: Yerel dizinde, aşağıdaki komutu kullanarak Azure Blob Depolama ve Azure Identity istemci kitaplıkları için paketleri yükleyin:pip install azure-storage-blob azure-identity
  • Depolama hesabı adını güncelleştirin: Yerel dizinde blob_quickstart.py adlı dosyayı düzenleyin. Yer tutucuyu <storage-account-name> bulun ve komutu tarafından azd up oluşturulan depolama hesabının gerçek adıyla değiştirin. Değişiklikleri kaydedin.
  • Projeyi çalıştırın: Uygulamayı çalıştırmak için aşağıdaki komutu yürütebilirsiniz: python blob_quickstart.py.
  • Çıkışı gözlemleyin: Bu uygulama yerel veri klasörünüzde bir test dosyası oluşturur ve depolama hesabındaki bir kapsayıcıya yükler. Örnek daha sonra kapsayıcıdaki blobları listeler ve eski ve yeni dosyaları karşılaştırabilmeniz için dosyayı yeni bir adla indirir.

Örnek kodun nasıl çalıştığı hakkında daha fazla bilgi edinmek için bkz . Kod örnekleri.

Kodu test etme işlemini tamamladığınızda, komutu tarafından azd up oluşturulan kaynakları silmek için Kaynakları temizleme bölümüne bakın.

Nesne modeli

Azure Blob Depolama, çok büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiştir. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanıma bağlı olmayan verilerdir. Blob depolama üç tür kaynak sunar:

  • Depolama hesabı
  • Depolama hesabındaki bir kapsayıcı
  • Kapsayıcıdaki bir blob

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir:

Blob depolama mimarisi diyagramı

Bu kaynaklarla etkileşime geçmek için aşağıdaki Python sınıflarını kullanın:

  • BlobServiceClient: sınıfı, BlobServiceClient Azure Depolama kaynaklarını ve blob kapsayıcılarını işlemenize olanak tanır.
  • ContainerClient: sınıfı, ContainerClient Azure Depolama kapsayıcılarını ve bloblarını işlemenize olanak tanır.
  • BlobClient: sınıfı, BlobClient Azure Depolama bloblarını işlemenize olanak tanır.

Kod örnekleri

Bu örnek kod parçacıkları, Python için Azure Blob Depolama istemci kitaplığıyla aşağıdaki görevlerin nasıl yapılacağını gösterir:

Not

Azure Geliştirici CLI şablonu, örnek kodun zaten bulunduğu bir dosya içerir. Aşağıdaki örneklerde, örnek kodun her bölümü için ayrıntılı bilgi sağlanır. Şablon, Azure'da kimlik doğrulaması bölümünde açıklandığı gibi önerilen parolasız kimlik doğrulama yöntemini uygular. bağlantı dizesi yöntemi alternatif olarak gösterilir, ancak şablonda kullanılmaz ve üretim kodu için önerilmez.

Azure'da kimlik doğrulaması ve blob verilerine erişim yetkisi verme

Azure Blob Depolama uygulama istekleri yetkilendirilmelidir. DefaultAzureCredential Azure Identity istemci kitaplığı tarafından sağlanan sınıfı kullanmak, Blob Depolama da dahil olmak üzere kodunuzdaki Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.

Ayrıca, hesap erişim anahtarını kullanarak istekleri Azure Blob Depolama yetkilendirmeniz de gerekir. Ancak bu yaklaşım dikkatli kullanılmalıdır. Geliştiriciler, erişim anahtarını güvenli olmayan bir konumda asla kullanıma sunmamak için dikkatli olmalıdır. Erişim anahtarına sahip olan herkes, depolama hesabına yönelik istekleri yetkilendirebiliyor ve tüm verilere etkin bir şekilde erişim sahibi oluyor. DefaultAzureCredential parolasız kimlik doğrulamasına izin vermek için hesap anahtarı üzerinde gelişmiş yönetim ve güvenlik avantajları sunar. Her iki seçenek de aşağıdaki örnekte gösterilmiştir.

DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.

Kimlik bilgilerinin arandığı DefaultAzureCredential sıra ve konumlar Azure Kimlik kitaplığına genel bakış sayfasında bulunabilir.

Örneğin, uygulamanız yerel olarak geliştirme yaparken Azure CLI oturum açma kimlik bilgilerinizi kullanarak kimlik doğrulaması yapabilir. Ardından uygulamanız Azure'a dağıtıldıktan sonra yönetilen kimliği kullanabilir. Bu geçiş için kod değişikliği gerekmez.

Microsoft Entra kullanıcı hesabınıza rol atama

Yerel olarak geliştirme yaparken blob verilerine erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Blob verilerini okumak ve yazmak için Depolama Blob Verileri Katkıda Bulunanı gerekir. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgiyi kapsam genel bakış sayfasından öğrenebilirsiniz.

Bu senaryoda, En Az Ayrıcalık İlkesi'ni izlemek için depolama hesabı kapsamındaki kullanıcı hesabınıza izinler atayacaksınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.

Aşağıdaki örnek, depolama hesabınızdaki blob verilerine hem okuma hem de yazma erişimi sağlayan Depolama Blob Verileri Katkıda Bulunanı rolünü kullanıcı hesabınıza atar.

Önemli

Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer, ancak nadir durumlarda sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.

  1. Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.

  2. Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.

  3. Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.

  4. Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.

    Rol atamayı gösteren ekran görüntüsü.

  5. Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Blobu Veri Katkıda Bulunanı'nı arayın ve eşleşen sonucu seçin ve ardından İleri'yi seçin.

  6. Erişim ata'nın altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın ve ardından + Üye seç'e tıklayın.

  7. İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.

  8. Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve ardından işlemi tamamlamak için Gözden geçir + yeniden ata'yı seçin.

DefaultAzureCredential kullanarak oturum açın ve uygulama kodunuzu Azure'a bağlayın

Aşağıdaki adımları kullanarak depolama hesabınızdaki verilere erişimi yetkileyebilirsiniz:

  1. Depolama hesabınızda rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI, Visual Studio Code veya Azure PowerShell aracılığıyla kimlik doğrulaması yapabilirsiniz.

    Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:

    az login
    
  2. kullanmak DefaultAzureCredentialiçin azure-identity paketinin yüklendiğinden ve sınıfın içeri aktarıldığından emin olun:

    from azure.identity import DefaultAzureCredential
    from azure.storage.blob import BlobServiceClient
    
  3. Bu kodu bloğun try içine ekleyin. Kod yerel iş istasyonunuzda çalıştığında, DefaultAzureCredential Azure'da kimlik doğrulaması yapmak için oturum açtığınız öncelikli aracın geliştirici kimlik bilgilerini kullanır. Bu araçlara örnek olarak Azure CLI veya Visual Studio Code verilebilir.

    account_url = "https://<storageaccountname>.blob.core.windows.net"
    default_credential = DefaultAzureCredential()
    
    # Create the BlobServiceClient object
    blob_service_client = BlobServiceClient(account_url, credential=default_credential)
    
  4. Nesnenizin URI'sindeki depolama hesabı adını güncelleştirdiğinden BlobServiceClient emin olun. Depolama hesabı adı, Azure portalının genel bakış sayfasında bulunabilir.

    Depolama hesabı adını bulmayı gösteren ekran görüntüsü.

    Not

    Azure'a dağıtıldığında, Azure'da çalışan bir uygulamadan Azure Depolama'ya yönelik istekleri yetkilendirmek için aynı kod kullanılabilir. Ancak Azure'daki uygulamanızda yönetilen kimliği etkinleştirmeniz gerekir. Ardından depolama hesabınızı bu yönetilen kimliğin bağlanmasına izin verecek şekilde yapılandırın. Azure hizmetleri arasında bu bağlantıyı yapılandırma hakkında ayrıntılı yönergeler için Bkz. Azure tarafından barındırılan uygulamalardan kimlik doğrulama öğreticisi.

Kapsayıcı oluşturma

nesnesinde create_container yöntemini blob_service_client çağırarak depolama hesabınızda yeni bir kapsayıcı oluşturun. Bu örnekte kod, benzersiz olduğundan emin olmak için kapsayıcı adına bir GUID değeri ekler.

Bu kodu bloğun try sonuna ekleyin:

# Create a unique name for the container
container_name = str(uuid.uuid4())

# Create the container
container_client = blob_service_client.create_container(container_name)

Kapsayıcı oluşturma hakkında daha fazla bilgi edinmek ve daha fazla kod örneği keşfetmek için bkz . Python ile blob kapsayıcısı oluşturma.

Önemli

Kapsayıcı adlarının küçük harfle yazılması gerekir. Kapsayıcıları ve blobları adlandırma hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Bunlara Başvurma.

Blobları kapsayıcıya yükleme

upload_blob kullanarak kapsayıcıya blob yükleme. Örnek kod, kapsayıcıya yüklemek için yerel veri dizininde bir metin dosyası oluşturur.

Bu kodu bloğun try sonuna ekleyin:

# Create a local directory to hold blob data
local_path = "./data"
os.mkdir(local_path)

# Create a file in the local data directory to upload and download
local_file_name = str(uuid.uuid4()) + ".txt"
upload_file_path = os.path.join(local_path, local_file_name)

# Write text to the file
file = open(file=upload_file_path, mode='w')
file.write("Hello, World!")
file.close()

# Create a blob client using the local file name as the name for the blob
blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)

print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

# Upload the created file
with open(file=upload_file_path, mode="rb") as data:
    blob_client.upload_blob(data)

Blobları karşıya yükleme hakkında daha fazla bilgi edinmek ve daha fazla kod örneği keşfetmek için bkz . Python ile blob yükleme.

Kapsayıcıdaki blobları listeleme

list_blobs yöntemini çağırarak kapsayıcıdaki blobları listeleyin. Bu durumda kapsayıcıya yalnızca bir blob eklendiğinden listeleme işlemi yalnızca bu blobu döndürür.

Bu kodu bloğun try sonuna ekleyin:

print("\nListing blobs...")

# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
    print("\t" + blob.name)

Blobları listeleme hakkında daha fazla bilgi edinmek ve daha fazla kod örneği keşfetmek için bkz . Python ile blobları listeleme.

Blob’ları indirme

download_blob yöntemini çağırarak daha önce oluşturulmuş blobu indirin. Örnek kod, her iki dosyayı da yerel dosya sisteminde görebilmeniz için dosya adına "İnDİr" son ekini ekler.

Bu kodu bloğun try sonuna ekleyin:

# Download the blob to a local file
# Add 'DOWNLOAD' before the .txt extension so you can see both files in the data directory
download_file_path = os.path.join(local_path, str.replace(local_file_name ,'.txt', 'DOWNLOAD.txt'))
container_client = blob_service_client.get_container_client(container= container_name) 
print("\nDownloading blob to \n\t" + download_file_path)

with open(file=download_file_path, mode="wb") as download_file:
 download_file.write(container_client.download_blob(blob.name).readall())

Blobları indirme hakkında daha fazla bilgi edinmek ve daha fazla kod örneği keşfetmek için bkz . Python ile blob indirme.

Kapsayıcı silme

Aşağıdaki kod, delete_container yöntemini kullanarak kapsayıcının tamamını kaldırarak uygulamanın oluşturduğu kaynakları temizler. İsterseniz yerel dosyaları da silebilirsiniz.

Uygulama blob, kapsayıcı ve yerel dosyaları silmeden önce çağırarak input() kullanıcı girişi için duraklatılır. Kaynakların silinmeden önce doğru oluşturulduğunu doğrulayın.

Bu kodu bloğun try sonuna ekleyin:

# Clean up
print("\nPress the Enter key to begin clean up")
input()

print("Deleting blob container...")
container_client.delete_container()

print("Deleting the local source and downloaded files...")
os.remove(upload_file_path)
os.remove(download_file_path)
os.rmdir(local_path)

print("Done")

Kapsayıcı silme hakkında daha fazla bilgi edinmek ve daha fazla kod örneği keşfetmek için bkz . Python ile blob kapsayıcısını silme ve geri yükleme.

Kodu çalıştırma

Bu uygulama, yerel klasörünüzde bir test dosyası oluşturur ve Azure Blob Depolama yükler. Örnek daha sonra kapsayıcıdaki blobları listeler ve dosyayı yeni bir adla indirir. Eski ve yeni dosyaları karşılaştırabilirsiniz.

blob_quickstart.py dosyasını içeren dizine gidin, ardından aşağıdaki python komutu yürüterek uygulamayı çalıştırın:

python blob_quickstart.py

Uygulamanın çıkışı aşağıdaki örneğe benzer (okunabilirlik için atlanmış UUID değerleri):

Azure Blob Storage Python quickstart sample

Uploading to Azure Storage as blob:
        quickstartUUID.txt

Listing blobs...
        quickstartUUID.txt

Downloading blob to
        ./data/quickstartUUIDDOWNLOAD.txt

Press the Enter key to begin clean up

Deleting blob container...
Deleting the local source and downloaded files...
Done

Temizleme işlemine başlamadan önce iki dosya için veri klasörünüzü denetleyin. Bunları karşılaştırabilir ve aynı olduklarını gözlemleyebilirsiniz.

Kaynakları temizleme

Dosyaları doğruladıktan ve testi tamamladıktan sonra, depolama hesabında oluşturduğunuz kapsayıcıyla birlikte test dosyalarını silmek için Enter tuşuna basın. Kaynakları silmek için Azure CLI'yi de kullanabilirsiniz.

Hızlı başlangıcı tamamladığınızda, aşağıdaki komutu çalıştırarak oluşturduğunuz kaynakları temizleyebilirsiniz:

azd down

Kaynakların silinmesini onaylamanız istenir. Onaylamak için girin y .

Sonraki adım