Python için Azure Depolama Dosya Paylaşımı istemci kitaplığı - sürüm 12.15.0
Azure Dosya Paylaşımı depolama, bulutta endüstri standardı Sunucu İleti Bloğu (SMB) protokolü aracılığıyla erişilebilen tam olarak yönetilen dosya paylaşımları sunar. Azure dosya paylaşımları Windows, Linux ve macOS bulut ve şirket içi dağıtımları tarafından aynı anda bağlanabilir. Azure dosya paylaşımları ayrıca verilerin kullanıldığı yerin yakınlarında hızlı erişim sağlamak için Azure Dosya Eşitleme ile Windows Server’larda önbelleğe alınabilir.
Azure dosya paylaşımları şunları yapmak için kullanılabilir:
- Şirket içi dosya sunucularını değiştirme veya ekleme
- "Lift and shift" uygulamaları
- Paylaşılan uygulama ayarları, tanılama paylaşımı ve Geliştirme/Test/Hata Ayıklama araçlarıyla bulut geliştirmeyi basitleştirme
Kaynak kodu | Paket (PyPI) | Paket (Conda) | API başvuru belgeleri | Ürün belgeleri | Örnekleri
Başlarken
Önkoşullar
- Bu paketi kullanmak için Python 3.7 veya üzeri gereklidir. Daha fazla ayrıntı için lütfen Python için Azure SDK sürüm destek ilkesi sayfamızı okuyun.
- Bu paketi kullanmak için bir Azure aboneliğiniz ve bir Azure depolama hesabınız olmalıdır.
Paketi yükleme
Pip ile Python için Azure Depolama Dosya Paylaşımı istemci kitaplığını yükleyin:
pip install azure-storage-file-share
Depolama hesabı oluşturma
Yeni bir depolama hesabı oluşturmak istiyorsanız Azure Portalı, Azure PowerShell veya Azure CLI'yı kullanabilirsiniz:
# 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
İstemci oluşturma
Python için Azure Depolama Dosya Paylaşımı istemci kitaplığı, dört tür kaynakla etkileşim kurmanızı sağlar: depolama hesabının kendisi, dosya paylaşımları, dizinler ve dosyalar. Bu kaynaklarla etkileşim bir istemci örneğiyle başlar. İstemci nesnesi oluşturmak için depolama hesabının dosya hizmeti URL'sine ve depolama hesabına erişmenizi sağlayan bir kimlik bilgilerine ihtiyacınız olacaktır:
from azure.storage.fileshare import ShareServiceClient
service = ShareServiceClient(account_url="https://<my-storage-account-name>.file.core.windows.net/", credential=credential)
Hesap URL'sini arama
Depolama hesabının dosya hizmeti URL'sini Azure Portal, Azure PowerShell veya Azure CLI kullanarak bulabilirsiniz:
# 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"
Kimlik bilgisi türleri
Parametresi credential
, kullanmak istediğiniz yetkilendirme türüne bağlı olarak bir dizi farklı biçimde sağlanabilir:
Paylaşılan erişim imzası (SAS) belirteci kullanmak için belirteci dize olarak sağlayın. Hesap URL'niz SAS belirtecini içeriyorsa kimlik bilgisi parametresini atla. Azure Portalı'ndan "Paylaşılan erişim imzası" altında bir SAS belirteci oluşturabilir veya işlevlerden birini
generate_sas()
kullanarak depolama hesabı, paylaşım veya dosya için sas belirteci oluşturabilirsiniz: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)
Depolama hesabı paylaşılan anahtarı (diğer adıyla hesap anahtarı veya erişim anahtarı) kullanmak için anahtarı dize olarak sağlayın. Bu, Azure Portal'da "Erişim Anahtarları" bölümünün altında veya aşağıdaki Azure CLI komutunu çalıştırarak bulunabilir:
az storage account keys list -g MyResourceGroup -n MyStorageAccount
İstemcinin kimliğini doğrulamak için kimlik bilgisi parametresi olarak anahtarını kullanın:
from azure.storage.fileshare import ShareServiceClient service = ShareServiceClient(account_url="https://<my_account_name>.file.core.windows.net", credential="<account_access_key>")
İstemciyi bir bağlantı dizesi oluşturma
Kullanım örneğinize ve yetkilendirme yönteminize bağlı olarak, hesap URL'sini ve kimlik bilgilerini ayrı olarak sağlamak yerine bir depolama bağlantı dizesi ile bir istemci örneği başlatmayı tercih edebilirsiniz. Bunu yapmak için depolama bağlantı dizesi istemcinin from_connection_string
sınıf yöntemine geçirin:
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)
Depolama hesabınıza bağlantı dizesi Azure Portal'da "Erişim Anahtarları" bölümünde veya aşağıdaki CLI komutunu çalıştırarak bulabilirsiniz:
az storage account show-connection-string -g MyResourceGroup -n MyStorageAccount
Önemli kavramlar
Aşağıdaki bileşenler Azure Dosya Paylaşımı Hizmeti'ni oluşturur:
- Depolama hesabının kendisi
- Depolama hesabı içinde bir dosya paylaşımı
- Dosya paylaşımındaki isteğe bağlı dizin hiyerarşisi
- Dosya paylaşımı içinde boyutu en fazla 1 TiB olabilecek bir dosya
Python için Azure Depolama Dosya Paylaşımı istemci kitaplığı, ayrılmış bir istemci nesnesi kullanarak bu bileşenlerin her biriyle etkileşim kurmanızı sağlar.
Zaman Uyumsuz İstemciler
Bu kitaplık, Python 3.5+ üzerinde desteklenen tam bir zaman uyumsuz API içerir. Bunu kullanmak için önce aiohttp gibi bir zaman uyumsuz aktarım yüklemeniz gerekir. Daha fazla bilgi için bkz. azure-core belgeleri .
Zaman uyumsuz istemciler ve kimlik bilgileri artık gerekli olmadığında kapatılmalıdır. Bu nesneler zaman uyumsuz bağlam yöneticileridir ve zaman uyumsuz close
yöntemler tanımlar.
İstemciler
Dosya Paylaşımı Hizmeti'nin çeşitli bileşenleriyle etkileşime geçmek için dört farklı istemci sağlanır:
- ShareServiceClient - bu istemci Azure depolama hesabının kendisiyle etkileşimi temsil eder ve içindeki dosya paylaşımlarına erişmek için önceden yapılandırılmış istemci örnekleri almanıza olanak tanır. Hizmet özelliklerini alma ve yapılandırmanın yanı sıra hesaptaki paylaşımları listeleme, oluşturma ve silme işlemlerini sağlar. Belirli bir paylaşımda işlem gerçekleştirmek için yöntemini kullanarak
get_share_client
bir istemci alın. - ShareClient - bu istemci belirli bir dosya paylaşımıyla etkileşimi temsil eder (henüz mevcut değildir) ve içindeki dizinlere ve dosyalara erişmek için önceden yapılandırılmış istemci örnekleri almanıza olanak tanır. Bir paylaşımın anlık görüntülerini oluşturma, silme, yapılandırma veya oluşturma işlemlerini sağlar ve içindeki dizinlerin içeriğini oluşturma ve listeleme işlemlerini içerir. Belirli bir dizin veya dosya üzerinde işlem gerçekleştirmek için veya
get_file_client
yöntemlerini kullanarakget_directory_client
bir istemci alın. - ShareDirectoryClient - Bu istemci belirli bir dizinle etkileşimi temsil eder (henüz var olmaması gerekir). Hemen veya iç içe bir alt dizinin içeriğini oluşturmak, silmek veya listelemek için işlemler sağlar ve içindeki dosyaları oluşturma ve silme işlemlerini içerir. Belirli bir alt dizin veya dosyayla ilgili işlemler için, bu varlık için bir istemci ve
get_file_client
işlevleri kullanılarakget_subdirectory_client
da alınabilir. - ShareFileClient - bu istemci belirli bir dosyayla etkileşimi temsil eder (henüz var olmaması gerekir). Bir dosyayı karşıya yükleme, indirme, oluşturma, silme ve kopyalama işlemlerini sağlar.
Yol adlandırma kısıtlamaları hakkında ayrıntılı bilgi için bkz. Paylaşımları, Dizinleri, Dosyaları ve Meta Verileri Adlandırma ve Başvurma.
Örnekler
Aşağıdaki bölümlerde, en yaygın Depolama Dosya Paylaşımı görevlerinden bazılarını kapsayan çeşitli kod parçacıkları sağlanır:
Dosya paylaşımı oluşturma
Dosyalarınızı depolamak için dosya paylaşımı oluşturma
from azure.storage.fileshare import ShareClient
share = ShareClient.from_connection_string(conn_str="<connection_string>", share_name="myshare")
share.create_share()
Dosya paylaşımı oluşturmak için zaman uyumsuz istemciyi kullanma
from azure.storage.fileshare.aio import ShareClient
share = ShareClient.from_connection_string(conn_str="<connection_string>", share_name="myshare")
await share.create_share()
Dosyayı karşıya yükleme
Paylaşıma dosya yükleme
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)
Dosyayı zaman uyumsuz olarak karşıya yükleme
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)
Dosya indirme
Paylaşımdan dosya indirme
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)
Dosyayı zaman uyumsuz olarak indirme
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)
Dizinin içeriğini listeleme
Üst dizin altındaki tüm dizinleri ve dosyaları listeleme
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)
Bir dizinin içeriğini zaman uyumsuz olarak listeleme
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)
İsteğe Bağlı Yapılandırma
İstemcide ve işlem düzeyinde geçirilebilen isteğe bağlı anahtar sözcük bağımsız değişkenleri.
İlke yapılandırmasını yeniden deneme
Yeniden deneme ilkesini yapılandırmak için bir istemci örneği oluştururken aşağıdaki anahtar sözcük bağımsız değişkenlerini kullanın:
- retry_total (int): İzin vermek için toplam yeniden deneme sayısı. Diğer sayılardan önceliklidir.
İstekleri
retry_total=0
yeniden denemek istemiyorsanız geçiş yapın. Varsayılan değer 10'dır. - retry_connect (int): Yeniden denenecek bağlantıyla ilgili hataların sayısı. Varsayılan değer 3'tir.
- retry_read (int): Okuma hatalarını yeniden deneme sayısı. Varsayılan değer 3'tir.
- retry_status (int): Hatalı durum kodlarının kaç kez yeniden denenebileceği. Varsayılan değer 3'tir.
- retry_to_secondary (bool): mümkünse isteğin ikincil olarak yeniden denenip denenmeyeceği.
Bu yalnızca RA-GRS hesaplarının etkinleştirilmesi gerekir ve eski olabilecek veriler işlenebilir.
varsayılan olarak
False
ayarlanır.
Diğer istemci /işlem başına yapılandırma
İstemcide veya işlem başına belirtilebilen diğer isteğe bağlı yapılandırma anahtar sözcük bağımsız değişkenleri.
İstemci anahtar sözcük bağımsız değişkenleri:
- connection_timeout (int): İstemcinin sunucuyla bağlantı kurmak için bekleyeceği saniye sayısı. Varsayılan değer 20 saniyedir.
- read_timeout (int): İstemcinin sunucudan gelen bir yanıt için ardışık okuma işlemleri arasında bekleyeceği saniye sayısı. Bu bir yuva düzeyi zaman aşımıdır ve genel veri boyutundan etkilenmez. İstemci tarafı okuma zaman aşımları otomatik olarak yeniden denenecek. Varsayılan değer 60 saniyedir.
- transport (Any): HTTP isteğini göndermek için kullanıcı tarafından sağlanan aktarım.
İşlem başına anahtar sözcük bağımsız değişkenleri:
- raw_response_hook (çağrılabilir): Verilen geri arama, hizmetten döndürülen yanıtı kullanır.
- raw_request_hook (çağrılabilir): Verilen geri arama, hizmete gönderilmeden önce isteği kullanır.
- client_request_id (str): İsteğin kullanıcı tarafından belirtilen isteğe bağlı kimliği.
- user_agent (str): İstekle birlikte gönderilecek kullanıcı aracısı üst bilgisine özel değeri ekler.
- logging_enable (bool): HATA AYıKLAMA düzeyinde günlüğe kaydetmeyi etkinleştirir. Varsayılan değer False'tur. Tüm istekler için etkinleştirmek üzere istemci düzeyinde de geçirilebilir.
- logging_body (bool): İsteğin ve yanıt gövdesinin günlüğe kaydedilmesini sağlar. Varsayılan değer False'tur. Tüm istekler için etkinleştirmek üzere istemci düzeyinde de geçirilebilir.
- headers (dict): Özel üst bilgileri anahtar, değer çiftleri olarak geçirin. Örneğin.
headers={'CustomValue': value}
Sorun giderme
Genel
Depolama Dosyası istemcileri Azure Core'da tanımlanan özel durumları tetikler.
Bu liste, atılan özel durumları yakalamak için başvuru için kullanılabilir. Özel durumun belirli hata kodunu almak için özniteliğini error_code
kullanın, örneğin. exception.error_code
Günlüğe Kaydetme
Bu kitaplık , günlüğe kaydetme için standart günlük kitaplığını kullanır. HTTP oturumları (URL'ler, üst bilgiler vb.) hakkındaki temel bilgiler BİlGİ düzeyinde günlüğe kaydedilir.
İstek/yanıt gövdeleri ve kaydedilmemiş üst bilgiler de dahil olmak üzere ayrıntılı HATA AYıKLAMA düzeyi günlüğü, bir istemcide şu bağımsız değişkenle logging_enable
etkinleştirilebilir:
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)
Benzer şekilde, logging_enable
istemci için etkinleştirilmemiş olsa bile tek bir işlem için ayrıntılı günlüğe kaydetmeyi etkinleştirebilir:
service_client.get_service_properties(logging_enable=True)
Sonraki adımlar
Daha fazla örnek kod
Dosya Paylaşımı örneklerimizi kullanmaya başlayın.
SDK'nın GitHub deposunda çeşitli Depolama Dosya Paylaşımı Python SDK'sı örnekleri sağlanır. Bu örnekler, Depolama Dosya Paylaşımı ile çalışırken yaygın olarak karşılaşılan ek senaryolar için örnek kod sağlar:
file_samples_hello_world.py (zaman uyumsuz sürüm) - Bu makalede bulunan örnekler:
- İstemci oluşturma
- Dosya paylaşımı oluşturma
- Dosyayı karşıya yükleme
file_samples_authentication.py (zaman uyumsuz sürüm) - İstemcinin kimliğini doğrulama ve oluşturma örnekleri:
- bir bağlantı dizesi
- Paylaşılan erişim anahtarından
- Paylaşılan erişim imzası belirtecinden
file_samples_service.py (zaman uyumsuz sürüm) - Dosya hizmetiyle etkileşime yönelik örnekler:
- Hizmet özelliklerini alma ve ayarlama
- Paylaşımları oluşturma, listeleme ve silme
- Paylaşım istemcisi alma
file_samples_share.py (zaman uyumsuz sürüm) - Dosya paylaşımlarıyla etkileşime yönelik örnekler:
- Paylaşım anlık görüntüsü oluşturma
- Paylaşım kotası ve meta verileri ayarlama
- Dizinleri ve dosyaları listeleme
- Belirli bir varlıkla etkileşime geçmek için dizin veya dosya istemcisini alma
file_samples_directory.py (zaman uyumsuz sürüm) - Dizinlerle etkileşime yönelik örnekler:
- Dizin oluşturma ve dosya ekleme
- Alt dizinleri oluşturma ve silme
- Alt dizin istemcisini alma
file_samples_client.py (zaman uyumsuz sürüm) - Dosyalarla etkileşime yönelik örnekler:
- Dosya oluşturma, karşıya yükleme, indirme ve silme
- URL'den dosya kopyalama
Diğer belgeler
Azure Dosya Paylaşımı depolaması hakkında daha kapsamlı belgeler için docs.microsoft.com ile ilgili Azure Dosya Paylaşımı depolama belgelerine bakın.
Katkıda bulunma
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorularınız veya yorumlarınızla iletişime geçin opencode@microsoft.com .
Azure SDK for Python