Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Depolama'daki bloblar kapsayıcılar halinde düzenlenir. Blobu karşıya yükleyebilmeniz için önce bir kapsayıcı oluşturmanız gerekir. Bu makalede Python için Azure Depolama istemci kitaplığı ile kapsayıcı oluşturma adımları gösterilmektedir.
Zaman uyumsuz API'leri kullanarak blob kapsayıcıları oluşturma hakkında bilgi edinmek için bkz Asenkron olarak kapsayıcı oluşturma.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Python 3.8+
Ortamınızı ayarlama
Mevcut bir projeniz yoksa, bu bölümde Python için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Diğer ayrıntılar için bkz. Azure Blob Depolama ve Python'ı kullanmaya başlama.
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Paketleri yükleme
kullanarak pip installaşağıdaki paketleri yükleyin:
pip install azure-storage-blob azure-identity
İçe aktarma ifadeleri ekleyin
Aşağıdaki import deyimlerini ekleyin:
from azure.core.exceptions import ResourceExistsError
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Yetkilendirme
Yetkilendirme mekanizması, kapsayıcı oluşturmak 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 daha yüksek düzey gereklidir. Daha fazla bilgi edinmek için Kapsayıcı Oluşturma (REST API) yetkilendirme kılavuzuna bakın.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun. Aşağıdaki örnekte yetkilendirme için kullanarak DefaultAzureCredential bir istemci nesnesinin nasıl oluşturulacağı gösterilmektedir:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
Ayrıca, doğrudan veya nesnesinden belirli kapsayıcılar veya BlobServiceClient için istemci nesneleri oluşturabilirsiniz. İ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.
Kapsayıcı adlandırma hakkında
Kapsayıcı adı, kapsayıcıyı veya bloblarını ele almak için kullanılan benzersiz URI'nin bir parçasını oluşturacağı için geçerli bir DNS adı olmalıdır. Kapsayıcıyı adlandırırken şu kuralları izleyin:
- Kapsayıcı adları 3 ila 63 karakter uzunluğunda olabilir.
- Kapsayıcı adları bir harf veya sayı ile başlamalıdır ve yalnızca küçük harf, sayı ve tire (-) karakteri içerebilir.
- Kapsayıcı adlarında ardışık tire karakterlerine izin verilmez.
Kapsayıcı kaynağının URI'si aşağıdaki gibi biçimlendirilir:
https://my-account-name.blob.core.windows.net/my-container-name
Kapsayıcı oluşturma
Kapsayıcı oluşturmak için BlobServiceClient sınıfından aşağıdaki yöntemi çağırın:
ContainerClient sınıfından aşağıdaki yöntemi kullanarak da bir kapsayıcı oluşturabilirsiniz:
Kapsayıcılar depolama hesabının hemen altında oluşturulur. Bir kapsayıcıyı başka bir kapsayıcının altına iç içe yerleştirmek mümkün değildir. Aynı ada sahip bir kapsayıcı zaten varsa bir istisna fırlatılır.
Aşağıdaki örnek, BlobServiceClient nesnesinden bir kapsayıcı oluşturur.
def create_blob_container(self, blob_service_client: BlobServiceClient, container_name):
try:
container_client = blob_service_client.create_container(name=container_name)
except ResourceExistsError:
print('A container with this name already exists')
Kök kapsayıcıyı oluşturma
Kök kapsayıcı, depolama hesabınız için varsayılan kapsayıcı görevi görür. Her depolama hesabının $root olarak adlandırılması gereken bir kök kapsayıcısı olabilir. Kök kapsayıcı açıkça oluşturulmalıdır veya silinmelidir.
Kök kapsayıcı adını eklemeden kök kapsayıcıda depolanan bir bloba başvurabilirsiniz. Kök kapsayıcı, depolama hesabı hiyerarşisinin en üst düzeyinde bir bloba başvurmanızı sağlar. Örneğin, kök kapsayıcıdaki bir bloba aşağıdaki gibi başvurabilirsiniz:
https://accountname.blob.core.windows.net/default.html
Aşağıdaki örnek, $root kapsayıcı adıyla yeni bir ContainerClient nesnesi oluşturur ve depolama hesabında henüz mevcut değilse kapsayıcıyı oluşturur.
def create_blob_root_container(self, blob_service_client: BlobServiceClient):
container_client = blob_service_client.get_container_client(container="$root")
# Create the root container if it doesn't already exist
if not container_client.exists():
container_client.create_container()
Eşzamansız olarak bir kapsayıcı oluştur
Python için Azure Blob Depolama istemci kitaplığı, zaman uyumsuz bir blob kapsayıcısı oluşturmayı destekler. Proje kurulum gereksinimleri hakkında daha fazla bilgi edinmek için bkz . Zaman uyumsuz programlama.
Zaman uyumsuz API'leri kullanarak kapsayıcı oluşturmak için şu adımları izleyin:
Aşağıdaki içeri aktarma deyimlerini ekleyin:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient from azure.core.exceptions import ResourceExistsErrorkullanarak
asyncio.runprogramı çalıştırmak için kod ekleyin. Bu işlev, örneğimizdemain()şeklinde geçirilen eş yordamı çalıştırır veasyncioolay döngüsünü yönetir. Korotinler async/await söz dizimi ile tanımlanır. Bu örnekte,main()coroutine önceBlobServiceClientkullanarak üst düzeyiasync witholuşturur, ardından kapsayıcıyı oluşturan 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 = ContainerSamples() # TODO: Replace <storage-account-name> with your 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: await sample.create_blob_container(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())Kapsayıcı oluşturmak için kod ekleyin. Kod, zaman uyumlu örnekle aynıdır, yalnızca yöntem
asyncanahtar kelimesiyle bildirilir veawaityöntemi çağrılırkencreate_containeranahtar kelimesi kullanılır.async def create_blob_container(self, blob_service_client: BlobServiceClient, container_name): try: container_client = await blob_service_client.create_container(name=container_name) except ResourceExistsError: print('A container with this name already exists')
Bu temel kurulumla, bu makaledeki diğer örnekleri async/await söz dizimini kullanarak eş yordam olarak uygulayabilirsiniz.
Kaynaklar
Python için Azure Blob Depolama istemci kitaplığını kullanarak kapsayıcı oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
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. Kapsayıcı oluşturmaya yönelik istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:
- Kapsayıcı Oluşturma (REST API)
İstemci kitaplığı kaynakları
İlgili içerik
- Bu makale, Python için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Python uygulamanızı oluşturma makalesinde geliştirici kılavuzu makalelerinin tam listesine bakın.