Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Blob di Azure Storage diatur ke dalam kontainer. Sebelum mengunggah blob, Anda harus terlebih dahulu membuat kontainer. Artikel ini memperlihatkan cara membuat kontainer dengan pustaka klien Azure Storage untuk Python.
Untuk mempelajari tentang membuat kontainer blob menggunakan API asinkron, lihat Membuat kontainer secara asinkron.
Prerequisites
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Python 3.8+
Atur lingkungan Anda
Jika Anda tidak memiliki proyek yang sudah ada, bagian ini menunjukkan kepada Anda cara menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk Python. Untuk detail selengkapnya, lihat Mulai menggunakan Azure Blob Storage dan Python.
Untuk bekerja dengan contoh kode dalam artikel ini, ikuti langkah-langkah ini untuk menyiapkan proyek Anda.
Memasang paket
Instal paket berikut menggunakan pip install:
pip install azure-storage-blob azure-identity
Menambahkan pernyataan impor
Tambahkan pernyataan import berikut:
from azure.core.exceptions import ResourceExistsError
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Authorization
Mekanisme otorisasi harus memiliki izin yang diperlukan untuk membuat kontainer. Untuk otorisasi dengan Microsoft Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Storage Blob Data Contributor atau yang lebih tinggi. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Membuat Kontainer (REST API).
Membuat objek klien
Untuk menyambungkan aplikasi ke Blob Storage, buat instans BlobServiceClient. Contoh berikut menunjukkan cara membuat objek klien menggunakan DefaultAzureCredential untuk otorisasi:
# 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)
Anda juga dapat membuat objek klien untuk kontainer atau blob tertentu, baik secara langsung atau dari BlobServiceClient objek. Untuk mempelajari selengkapnya tentang membuat dan mengelola objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.
Tentang penamaan kontainer
Nama kontainer harus merupakan nama DNS yang valid, karena membentuk bagian dari URI unik yang digunakan untuk merujuk kontainer atau blobnya. Ikuti aturan ini saat menamai kontainer:
- Nama kontainer dapat sepanjang 3 sampai 63 karakter.
- Nama kontainer harus diawali dengan huruf atau angka, dan hanya dapat berisi huruf kecil, angka, dan karakter tanda hubung (-).
- Karakter tanda hubung berturut-turut tidak diizinkan dalam nama kontainer.
URI untuk sumber daya kontainer diformat sebagai berikut:
https://my-account-name.blob.core.windows.net/my-container-name
Membuat kontainer
Untuk membuat kontainer, panggil metode berikut dari kelas BlobServiceClient :
Anda juga dapat membuat kontainer menggunakan metode berikut dari kelas ContainerClient :
Kontainer dibuat segera di bawah akun penyimpanan. Tidak mungkin untuk menyarangkan satu kontainer di bawah kontainer lain. Pengecualian dikeluarkan jika kontainer dengan nama yang sama sudah ada.
Contoh berikut membuat kontainer dari BlobServiceClient objek:
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')
Buat kontainer root
Kontainer root berfungsi sebagai kontainer default untuk akun penyimpanan Anda. Setiap akun penyimpanan mungkin memiliki satu kontainer root, yang harus dinamakan $root. Kontainer root harus dibuat atau dihapus secara eksplisit.
Anda dapat merujuk blob yang disimpan dalam kontainer root tanpa menyertakan nama kontainer root. Kontainer root memungkinkan Anda untuk merujuk blob di tingkat atas hierarki akun penyimpanan. Misalnya, Anda dapat mereferensikan blob di kontainer akar sebagai berikut:
https://accountname.blob.core.windows.net/default.html
Contoh berikut membuat objek baru ContainerClient dengan nama kontainer $root, lalu membuat kontainer jika belum ada di akun penyimpanan:
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()
Membuat kontainer secara asinkron
Pustaka klien Azure Blob Storage untuk Python mendukung pembuatan kontainer blob secara asinkron. Untuk mempelajari selengkapnya tentang persyaratan penyiapan proyek, lihat Pemrograman asinkron.
Ikuti langkah-langkah ini untuk membuat kontainer menggunakan API asinkron:
Tambahkan pernyataan import berikut:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient from azure.core.exceptions import ResourceExistsErrorTambahkan kode untuk menjalankan program menggunakan
asyncio.run. Fungsi ini menjalankan coroutine yang diteruskan,main()dalam contoh kami, dan mengelola event loopasyncio. Coroutine dideklarasikan dengan sintaks async/await. Dalam contoh ini,main()coroutine pertama-tama membuat tingkatBlobServiceClientatas menggunakanasync with, lalu memanggil metode yang membuat kontainer. Perhatikan bahwa hanya klien tingkat atas yang perlu menggunakanasync with, karena klien lain yang dibuat darinya berbagi kumpulan koneksi yang sama.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())Tambahkan kode untuk membuat kontainer. Kode sama dengan contoh sinkron, kecuali bahwa metode dideklarasikan dengan
asynckata kunci danawaitkata kunci digunakan saat memanggilcreate_containermetode .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')
Dengan pengaturan dasar ini, Anda dapat menerapkan contoh lain dalam artikel ini sebagai koroutine menggunakan sintaks async/await.
Resources
Untuk mempelajari selengkapnya tentang membuat kontainer menggunakan pustaka klien Azure Blob Storage untuk Python, lihat sumber daya berikut ini.
Sampel kode
- Lihat sampel kode sinkron atau asinkron dari artikel ini (GitHub)
Operasi REST API
Azure SDK untuk Python berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma Python yang sudah dikenal. Metode pustaka klien untuk membuat kontainer menggunakan operasi REST API berikut:
- Membuat Kontainer (REST API)
Sumber daya pustaka klien
Konten terkait
- Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk Python. Untuk mempelajari lebih lanjut, lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi Python Anda.