Pustaka klien Azure Storage File Share untuk Python - versi 12.15.0
Penyimpanan Azure File Share menawarkan berbagi file yang dikelola sepenuhnya di cloud yang dapat diakses melalui protokol Server Message Block (SMB) standar industri. Berbagi file Azure dapat dipasang bersamaan dengan penyebaran Windows, Linux, dan macOS cloud atau lokal. Selain itu, berbagi file Azure dapat di-cache di Windows Server dengan Azure File Sync untuk akses cepat di dekat tempat data digunakan.
Azure file share bisa digunakan untuk:
- Ganti atau lengkapi server file lokal
- Aplikasi "Angkat dan geser"
- Menyederhanakan pengembangan cloud dengan pengaturan aplikasi bersama, berbagi diagnostik, dan alat Dev/Test/Debug
Kode sumber | Paket (PyPI) | Paket (Conda) | Dokumentasi | referensi APIDokumentasi | produkSampel
Memulai
Prasyarat
- Python 3.7 atau yang lebih baru diharuskan untuk menggunakan paket ini. Untuk detail selengkapnya, silakan baca halaman kami di Azure SDK untuk kebijakan dukungan versi Python.
- Anda harus memiliki langganan Azure dan akun penyimpanan Azure untuk menggunakan paket ini.
Instal paketnya
Instal pustaka klien Azure Storage File Share untuk Python dengan pip:
pip install azure-storage-file-share
Buat akun penyimpanan
Jika Anda ingin membuat akun penyimpanan baru, Anda dapat menggunakan Portal Microsoft Azure, Azure PowerShell, atau Azure CLI:
# Create a new resource group to hold the storage account -
# if using an existing resource group, skip this step
az group create --name my-resource-group --location westus2
# Create the storage account
az storage account create -n my-storage-account-name -g my-resource-group
Membuat klien
Pustaka klien Azure Storage File Share untuk Python memungkinkan Anda berinteraksi dengan empat jenis sumber daya: akun penyimpanan itu sendiri, berbagi file, direktori, dan file. Interaksi dengan sumber daya ini dimulai dengan instans klien. Untuk membuat objek klien, Anda memerlukan URL layanan file akun penyimpanan dan kredensial yang memungkinkan Anda mengakses akun penyimpanan:
from azure.storage.fileshare import ShareServiceClient
service = ShareServiceClient(account_url="https://<my-storage-account-name>.file.core.windows.net/", credential=credential)
Mencari URL akun
Anda dapat menemukan URL layanan file akun penyimpanan menggunakan Portal Microsoft Azure, Azure PowerShell, atau Azure CLI:
# Get the file service URL for the storage account
az storage account show -n my-storage-account-name -g my-resource-group --query "primaryEndpoints.file"
Jenis kredensial
Parameter credential
dapat disediakan dalam sejumlah formulir yang berbeda, tergantung pada jenis otorisasi yang ingin Anda gunakan:
Untuk menggunakan token tanda tangan akses bersama (SAS), berikan token sebagai string. Jika URL akun Anda menyertakan token SAS, hilangkan parameter kredensial. Anda dapat membuat token SAS dari Portal Microsoft Azure di bawah "Tanda tangan akses bersama" atau menggunakan salah
generate_sas()
satu fungsi untuk membuat token sas untuk akun penyimpanan, berbagi, atau file:from datetime import datetime, timedelta from azure.storage.fileshare import ShareServiceClient, generate_account_sas, ResourceTypes, AccountSasPermissions sas_token = generate_account_sas( account_name="<storage-account-name>", account_key="<account-access-key>", resource_types=ResourceTypes(service=True), permission=AccountSasPermissions(read=True), expiry=datetime.utcnow() + timedelta(hours=1) ) share_service_client = ShareServiceClient(account_url="https://<my_account_name>.file.core.windows.net", credential=sas_token)
Untuk menggunakan kunci bersama akun penyimpanan (kunci akun atau kunci akses), berikan kunci sebagai string. Ini dapat ditemukan di Portal Microsoft Azure di bawah bagian "Kunci Akses" atau dengan menjalankan perintah Azure CLI berikut:
az storage account keys list -g MyResourceGroup -n MyStorageAccount
Gunakan kunci sebagai parameter kredensial untuk mengautentikasi klien:
from azure.storage.fileshare import ShareServiceClient service = ShareServiceClient(account_url="https://<my_account_name>.file.core.windows.net", credential="<account_access_key>")
Membuat klien dari string koneksi
Bergantung pada kasus penggunaan dan metode otorisasi, Anda mungkin lebih suka menginisialisasi instans klien dengan string koneksi penyimpanan alih-alih memberikan URL akun dan kredensial secara terpisah. Untuk melakukan ini, teruskan string koneksi penyimpanan ke metode kelas klienfrom_connection_string
:
from azure.storage.fileshare import ShareServiceClient
connection_string = "DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxx;EndpointSuffix=core.windows.net"
service = ShareServiceClient.from_connection_string(conn_str=connection_string)
string koneksi ke akun penyimpanan Anda dapat ditemukan di Portal Microsoft Azure di bagian "Kunci Akses" atau dengan menjalankan perintah CLI berikut:
az storage account show-connection-string -g MyResourceGroup -n MyStorageAccount
Konsep utama
Komponen berikut membentuk Azure File Share Service:
- Akun penyimpanan itu sendiri
- Berbagi file dalam akun penyimpanan
- Hierarki direktori opsional dalam berbagi file
- File dalam berbagi file, yang mungkin berukuran hingga 1 TiB
Pustaka klien Azure Storage File Share untuk Python memungkinkan Anda berinteraksi dengan masing-masing komponen ini melalui penggunaan objek klien khusus.
Klien Asinkron
Pustaka ini mencakup API asinkron lengkap yang didukung pada Python 3.5+. Untuk menggunakannya, Anda harus menginstal transportasi asinkron terlebih dahulu, seperti aiohttp. Lihat dokumentasi azure-core untuk informasi selengkapnya.
Klien dan kredensial asinkron harus ditutup ketika tidak lagi diperlukan. Objek ini adalah manajer konteks asinkron dan menentukan metode asinkron close
.
Klien
Empat klien yang berbeda disediakan untuk berinteraksi dengan berbagai komponen Layanan Berbagi File:
- ShareServiceClient - klien ini mewakili interaksi dengan akun penyimpanan Azure itu sendiri, dan memungkinkan Anda memperoleh instans klien yang telah dikonfigurasi sebelumnya untuk mengakses berbagi file di dalamnya. Ini menyediakan operasi untuk mengambil dan mengonfigurasi properti layanan serta mencantumkan, membuat, dan menghapus berbagi dalam akun. Untuk melakukan operasi pada berbagi tertentu, ambil klien menggunakan metode .
get_share_client
- ShareClient - klien ini mewakili interaksi dengan berbagi file tertentu (yang belum ada), dan memungkinkan Anda memperoleh instans klien yang telah dikonfigurasi sebelumnya untuk mengakses direktori dan file di dalamnya. Ini menyediakan operasi untuk membuat, menghapus, mengonfigurasi, atau membuat rekam jepret dari berbagi dan menyertakan operasi untuk membuat dan menghitung konten direktori di dalamnya. Untuk melakukan operasi pada direktori atau file tertentu, ambil klien menggunakan
get_directory_client
metode atauget_file_client
. - ShareDirectoryClient - klien ini mewakili interaksi dengan direktori tertentu (yang belum ada). Ini menyediakan operasi untuk membuat, menghapus, atau menghitung konten subdirektori langsung atau berlapis, dan mencakup operasi untuk membuat dan menghapus file di dalamnya. Untuk operasi yang berkaitan dengan subdirektori atau file tertentu, klien untuk entitas tersebut
get_subdirectory_client
juga dapat diambil menggunakan fungsi danget_file_client
. - ShareFileClient - klien ini mewakili interaksi dengan file tertentu (yang belum ada). Ini menyediakan operasi untuk mengunggah, mengunduh, membuat, menghapus, dan menyalin file.
Untuk detail tentang pembatasan penamaan jalur, lihat Penamaan dan Referensi Berbagi, Direktori, File, dan Metadata.
Contoh
Bagian berikut ini menyediakan beberapa cuplikan kode yang mencakup beberapa tugas Berbagi File Penyimpanan yang paling umum, termasuk:
Membuat berbagi file
Membuat berbagi file untuk menyimpan file Anda
from azure.storage.fileshare import ShareClient
share = ShareClient.from_connection_string(conn_str="<connection_string>", share_name="myshare")
share.create_share()
Menggunakan klien asinkron untuk membuat berbagi file
from azure.storage.fileshare.aio import ShareClient
share = ShareClient.from_connection_string(conn_str="<connection_string>", share_name="myshare")
await share.create_share()
Mengunggah file
Mengunggah file ke berbagi
from azure.storage.fileshare import ShareFileClient
file_client = ShareFileClient.from_connection_string(conn_str="<connection_string>", share_name="myshare", file_path="my_file")
with open("./SampleSource.txt", "rb") as source_file:
file_client.upload_file(source_file)
Mengunggah file secara asinkron
from azure.storage.fileshare.aio import ShareFileClient
file_client = ShareFileClient.from_connection_string(conn_str="<connection_string>", share_name="myshare", file_path="my_file")
with open("./SampleSource.txt", "rb") as source_file:
await file_client.upload_file(source_file)
Mengunduh file
Mengunduh file dari berbagi
from azure.storage.fileshare import ShareFileClient
file_client = ShareFileClient.from_connection_string(conn_str="<connection_string>", share_name="myshare", file_path="my_file")
with open("DEST_FILE", "wb") as file_handle:
data = file_client.download_file()
data.readinto(file_handle)
Mengunduh file secara asinkron
from azure.storage.fileshare.aio import ShareFileClient
file_client = ShareFileClient.from_connection_string(conn_str="<connection_string>", share_name="myshare", file_path="my_file")
with open("DEST_FILE", "wb") as file_handle:
data = await file_client.download_file()
await data.readinto(file_handle)
Mencantumkan konten direktori
Mencantumkan semua direktori dan file di bawah direktori induk
from azure.storage.fileshare import ShareDirectoryClient
parent_dir = ShareDirectoryClient.from_connection_string(conn_str="<connection_string>", share_name="myshare", directory_path="parent_dir")
my_list = list(parent_dir.list_directories_and_files())
print(my_list)
Mencantumkan konten direktori secara asinkron
from azure.storage.fileshare.aio import ShareDirectoryClient
parent_dir = ShareDirectoryClient.from_connection_string(conn_str="<connection_string>", share_name="myshare", directory_path="parent_dir")
my_files = []
async for item in parent_dir.list_directories_and_files():
my_files.append(item)
print(my_files)
Konfigurasi Opsional
Argumen kata kunci opsional yang dapat diteruskan di tingkat klien dan per operasi.
Konfigurasi Kebijakan Coba Lagi
Gunakan argumen kata kunci berikut saat membuat instans klien untuk mengonfigurasi kebijakan coba lagi:
- retry_total (int): Jumlah total percobaan ulang yang diizinkan. Lebih diutamakan daripada hitungan lain.
retry_total=0
Teruskan jika Anda tidak ingin mencoba kembali permintaan. Default ke 10. - retry_connect (int): Berapa banyak kesalahan terkait koneksi yang akan diulang. Default ke 3.
- retry_read (int): Berapa kali untuk mencoba kembali kesalahan baca. Default ke 3.
- retry_status (int): Berapa kali untuk mencoba kembali kode status yang buruk. Default ke 3.
- retry_to_secondary (bool): Apakah permintaan harus dicoba kembali ke sekunder, jika dapat.
Ini hanya boleh diaktifkan dari akun RA-GRS yang digunakan dan data yang berpotensi kedaluarsa dapat ditangani.
Default ke
False
.
Konfigurasi klien/per operasi lainnya
Argumen kata kunci konfigurasi opsional lainnya yang dapat ditentukan pada klien atau per operasi.
Argumen kata kunci klien:
- connection_timeout (int): Jumlah detik klien akan menunggu untuk membuat koneksi ke server. Default ke 20 detik.
- read_timeout (int): Jumlah detik klien akan menunggu, antara operasi baca berturut-turut, untuk respons dari server. Ini adalah batas waktu tingkat soket dan tidak terpengaruh oleh ukuran data keseluruhan. Batas waktu baca sisi klien akan dicoba ulang secara otomatis. Default ke 60 detik.
- transport (Any): Transportasi yang disediakan pengguna untuk mengirim permintaan HTTP.
Argumen kata kunci per operasi:
- raw_response_hook (dapat dipanggil): Panggilan balik yang diberikan menggunakan respons yang dikembalikan dari layanan.
- raw_request_hook (dapat dipanggil): Panggilan balik yang diberikan menggunakan permintaan sebelum dikirim ke layanan.
- client_request_id (str): Identifikasi permintaan yang ditentukan pengguna opsional.
- user_agent (str): Menambahkan nilai kustom ke header agen pengguna untuk dikirim dengan permintaan.
- logging_enable (bool): Mengaktifkan pengelogan di tingkat DEBUG. Default ke False. Juga dapat diteruskan di tingkat klien untuk mengaktifkannya untuk semua permintaan.
- logging_body (bool): Memungkinkan pengelogan isi permintaan dan respons. Default ke False. Juga dapat diteruskan di tingkat klien untuk mengaktifkannya untuk semua permintaan.
- header (dict): Meneruskan header kustom sebagai kunci, pasangan nilai. Misalnya
headers={'CustomValue': value}
Pemecahan Masalah
Umum
Klien File Penyimpanan menaikkan pengecualian yang ditentukan dalam Azure Core.
Daftar ini dapat digunakan untuk referensi untuk menangkap pengecualian yang dilemparkan. Untuk mendapatkan kode kesalahan tertentu dari pengecualian, gunakan error_code
atribut , yaitu, exception.error_code
.
Pembuatan Log
Pustaka ini menggunakan pustaka pengelogan standar untuk pengelogan. Informasi dasar tentang sesi HTTP (URL, header, dll.) dicatat di tingkat INFO.
Pengelogan tingkat DEBUG terperinci, termasuk isi permintaan/respons dan header yang tidak diredaktifkan, dapat diaktifkan pada klien dengan logging_enable
argumen :
import sys
import logging
from azure.storage.fileshare import ShareServiceClient
# Create a logger for the 'azure.storage.fileshare' SDK
logger = logging.getLogger('azure.storage.fileshare')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# This client will log detailed information about its HTTP sessions, at DEBUG level
service_client = ShareServiceClient.from_connection_string("your_connection_string", logging_enable=True)
Demikian pula, logging_enable
dapat mengaktifkan pengelogan mendetail untuk satu operasi, meskipun tidak diaktifkan untuk klien:
service_client.get_service_properties(logging_enable=True)
Langkah berikutnya
Lebih banyak kode sampel
Mulai menggunakan sampel Berbagi File kami.
Beberapa sampel Storage File Share Python SDK tersedia untuk Anda di repositori GitHub SDK. Sampel ini menyediakan kode contoh untuk skenario tambahan yang biasa ditemui saat bekerja dengan Berbagi File Penyimpanan:
file_samples_hello_world.py (versi asinkron) - Contoh yang ditemukan dalam artikel ini:
- Pembuatan klien
- Membuat berbagi file
- Unggah file
file_samples_authentication.py (versi asinkron) - Contoh untuk mengautentikasi dan membuat klien:
- Dari string koneksi
- Dari kunci akses bersama
- Dari token tanda tangan akses bersama
file_samples_service.py (versi asinkron) - Contoh untuk berinteraksi dengan layanan file:
- Mendapatkan dan mengatur properti layanan
- Membuat, mencantumkan, dan menghapus berbagi
- Mendapatkan klien berbagi
file_samples_share.py (versi asinkron) - Contoh untuk berinteraksi dengan berbagi file:
- Buat rekam jepret berbagi
- Mengatur kuota dan metadata berbagi
- Membuat daftar direktori dan file
- Mendapatkan direktori atau klien file untuk berinteraksi dengan entitas tertentu
file_samples_directory.py (versi asinkron) - Contoh untuk berinteraksi dengan direktori:
- Membuat direktori dan menambahkan file
- Membuat dan menghapus subdirektori
- Mendapatkan klien subdirektori
file_samples_client.py (versi asinkron) - Contoh untuk berinteraksi dengan file:
- Membuat, mengunggah, mengunduh, dan menghapus file
- Menyalin file dari URL
Dokumentasi tambahan
Untuk dokumentasi yang lebih luas tentang penyimpanan Azure File Share, lihat dokumentasi penyimpanan Azure File Share di docs.microsoft.com.
Berkontribusi
Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.
Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Tata Tertib atau hubungi opencode@microsoft.com untuk pertanyaan atau komentar lainnya.
Azure SDK for Python
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk