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.
Saat Anda mencantumkan kontainer di akun Azure Storage dari kode, Anda dapat menentukan beberapa opsi untuk mengelola bagaimana hasil dikembalikan dari Azure Storage. Artikel ini memperlihatkan cara mencantumkan kontainer menggunakan pustaka klien Azure Storage untuk Python.
Untuk mempelajari tentang mencantumkan kontainer blob menggunakan API asinkron, lihat Mencantumkan kontainer secara asinkron.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Python 3.8+
Siapkan 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.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
Otorisasi
Mekanisme otorisasi harus memiliki izin yang diperlukan untuk mendata kontainer blob. Untuk otorisasi dengan Microsoft Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Kontributor Data Blob Penyimpanan atau yang lebih tinggi. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Kontainer Daftar (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 opsi daftar kontainer
Saat mencantumkan kontainer dari kode, Anda dapat menentukan opsi untuk mengelola bagaimana hasil dikembalikan dari Azure Storage. Anda dapat menentukan jumlah hasil yang akan dikembalikan di setiap set hasil, lalu mengambil set berikutnya. Anda juga dapat memfilter hasil dengan awalan, dan mengembalikan metadata kontainer dengan hasilnya. Opsi ini dijelaskan di bagian berikut.
Untuk mencantumkan kontainer di akun penyimpanan, panggil metode berikut:
Metode ini mengembalikan tipe ContainerProperties yang dapat diulang. Kontainer diurutkan secara leksikografis berdasarkan nama.
Mengelola berapa banyak hasil yang dikembalikan
Secara default, operasi listingan mengembalikan hingga 5000 hasil sekaligus. Untuk mengembalikan serangkaian hasil yang lebih kecil, berikan nilai bukan nol untuk results_per_page argumen kata kunci.
Memfilter hasil dengan prefiks
Untuk memfilter daftar kontainer, tentukan string atau karakter untuk name_starts_with argumen kata kunci. String awalan dapat menyertakan satu atau lebih karakter. Azure Storage kemudian mengembalikan kontainer yang namanya dimulai dengan prefiks tersebut saja.
Sertakan metadata kontainer
Untuk menyertakan metadata kontainer dengan hasil, atur include_metadata argumen kata kunci ke True. Azure Storage menyertakan metadata dengan setiap kontainer yang dikembalikan, sehingga Anda tidak perlu mengambil metadata kontainer secara terpisah.
Sertakan kontainer yang dihapus
Untuk menyertakan kontainer yang dihapus sementara dengan hasilnya, atur include_deleted argumen kata kunci ke True.
Contoh kode
Contoh berikut mencantumkan semua kontainer dan metadata. Anda dapat menyertakan metadata kontainer dengan mengatur include_metadata ke True:
def list_containers(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(include_metadata=True)
for container in containers:
print(container['name'], container['metadata'])
Contoh berikut hanya mencantumkan kontainer yang dimulai dengan awalan yang ditentukan dalam name_starts_with parameter:
def list_containers_prefix(self, blob_service_client: BlobServiceClient):
containers = blob_service_client.list_containers(name_starts_with='test-')
for container in containers:
print(container['name'])
Anda juga dapat menentukan batas jumlah hasil per halaman. Contoh ini meneruskan results_per_page dan membagi hasilnya ke dalam halaman-halaman.
def list_containers_pages(self, blob_service_client: BlobServiceClient):
i=0
all_pages = blob_service_client.list_containers(results_per_page=5).by_page()
for container_page in all_pages:
i += 1
print(f"Page {i}")
for container in container_page:
print(container['name'])
Mencantumkan kontainer secara asinkron
Pustaka klien Azure Blob Storage untuk Python mendukung daftar kontainer secara asinkron. Untuk mempelajari selengkapnya tentang persyaratan penyiapan proyek, lihat Pemrograman asinkron.
Ikuti langkah-langkah ini untuk mencantumkan kontainer menggunakan API asinkron:
Tambahkan pernyataan import berikut:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClientTambahkan kode untuk menjalankan program menggunakan
asyncio.run. Dalam contoh kami, fungsi ini menjalankan coroutine yang diteruskan,main(), dan mengelola peristiwa perulanganasyncio. Koroutin dinyatakan dengan sintaks async/await. Dalam contoh ini,main()coroutine pertama-tama membuat tingkatBlobServiceClientatas menggunakanasync with, lalu memanggil metode yang mencantumkan 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.list_containers(blob_service_client) if __name__ == '__main__': asyncio.run(main())Tambahkan kode untuk mencantumkan kontainer. Kode sama dengan contoh sinkron, kecuali bahwa metode dideklarasikan dengan
asynckata kunci danasync fordigunakan saat memanggillist_containersmetode .async def list_containers(self, blob_service_client: BlobServiceClient): async for container in blob_service_client.list_containers(include_metadata=True): print(container['name'], container['metadata'])
Dengan pengaturan dasar ini, Anda dapat menerapkan contoh lain dalam artikel ini sebagai korutin menggunakan sintaks async/await.
Sumber
Untuk mempelajari selengkapnya tentang mencantumkan 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 mencantumkan kontainer menggunakan operasi REST API berikut:
- Daftar Kontainer (REST API)
Sumber daya pustaka klien
Lihat juga
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.