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 mengatur atau mengubah tingkat akses untuk blob blok menggunakan pustaka klien Azure Storage untuk Python.
Untuk mempelajari tentang mengubah tingkat akses blob menggunakan API asinkron, lihat Mengubah tingkat akses blob 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,
BlobClient,
StandardBlobTier,
RehydratePriority
)
Otorisasi
Mekanisme otorisasi harus memiliki izin yang diperlukan untuk mengatur tingkat akses 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 Mengatur Tingkat Blob.
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 tingkat akses blok blob
Untuk mengelola biaya untuk kebutuhan penyimpanan, akan sangat membantu untuk mengatur data Anda berdasarkan seberapa sering data diakses dan berapa lama perlu dipertahankan. Penyimpanan Azure menawarkan tingkat penyimpanan yang berbeda sehingga Anda dapat menyimpan data blob dengan cara yang paling hemat biaya berdasarkan cara data digunakan.
Tingkat akses untuk penyimpanan data blob
Tingkat penyimpanan Azure Storage meliputi:
- Tingkat panas - Tingkatan online yang dioptimalkan untuk menyimpan data yang sering diakses atau diubah. Tingkat panas memiliki biaya penyimpanan tertinggi tetapi biaya aksesnya paling rendah.
- Tingkat dingin - Tingkatan online yang dioptimalkan untuk menyimpan data yang jarang diakses atau diubah. Data di tingkat dingin harus disimpan selama minimal 30 hari. Tingkat dingin memiliki biaya penyimpanan yang lebih rendah dan biaya akses yang lebih tinggi dibandingkan dengan tingkat panas.
- Tingkat dingin - Tingkat online yang dioptimalkan untuk menyimpan data yang jarang diakses atau dimodifikasi. Data di tingkat dingin harus disimpan selama minimal 90 hari. Tingkat dingin memiliki biaya penyimpanan yang lebih rendah dan biaya akses yang lebih tinggi dibandingkan dengan tingkat panas.
- Tingkat arsip - Tingkatan offline yang dioptimalkan untuk menyimpan data yang jarang diakses, dan memiliki persyaratan latensi yang fleksibel, pada urutan jam. Data di tingkat arsip harus disimpan selama minimal 180 hari.
Untuk mempelajari selengkapnya tentang tingkat akses, lihat Tingkat akses untuk data blob.
Saat blob berada di tingkat akses Arsip, maka dianggap offline dan tidak dapat dibaca atau dimodifikasi. Untuk membaca atau memodifikasi data dalam blob yang diarsipkan, Anda harus terlebih dahulu merehidrasi blob ke tingkat yang dapat diakses secara online. Untuk mempelajari selengkapnya tentang rehidrasi blob dari tingkat Arsip ke tingkat daring, lihat Rehidrasi blob dari tingkat Arsip.
Batasan
Pengaturan tingkat akses hanya diperbolehkan pada blok blob. Untuk mempelajari selengkapnya tentang pembatasan pengaturan tingkat akses blob blok, lihat Mengatur Tingkat Blob (REST API).
Catatan
Untuk mengatur tingkat akses ke Cold menggunakan Python, Anda harus menggunakan versi pustaka klien minimum 12.15.0.
Mengatur tingkat akses blob selama unggahan
Anda dapat mengatur tingkat akses blob saat diunggah dengan meneruskan standard_blob_tier argumen kata kunci ke upload_blob atau upload_blob_from_url.
Contoh kode berikut menunjukkan cara mengatur tingkat akses saat mengunggah blob:
def upload_blob_access_tier(self, blob_service_client: BlobServiceClient, container_name: str, blob_name: str):
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
#Upload blob to the cool tier
with open(file=os.path.join(r'file_path', blob_name), mode="rb") as data:
blob_client = blob_client.upload_blob(data=data, overwrite=True, standard_blob_tier=StandardBlobTier.COOL)
Untuk mempelajari selengkapnya tentang mengunggah blob dengan Python, lihat Mengunggah blob dengan Python.
Ubah tingkat akses untuk blob blok yang sudah ada
Anda dapat mengubah tingkat akses blob blok yang ada dengan menggunakan fungsi berikut:
Contoh kode berikut menunjukkan cara mengubah tingkat akses untuk blob yang ada menjadi Cool:
def change_blob_access_tier(self, blob_client: BlobClient):
# Change the blob access tier to cool
blob_client.set_standard_blob_tier(StandardBlobTier.COOL)
Jika Anda merehidrasi blob yang diarsipkan, Anda dapat secara opsional meneruskan rehydrate_priority argumen kata kunci sebagai HIGH atau STANDARD.
Menyalin blob ke tingkat akses yang berbeda
Anda dapat mengubah tingkat akses blob blok yang ada dengan menentukan tingkat akses sebagai bagian dari operasi salin. Untuk mengubah tingkat akses selama operasi salin, teruskan standard_blob_tier argumen kata kunci ke start_copy_from_url. Jika Anda merehidrasi blob dari tingkat arsip menggunakan operasi salin, Anda dapat secara opsional meneruskan argumen kata kunci rehydrate_priority sebagai HIGH atau STANDARD.
Contoh kode berikut menunjukkan cara merehidrasi blob yang diarsipkan ke Hot tingkat menggunakan operasi salin:
def rehydrate_blob_using_copy(self, source_archive_blob: BlobClient, destination_rehydrated_blob: BlobClient):
# Note: the destination blob must have a different name than the source blob
# Start the copy operation - specify the rehydrate priority and blob access tier
copy_operation = dict()
copy_operation = destination_rehydrated_blob.start_copy_from_url(
source_url=source_archive_blob.url,
standard_blob_tier=StandardBlobTier.HOT,
rehydrate_priority=RehydratePriority.STANDARD,
requires_sync=False)
Untuk mempelajari selengkapnya tentang menyalin blob dengan Python, lihat Menyalin blob dengan Python.
Mengubah tingkat akses blob secara asinkron
Pustaka klien Azure Blob Storage untuk Python mendukung perubahan tingkat akses blob secara asinkron. Untuk mempelajari selengkapnya tentang persyaratan penyiapan proyek, lihat Pemrograman asinkron.
Ikuti langkah-langkah ini untuk mengubah tingkat akses blob menggunakan API asinkron:
Tambahkan pernyataan import berikut:
import asyncio from azure.storage.blob import ( StandardBlobTier ) from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import ( BlobServiceClient, BlobClient )Tambahkan kode untuk menjalankan program menggunakan
asyncio.run. Fungsi ini menjalankan coroutine yang diteruskan,main()dalam contoh kami, dan mengelola perulanganasyncioperistiwa. Coroutine dideklarasikan dengan sintaks async/await. Dalam contoh ini,main()coroutine pertama-tama membuat tingkatBlobServiceClientatas menggunakanasync with, lalu memanggil metode yang mengubah tingkat akses blob. 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 = BlobAccessTierSamples() # TODO: Replace <storage-account-name> with an 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: # Change the blob access tier to cool blob_client = blob_service_client.get_blob_client(container="sample-container", blob="sample-blob.txt") await sample.change_blob_access_tier(blob_client=blob_client) if __name__ == '__main__': asyncio.run(main())Tambahkan kode untuk mengubah tingkat akses blob. Kode sama dengan contoh sinkron, kecuali bahwa metode dideklarasikan dengan
asynckata kunci danawaitkata kunci digunakan saat memanggilset_standard_blob_tiermetode .async def change_blob_access_tier(self, blob_client: BlobClient): # Change the blob access tier to cool await blob_client.set_standard_blob_tier(StandardBlobTier.COOL)
Dengan pengaturan dasar ini, Anda dapat menerapkan contoh lain dalam artikel ini sebagai korutin menggunakan sintaks async/await.
Sumber
Untuk mempelajari selengkapnya tentang mengatur tingkat akses menggunakan pustaka klien Azure Blob Storage untuk Python, lihat sumber daya berikut ini.
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 mengatur tingkat akses menggunakan operasi REST API berikut:
- Mengatur Tingkat Blob (REST API)
Sumber daya pustaka klien
Sampel kode
- Lihat sampel kode sinkron atau asinkron dari artikel ini (GitHub)