Azure Storage File Share-Clientbibliothek für Python– Version 12.15.0
Azure File Share Storage bietet vollständig verwaltete Dateifreigaben in der Cloud, auf die über das branchenübliche SMB-Protokoll (Server Message Block) zugegriffen werden kann. Azure-Dateifreigaben können gleichzeitig durch die Cloud oder lokale Bereitstellungen von Windows, Linux und macOS eingebunden werden. Außerdem können Azure-Dateifreigaben auf Windows-Servern mit der Azure-Dateisynchronisierung zwischengespeichert werden, um einen schnellen Zugriff in der Nähe des Datennutzungsorts zu gewährleisten.
Verwendungsmöglichkeiten für Azure-Dateifreigaben:
- Ersetzen oder Ergänzen lokaler Dateiserver
- "Lift and Shift"-Anwendungen
- Vereinfachen der Cloudentwicklung mit freigegebenen Anwendungseinstellungen, Diagnosefreigaben und Dev/Test/Debug-Tools
Quellcode | Paket (PyPI) | Paket (Conda) | API-Referenzdokumentation | Produktdokumentation | Proben
Erste Schritte
Voraussetzungen
- Für die Verwendung dieses Pakets ist Python 3.7 oder höher erforderlich. Weitere Informationen finden Sie auf unserer Seite zur Supportrichtlinie für Azure SDK für Python-Versionen.
- Sie benötigen ein Azure-Abonnement und ein Azure-Speicherkonto , um dieses Paket verwenden zu können.
Installieren des Pakets
Installieren Sie die Azure Storage-Dateifreigabe-Clientbibliothek für Python mit pip:
pip install azure-storage-file-share
Speicherkonto erstellen
Wenn Sie ein neues Speicherkonto erstellen möchten, können Sie das Azure-Portal, Azure PowerShell oder die Azure CLI verwenden:
# 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
Erstellen des Clients
Mit der Azure Storage-Dateifreigabe-Clientbibliothek für Python können Sie mit vier Arten von Ressourcen interagieren: dem Speicherkonto selbst, Dateifreigaben, Verzeichnissen und Dateien. Die Interaktion mit diesen Ressourcen beginnt mit einer instance eines Clients. Zum Erstellen eines Clientobjekts benötigen Sie die Dateidienst-URL des Speicherkontos und eine Anmeldeinformation, die Ihnen den Zugriff auf das Speicherkonto ermöglicht:
from azure.storage.fileshare import ShareServiceClient
service = ShareServiceClient(account_url="https://<my-storage-account-name>.file.core.windows.net/", credential=credential)
Nachschlagen der Konto-URL
Sie finden die Dateidienst-URL des Speicherkontos über das Azure-Portal, Azure PowerShell oder die 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"
Typen von Anmeldeinformationen
Der credential
Parameter kann in verschiedenen Formen bereitgestellt werden, je nachdem, welche Autorisierung Sie verwenden möchten:
Um ein SAS-Token (Shared Access Signature) zu verwenden, geben Sie das Token als Zeichenfolge an. Wenn Ihre Konto-URL das SAS-Token enthält, lassen Sie den Parameter mit Anmeldeinformationen aus. Sie können ein SAS-Token im Azure-Portal unter "Shared Access Signature" generieren oder eine der
generate_sas()
Funktionen verwenden, um ein SAS-Token für das Speicherkonto, die Freigabe oder die Datei zu erstellen: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)
Um einen freigegebenen Speicherkontoschlüssel (auch als Kontoschlüssel oder Zugriffsschlüssel bezeichnet) zu verwenden, geben Sie den Schlüssel als Zeichenfolge an. Dies finden Sie im Azure-Portal im Abschnitt "Zugriffsschlüssel" oder indem Sie den folgenden Azure CLI-Befehl ausführen:
az storage account keys list -g MyResourceGroup -n MyStorageAccount
Verwenden Sie den Schlüssel als Anmeldeinformationsparameter, um den Client zu authentifizieren:
from azure.storage.fileshare import ShareServiceClient service = ShareServiceClient(account_url="https://<my_account_name>.file.core.windows.net", credential="<account_access_key>")
Erstellen des Clients aus einer Verbindungszeichenfolge
Abhängig von Ihrem Anwendungsfall und Ihrer Autorisierungsmethode können Sie es vorziehen, einen Client instance mit einer Speicher-Verbindungszeichenfolge zu initialisieren, anstatt die Konto-URL und die Anmeldeinformationen separat bereitzustellen. Übergeben Sie dazu den Speicher Verbindungszeichenfolge an die Klassenmethode des from_connection_string
Clients:
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)
Die Verbindungszeichenfolge zu Ihrem Speicherkonto finden Sie im Azure-Portal unter dem Abschnitt „Zugriffsschlüssel“ oder indem Sie den folgenden CLI-Befehl ausführen:
az storage account show-connection-string -g MyResourceGroup -n MyStorageAccount
Wichtige Begriffe
Der Azure-Dateifreigabedienst besteht aus den folgenden Komponenten:
- Das Speicherkonto selbst
- Eine Dateifreigabe innerhalb des Speicherkontos
- Eine optionale Hierarchie von Verzeichnissen innerhalb der Dateifreigabe
- Eine Datei innerhalb der Dateifreigabe, die bis zu 1 TiB groß sein kann
Mit der Azure Storage-Dateifreigabe-Clientbibliothek für Python können Sie mit jeder dieser Komponenten mithilfe eines dedizierten Clientobjekts interagieren.
Asynchrone Clients
Diese Bibliothek enthält eine vollständige asynchrone API, die unter Python 3.5 und höher unterstützt wird. Um es verwenden zu können, müssen Sie zuerst einen asynchronen Transport installieren, z. B. aiohttp. Weitere Informationen finden Sie in der Dokumentation zu azure-core .
Asynchrone Clients und Anmeldeinformationen sollten geschlossen werden, wenn sie nicht mehr benötigt werden. Diese Objekte sind asynchrone Kontext-Manager und definieren asynchrone close
Methoden.
Clients
Vier verschiedene Clients werden für die Interaktion mit den verschiedenen Komponenten des Dateifreigabediensts bereitgestellt:
- ShareServiceClient : Dieser Client stellt die Interaktion mit dem Azure-Speicherkonto selbst dar und ermöglicht es Ihnen, vorkonfigurierte Clientinstanzen für den Zugriff auf die Darin enthaltenen Dateifreigaben abzurufen. Es bietet Vorgänge zum Abrufen und Konfigurieren der Diensteigenschaften sowie zum Auflisten, Erstellen und Löschen von Freigaben innerhalb des Kontos. Um Vorgänge für eine bestimmte Freigabe auszuführen, rufen Sie einen Client mithilfe der
get_share_client
-Methode ab. - ShareClient : Dieser Client stellt die Interaktion mit einer bestimmten Dateifreigabe dar (die noch nicht vorhanden sein muss), und ermöglicht es Ihnen, vorkonfigurierte Clientinstanzen für den Zugriff auf die Verzeichnisse und Dateien darin zu erhalten. Es stellt Vorgänge zum Erstellen, Löschen, Konfigurieren oder Erstellen von Momentaufnahmen einer Freigabe bereit und umfasst Vorgänge zum Erstellen und Aufzählen der Inhalte der Darin enthaltenen Verzeichnisse. Um Vorgänge für ein bestimmtes Verzeichnis oder eine bestimmte Datei auszuführen, rufen Sie einen Client mit den
get_directory_client
Methoden oderget_file_client
ab. - ShareDirectoryClient : Dieser Client stellt die Interaktion mit einem bestimmten Verzeichnis dar (das noch nicht vorhanden sein muss). Es stellt Vorgänge zum Erstellen, Löschen oder Aufzählen des Inhalts eines unmittelbaren oder geschachtelten Unterverzeichnisses bereit und umfasst Vorgänge zum Erstellen und Löschen von Dateien darin. Bei Vorgängen, die sich auf ein bestimmtes Unterverzeichnis oder eine bestimmte Datei beziehen, kann ein Client für diese Entität auch mithilfe der
get_subdirectory_client
Funktionen undget_file_client
abgerufen werden. - ShareFileClient : Dieser Client stellt die Interaktion mit einer bestimmten Datei dar (die noch nicht vorhanden sein muss). Es bietet Vorgänge zum Hochladen, Herunterladen, Erstellen, Löschen und Kopieren einer Datei.
Ausführliche Informationen zu Einschränkungen bei der Pfadbenennung finden Sie unter Benennen und Verweisen auf Freigaben, Verzeichnisse, Dateien und Metadaten.
Beispiele
Die folgenden Abschnitte enthalten mehrere Codeausschnitte, die einige der gängigsten Aufgaben der Speicherdateifreigabe abdecken, einschließlich:
- Erstellen einer Dateifreigabe
- Hochladen einer Datei
- Herunterladen einer Datei
- Auflisten der Inhalte eines Verzeichnisses
Erstellen einer Dateifreigabe
Erstellen einer Dateifreigabe zum Speichern Ihrer Dateien
from azure.storage.fileshare import ShareClient
share = ShareClient.from_connection_string(conn_str="<connection_string>", share_name="myshare")
share.create_share()
Verwenden des asynchronen Clients zum Erstellen einer Dateifreigabe
from azure.storage.fileshare.aio import ShareClient
share = ShareClient.from_connection_string(conn_str="<connection_string>", share_name="myshare")
await share.create_share()
Hochladen einer Datei
Hochladen einer Datei in die Freigabe
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)
Asynchrones Hochladen einer Datei
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)
Herunterladen einer Datei
Herunterladen einer Datei aus der Freigabe
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)
Asynchrones Herunterladen einer Datei
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)
Auflisten der Inhalte eines Verzeichnisses
Auflisten aller Verzeichnisse und Dateien unter einem übergeordneten Verzeichnis
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)
Asynchrones Auflisten der Inhalte eines Verzeichnisses
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)
Optionale Konfiguration
Optionale Schlüsselwort (keyword) Argumente, die auf Client- und Vorgangsebene übergeben werden können.
Konfiguration der Wiederholungsrichtlinie
Verwenden Sie die folgenden Schlüsselwort (keyword) Argumente, wenn Sie einen Client instanziieren, um die Wiederholungsrichtlinie zu konfigurieren:
- retry_total (int): Gesamtzahl der zuzulassenden Wiederholungen. Hat Vorrang vor anderen Zählungen.
retry_total=0
Übergeben Sie, wenn Sie bei Anforderungen keinen Wiederholungsversuch durchführen möchten. Der Standardwert ist 10. - retry_connect (int): Gibt an, wie viele Verbindungsfehler wiederholt werden sollen. Der Standardwert ist 3.
- retry_read (int): Gibt an, wie oft bei Lesefehlern wiederholt werden soll. Der Standardwert ist 3.
- retry_status (int): Gibt an, wie oft bei fehlerhaften status Codes wiederholt werden soll. Der Standardwert ist 3.
- retry_to_secondary (bool): Gibt an, ob die Anforderung ggf. an die sekundäre Anforderung wiederholt werden soll.
Dies sollte nur aktiviert werden, wenn RA-GRS-Konten verwendet werden, und möglicherweise veraltete Daten können verarbeitet werden.
Der Standardwert lautet
False
.
Andere Client-/Pro-Vorgang-Konfiguration
Andere optionale Konfiguration Schlüsselwort (keyword) Argumente, die auf dem Client oder pro Vorgang angegeben werden können.
Client Schlüsselwort (keyword) Argumente:
- connection_timeout (int): Die Anzahl der Sekunden, die der Client wartet, um eine Verbindung mit dem Server herzustellen. Die Standardwerte sind 20 Sekunden.
- read_timeout (int): Die Anzahl der Sekunden, die der Client zwischen aufeinanderfolgenden Lesevorgängen auf eine Antwort vom Server wartet. Dies ist ein Timeout auf Socketebene, das sich nicht auf die Gesamtdatengröße auswirkt. Clientseitige Lesetimeouts werden automatisch wiederholt. Der Standardwert ist 60 Sekunden.
- transport (Any): Vom Benutzer bereitgestellter Transport zum Senden der HTTP-Anforderung.
Pro Vorgang Schlüsselwort (keyword) Argumente:
- raw_response_hook (aufrufbar): Der angegebene Rückruf verwendet die vom Dienst zurückgegebene Antwort.
- raw_request_hook (aufrufbar): Der angegebene Rückruf verwendet die Anforderung, bevor sie an den Dienst gesendet wird.
- client_request_id (str): Optional vom Benutzer angegebene Identifikation der Anforderung.
- user_agent (str): Fügt den benutzerdefinierten Wert an den Benutzer-Agent-Header an, der mit der Anforderung gesendet werden soll.
- logging_enable (bool): Aktiviert die Protokollierung auf DEBUG-Ebene. Der Standardwert lautet „False“. Kann auch auf Clientebene übergeben werden, um es für alle Anforderungen zu aktivieren.
- logging_body (bool): Aktiviert die Protokollierung des Anforderungs- und Antworttexts. Der Standardwert lautet „False“. Kann auch auf Clientebene übergeben werden, um es für alle Anforderungen zu aktivieren.
- headers (dict): Übergeben Sie benutzerdefinierte Header als Schlüssel- und Wertpaare. Beispiel:
headers={'CustomValue': value}
Problembehandlung
Allgemein
Speicherdateiclients lösen in Azure Core definierte Ausnahmen aus.
Diese Liste kann als Verweis verwendet werden, um ausgelöste Ausnahmen abzufangen. Um den spezifischen Fehlercode der Ausnahme abzurufen, verwenden Sie das error_code
-Attribut, d. h exception.error_code
. .
Protokollierung
Diese Bibliothek verwendet die Standardprotokollierungsbibliothek für die Protokollierung. Grundlegende Informationen zu HTTP-Sitzungen (URLs, Header usw.) werden auf INFO-Ebene protokolliert.
Eine detaillierte Protokollierung auf DEBUG-Ebene, einschließlich Anforderungs-/Antworttexten und nicht ausgeführten Headern, kann auf einem Client mit dem logging_enable
Argument aktiviert werden:
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)
Ebenso kann über logging_enable
die ausführliche Protokollierung für einen einzelnen Vorgang aktiviert werden, auch wenn diese Funktion für den Client nicht aktiviert ist:
service_client.get_service_properties(logging_enable=True)
Nächste Schritte
Weiterer Beispielcode
Erste Schritte mit unseren Dateifreigabebeispielen.
Im GitHub-Repository des SDK des SDK stehen Ihnen mehrere Beispiele für die Speicherdateifreigabe zur Verfügung. Diese Beispiele enthalten Beispielcode für zusätzliche Szenarien, die häufig bei der Arbeit mit der Speicherdateifreigabe auftreten:
file_samples_hello_world.py (asynchrone Version): Beispiele in diesem Artikel:
- Clienterstellung
- Erstellen einer Dateifreigabe
- Hochladen einer Datei
file_samples_authentication.py (asynchrone Version): Beispiele für die Authentifizierung und Erstellung des Clients:
- Aus einem Verbindungszeichenfolge
- Aus einem freigegebenen Zugriffsschlüssel
- Aus einem Token für die Gemeinsame Zugriffssignatur
file_samples_service.py (asynchrone Version): Beispiele für die Interaktion mit dem Dateidienst:
- Abrufen und Festlegen von Diensteigenschaften
- Erstellen, Auflisten und Löschen von Freigaben
- Abrufen eines Freigabeclients
file_samples_share.py (asynchrone Version): Beispiele für die Interaktion mit Dateifreigaben:
- Erstellen einer Freigabemomentaufnahme
- Festlegen von Freigabekontingent und Metadaten
- Auflisten von Verzeichnissen und Dateien
- Abrufen des Verzeichnisses oder Dateiclients für die Interaktion mit einer bestimmten Entität
file_samples_directory.py (asynchrone Version): Beispiele für die Interaktion mit Verzeichnissen:
- Erstellen eines Verzeichnisses und Hinzufügen von Dateien
- Erstellen und Löschen von Unterverzeichnissen
- Abrufen des Unterverzeichnisclients
file_samples_client.py (asynchrone Version): Beispiele für die Interaktion mit Dateien:
- Erstellen, Hochladen, Herunterladen und Löschen von Dateien
- Kopieren einer Datei aus einer URL
Zusätzliche Dokumentation
Eine ausführlichere Dokumentation zum Azure-Dateifreigabespeicher finden Sie in der Azure File Share Storage-Dokumentation auf docs.microsoft.com.
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Azure SDK for Python