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
- Etkin aboneliği olan Azure hesabı - ücretsiz bir hesap oluşturun
- Azure Depolama hesabı - depolama hesabı oluşturma
- Python 3.8+
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Python 3.8+
- Azure Geliştirici CLI'sı
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.
Konsol penceresinde (PowerShell veya Bash gibi) proje için yeni bir dizin oluşturun:
mkdir blob-quickstart
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:
- Kod düzenleyicinizde yeni bir metin dosyası açın.
- Deyimleri ekleyin
import
, programın yapısını oluşturun ve aşağıda gösterildiği gibi temel özel durum işlemeyi ekleyin. - 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ındanazd 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:
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:
- Azure'da kimlik doğrulaması ve blob verilerine erişim yetkisi verme
- Kapsayıcı oluşturma
- Blobları kapsayıcıya yükleme
- Kapsayıcıdaki blobları listeleme
- Blobları indirme
- Kapsayıcı silme
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.
Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.
Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.
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.
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.
İ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.
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:
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
kullanmak
DefaultAzureCredential
iç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
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)
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.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
.