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.
Artikel ini memperlihatkan cara menghapus kontainer dengan pustaka klien Azure Storage untuk Python. Jika Anda telah mengaktifkan penghapusan sementara kontainer, Anda dapat memulihkan kontainer yang dihapus.
Untuk mempelajari tentang menghapus kontainer blob menggunakan API asinkron, lihat Menghapus kontainer secara asinkron.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Python 3.8+
Menyiapkan 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
Authorization
Mekanisme otorisasi harus memiliki izin yang diperlukan untuk menghapus atau memulihkan kontainer. 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 Hapus Kontainer (REST API) dan Pulihkan 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.
Menghapus kontainer
Untuk menghapus kontainer di Python, gunakan metode berikut dari kelas BlobServiceClient :
Anda juga dapat menghapus kontainer menggunakan metode berikut dari kelas ContainerClient :
Setelah menghapus kontainer, Anda tidak dapat membuat wadah dengan nama yang sama setidaknya selama 30 detik. Mencoba membuat kontainer dengan nama yang sama akan gagal dengan kode 409 (Conflict)kesalahan HTTP . Operasi lain pada kontainer atau blob yang dikandungnya akan gagal dengan kode 404 (Not Found)kesalahan HTTP .
Contoh berikut menggunakan BlobServiceClient objek untuk menghapus kontainer yang ditentukan:
def delete_container(self, blob_service_client: BlobServiceClient, container_name):
container_client = blob_service_client.get_container_client(container=container_name)
container_client.delete_container()
Contoh berikut menunjukkan cara menghapus semua kontainer yang dimulai dengan awalan tertentu:
def delete_container_prefix(self, blob_service_client: BlobServiceClient):
container_list = list(blob_service_client.list_containers(name_starts_with="test-"))
assert len(container_list) >= 1
for container in container_list:
# Find containers with the specified prefix and delete
container_client = blob_service_client.get_container_client(container=container.name)
container_client.delete_container()
Memulihkan kontainer yang dihapus
Saat penghapusan sementara kontainer diaktifkan untuk akun penyimpanan, kontainer yang dihapus dan kontennya dapat dipulihkan dalam periode retensi tertentu. Untuk mempelajari selengkapnya tentang penghapusan sementara kontainer, lihat Mengaktifkan dan mengelola penghapusan sementara untuk kontainer. Anda dapat memulihkan kontainer yang dihapus sementara dengan memanggil metode BlobServiceClient kelas berikut:
Contoh berikut menemukan kontainer yang dihapus, mendapatkan versi kontainer yang dihapus, lalu meneruskan versi ke dalam undelete_container metode untuk memulihkan kontainer.
def restore_deleted_container(self, blob_service_client: BlobServiceClient, container_name):
container_list = list(
blob_service_client.list_containers(include_deleted=True))
assert len(container_list) >= 1
for container in container_list:
# Find the deleted container and restore it
if container.deleted and container.name == container_name:
restored_container_client = blob_service_client.undelete_container(
deleted_container_name=container.name, deleted_container_version=container.version)
Menghapus kontainer secara asinkron
Pustaka klien Azure Blob Storage untuk Python mendukung penghapusan kontainer blob secara asinkron. Untuk mempelajari selengkapnya tentang persyaratan penyiapan proyek, lihat Pemrograman asinkron.
Ikuti langkah-langkah ini untuk menghapus 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. Fungsi ini menjalankan coroutine yang diteruskan,main()dalam contoh kami, dan mengelola perulanganasyncioperistiwa. Koroutin dinyatakan dengan sintaks asinkron/tunggu. Dalam contoh ini,main()coroutine pertama-tama membuat tingkatBlobServiceClientatas menggunakanasync with, lalu memanggil metode yang menghapus 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.delete_container(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())Tambahkan kode untuk menghapus kontainer. Kode sama dengan contoh sinkron, kecuali bahwa metode dideklarasikan dengan
asynckata kunci danawaitkata kunci digunakan saat memanggildelete_containermetode .async def delete_container(self, blob_service_client: BlobServiceClient, container_name): container_client = blob_service_client.get_container_client(container=container_name) await container_client.delete_container()
Dengan pengaturan dasar ini, Anda dapat menerapkan contoh lain dalam artikel ini sebagai koroutin menggunakan sintaks asinkron/tunggu.
Sumber
Untuk mempelajari selengkapnya tentang menghapus 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 menghapus atau memulihkan kontainer menggunakan operasi REST API berikut:
- Hapus Kontainer (REST API)
- Pulihkan 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.