Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie Python-Anwendungen entwickeln, die Azure Files zum Speichern von Daten verwenden. Azure Files ist ein verwalteter Dateifreigabedienst in der Cloud. Sie bietet vollständig verwaltete Dateifreigaben, auf die über die Standardprotokolle Server Message Block (SMB) und Network File System (NFS) zugegriffen werden kann. Azure Files bietet auch eine REST-API für den programmgesteuerten Zugriff auf Dateifreigaben.
In diesem Artikel erfahren Sie mehr über die verschiedenen Ansätze für die Entwicklung mit Azure Files in Python und wie Sie den Ansatz auswählen, der den Anforderungen Ihrer App am besten entspricht. Außerdem erfahren Sie, wie Sie eine einfache Konsolen-App erstellen, die mit Azure Files-Ressourcen interagiert.
Gilt für:
| Verwaltungsmodell | Abrechnungsmodell | Medienebene | Redundanz | KMU | NFS |
|---|---|---|---|---|---|
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | Lokal (LRS) |
|
|
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | Zone (ZRS) |
|
|
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | Geografischer Raum (GRS) |
|
|
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | GeoZone (GZRS) |
|
|
| Microsoft.Storage | Bereitgestellt v1 | SSD (Premium) | Lokal (LRS) |
|
|
| Microsoft.Storage | Bereitgestellt v1 | SSD (Premium) | Zone (ZRS) |
|
|
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | Lokal (LRS) |
|
|
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | Zone (ZRS) |
|
|
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | Geografischer Raum (GRS) |
|
|
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | GeoZone (GZRS) |
|
|
Informationen zur Entwicklung von Python-Apps mit Azure Files
Azure Files bietet verschiedene Möglichkeiten für Python-Entwickler, auf Daten zuzugreifen und Ressourcen in Azure Files zu verwalten. Die folgende Tabelle enthält die Ansätze, fasst zusammen, wie sie funktionieren, und enthält Anleitungen zur Verwendung der einzelnen Ansätze:
| Vorgehensweise | Funktionsweise | Wann verwenden |
|---|---|---|
| Standard-Datei-I/O-Bibliotheken | Verwendet API-Aufrufe auf Betriebssystemebene über Azure-Dateifreigaben, die über SMB oder NFS eingebunden wurden. Wenn Sie eine Dateifreigabe mithilfe von SMB/NFS einbinden, können Sie Datei-E/A-Bibliotheken für eine Programmiersprache oder ein Framework verwenden, z. B. os und io für Python. |
Sie verfügen über Branchen-Apps mit vorhandenem Code, der standarddatei-E/A verwendet, und Sie möchten keinen Code für die App neu schreiben, um mit einer Azure-Dateifreigabe zu arbeiten. |
| FileREST-API | Ruft https-Endpunkte direkt auf, um mit daten zu interagieren, die in Azure Files gespeichert sind. Stellt programmgesteuerte Kontrolle über Dateifreigaberessourcen bereit. Das Azure SDK stellt die Clientbibliothek für Dateifreigaben bereit (azure-storage-file-share), die auf der FileREST-API basiert, und ermöglicht Ihnen die Interaktion mit Vorgängen der FileREST-API über vertraute Python-Programmiersprachenparadigmen. |
Sie erstellen Mehrwertige Clouddienste und -apps für Kunden und möchten erweiterte Features verwenden, die nicht über Python-Datei-E/A-Bibliotheken verfügbar sind. |
| REST-API des Speicherressourcenanbieters | Verwendet Azure Resource Manager (ARM) zum Verwalten von Speicherkonten und Dateifreigaben. Ruft REST-API-Endpunkte für verschiedene Ressourcenverwaltungsvorgänge auf. | Ihre App oder Ihr Dienst muss Ressourcenverwaltungsaufgaben ausführen, z. B. das Erstellen, Löschen oder Aktualisieren von Speicherkonten oder Dateifreigaben. |
Allgemeine Informationen zu diesen Ansätzen finden Sie unter Übersicht über die Anwendungsentwicklung mit Azure Files.
Dieser Artikel konzentriert sich auf die Arbeit mit Azure Files-Ressourcen mit den folgenden Ansätzen:
- Arbeiten Sie mit Azure Files mit Python-Datei-E/A-Bibliotheken: Stellen Sie eine Dateifreigabe mit SMB oder NFS bereit und verwenden Sie die Python-Datei-E/A-Bibliotheken, um mit Dateien und Verzeichnissen in der Freigabe zu arbeiten.
- Arbeiten Sie mit Azure Files mithilfe der Clientbibliothek "Dateifreigaben" für Python: Verwenden Sie die Clientbibliothek für Azure Storage-Dateifreigaben für Python, um mit Dateien und Verzeichnissen in einer Dateifreigabe zu arbeiten. Diese Clientbibliothek basiert auf der FileREST-API.
- Verwalten Sie Azure Files-Ressourcen mithilfe der Azure Storage-Verwaltungsbibliotheken: Verwenden Sie die Azure Storage-Verwaltungsbibliotheken, um Dateifreigaben und andere Ressourcen in Ihrem Speicherkonto zu verwalten. Die Verwaltungsbibliotheken basieren auf der REST-API des Azure Storage-Ressourcenanbieters.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Python 3.8+
Einrichten des Projekts
Dieser Abschnitt führt Sie durch die Vorbereitung eines Projekts für die Arbeit mit den Azure Files.
Installieren Sie in Ihrem Projektverzeichnis Pakete basierend auf den Anforderungen Ihrer App mithilfe des pip install Befehls. Das folgende Beispiel zeigt, wie Sie die Clientbibliothek für Azure-Dateifreigaben, die Speicherverwaltungsclientbibliothek und die Azure Identity-Bibliothek installieren. Das Azure-Identity-Paket ist für kennwortlose Verbindungen mit Azure-Diensten erforderlich.
pip install azure-identity
pip install azure-storage-file-share
pip install azure-mgmt-resource
pip install azure-mgmt-storage
Öffnen Sie Die Codedatei, und fügen Sie die erforderlichen Importanweisungen hinzu.
Wenn Sie die Python os - und io Bibliotheken verwenden möchten, fügen Sie Ihrer .py Datei Folgendes hinzu:
import os
import io
Wenn Sie beabsichtigen, die Clientbibliothek für Azure Storage File Shares zu verwenden, fügen Sie Ihrer .py Datei, Folgendes hinzu:
from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareClient, ShareDirectoryClient, ShareFileClient
Wenn Sie beabsichtigen, die Azure Storage-Verwaltungsbibliotheken zu verwenden, fügen Sie Ihrer .py Datei Folgendes hinzu:
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
Arbeiten mit Azure Files mithilfe von Python-Datei-E/A-Bibliotheken
Standarddatei-E/A-Bibliotheken sind die am häufigsten verwendete Methode für den Zugriff und die Arbeit mit Azure Files-Ressourcen. Wenn Sie eine Dateifreigabe mithilfe von SMB oder NFS einbinden, leitet Ihr Betriebssystem API-Anforderungen für das lokale Dateisystem um. Mit diesem Ansatz können Sie Standarddatei-E/A-Bibliotheken wie os oder io verwenden, um mit Dateien und Verzeichnissen in der Freigabe zu interagieren.
Erwägen Sie die Verwendung von Python-Datei-E/A-Bibliotheken, wenn Ihre App Folgendes erfordert:
- App-Kompatibilität: Ideal für Branchen-Apps mit vorhandenem Code, der bereits Python-Datei-E/A-Bibliotheken verwendet. Sie müssen Code nicht neu schreiben, damit die App mit einer Azure-Dateifreigabe arbeitet.
- Benutzerfreundlichkeit: Python-Datei-E/A-Bibliotheken sind von Entwicklern bekannt und einfach zu verwenden. Ein wichtiges Wertversprechen von Azure Files besteht darin, dass sie systemeigene Dateisystem-APIs über SMB und NFS verfügbar macht.
In diesem Abschnitt erfahren Sie, wie Sie Python-Datei-E/A-Bibliotheken verwenden, um mit Azure Files-Ressourcen zu arbeiten.
Weitere Informationen und Beispiele finden Sie in den folgenden Ressourcen:
Bereitstellen einer Dateifreigabe
Zur Verwendung von Python-Datei-E/A-Bibliotheken müssen Sie zuerst eine Dateifreigabe einbinden. Informationen zum Einbinden einer Dateifreigabe mithilfe von SMB oder NFS finden Sie in den folgenden Ressourcen:
- Bereitstellen einer SMB-Dateifreigabe unter Windows
- Bereitstellen einer SMB-Dateifreigabe unter Linux
- Bereitstellen einer NFS-Dateifreigabe unter Linux
In diesem Artikel verwenden Sie den folgenden Pfad zum Verweisen auf eine eingebundene SMB-Dateifreigabe unter Windows:
file_share_path = "Z:\\file-share"
Beispiel: Herstellen einer Verbindung mit einer Dateifreigabe und Aufzählen von Verzeichnissen mithilfe von Python-Datei-E/A-Bibliotheken
Das folgende Codebeispiel zeigt, wie Sie eine Verbindung mit einer Dateifreigabe herstellen und die Verzeichnisse in der Freigabe auflisten:
import os
def enumerate_directories(path):
try:
# Get all directories in the specified path
dirs = [d for d in os.listdir(path) if os.path.isdir(os.path.join(path, d))]
# Print each directory name
for dir_name in dirs:
print(f"{dir_name}")
print(f"{len(dirs)} directories found.")
except (PermissionError, FileNotFoundError, OSError) as ex:
print(f"Error: {ex}")
#Example usage
file_share_path = "Z:\\file-share"
enumerate_directories(file_share_path)
Beispiel: Schreiben in eine Datei in einer Dateifreigabe mithilfe von Python-Datei-E/A-Bibliotheken
Das folgende Codebeispiel zeigt, wie Text in eine Datei geschrieben und angefügt wird:
import os
def write_to_file(file_share_path, file_name):
# First line of text with platform-appropriate line ending
text_to_write = "First line" + os.linesep
# Combine the file share path and filename
file_path = os.path.join(file_share_path, file_name)
# Write initial text to file (overwrites if file exists)
with open(file_path, 'w') as file:
file.write(text_to_write)
# Text to append
text_to_append = ["Second line", "Third line"]
# Append lines to the file
with open(file_path, 'a') as file:
file.write(os.linesep.join(text_to_append) + os.linesep)
# Example usage
file_share_path = "Z:\\file-share"
write_to_file(file_share_path, "test.txt")
Beispiel: Aufzählen von Datei-ACLs mithilfe von Python-Datei-E/A-Bibliotheken
Das folgende Codebeispiel zeigt, wie Sie grundlegende Zugriffssteuerungslisten (ACLs) für eine Datei aufzählen:
import os
import stat
def enumerate_file_acls(file_path):
try:
# Get file stats
file_stat = os.stat(file_path)
# Get permissions in octal format
permissions_octal = oct(stat.S_IMODE(file_stat.st_mode))
print(f"File: {file_path}")
print(f"Permissions (octal): {permissions_octal}")
# Interpret permissions in a human-readable format
permissions = ""
permissions += "r" if file_stat.st_mode & stat.S_IRUSR else "-"
permissions += "w" if file_stat.st_mode & stat.S_IWUSR else "-"
permissions += "x" if file_stat.st_mode & stat.S_IXUSR else "-"
permissions += "r" if file_stat.st_mode & stat.S_IRGRP else "-"
permissions += "w" if file_stat.st_mode & stat.S_IWGRP else "-"
permissions += "x" if file_stat.st_mode & stat.S_IXGRP else "-"
permissions += "r" if file_stat.st_mode & stat.S_IROTH else "-"
permissions += "w" if file_stat.st_mode & stat.S_IWOTH else "-"
permissions += "x" if file_stat.st_mode & stat.S_IXOTH else "-"
print(f"Permissions (symbolic): {permissions}")
print(f"Owner ID: {file_stat.st_uid}")
print(f"Group ID: {file_stat.st_gid}")
print("Note: For detailed Windows ACLs, you may need a specialized library.")
except FileNotFoundError:
print(f"Error: File '{file_path}' not found.")
except PermissionError:
print(f"Error: Permission denied for '{file_path}'.")
except Exception as e:
print(f"Error: {e}")
# Example usage
file_share_path = "Z:\\file-share"
file_name = "test.txt"
file_path = os.path.join(file_share_path, file_name)
enumerate_file_acls(file_path)
Arbeiten mit Azure Files-Daten unter Verwendung der Clientbibliothek für Dateifreigaben für Python
Die FileREST-API bietet programmgesteuerten Zugriff auf Azure Files. Sie können HTTPS-Endpunkte aufrufen, um Vorgänge für Dateifreigaben, Verzeichnisse und Dateien auszuführen. Die FileREST-API wurde für hohe Skalierbarkeit und erweiterte Features entwickelt, die möglicherweise nicht über systemeigene Protokolle verfügbar sind. Das Azure-SDK stellt Clientbibliotheken bereit, etwa die Clientbibliothek für Dateifreigaben für Python, die auf der FileREST-API basieren.
Erwägen Sie die Verwendung der FileREST-API und der Dateifreigabe-Clientbibliothek, wenn Ihre Anwendung Folgendes erfordert:
- Erweiterte Features: Zugriffsvorgänge und Features, die nicht über systemeigene Protokolle verfügbar sind.
- Benutzerdefinierte Cloudintegrationen: Erstellen Sie benutzerdefinierte Mehrwertdienste wie Sicherung, Antivirensoftware oder Datenverwaltung, die direkt mit Azure Files interagieren.
- Leistungsoptimierung: Profitieren Sie von Leistungsvorteilen in szenarien mit hoher Skalierung mithilfe von Datenebenenvorgängen.
Die FileREST-API modelliert Azure Files als Eine Hierarchie von Ressourcen und wird für Vorgänge empfohlen, die auf Verzeichnis - oder Dateiebene ausgeführt werden. Sie sollten die REST-API des Speicherressourcenanbieters für Vorgänge bevorzugen, die auf Dateidienst - oder Dateifreigabeebene ausgeführt werden.
In diesem Abschnitt erfahren Sie, wie Sie die Clientbibliothek für Dateifreigaben verwenden, um mit Azure Files-Ressourcen zu arbeiten.
Weitere Informationen und Beispiele finden Sie in den folgenden Ressourcen:
- Azure Storage File Shares-Clientbibliothek für Python
- Azure Storage File Shares-Clientbibliothek für Python-Beispiele
Autorisieren des Zugriffs und Erstellen eines Clients
Um eine App mit Azure Files zu verbinden, erstellen Sie ein ShareClient Objekt. Dieses Objekt ist Ihr Ausgangspunkt für die Arbeit mit Azure Files-Ressourcen. Die folgenden Codebeispiele zeigen, wie ein ShareClient Objekt mithilfe verschiedener Autorisierungsmechanismen erstellt wird.
Um mit Microsoft Entra ID zu autorisieren, müssen Sie einen Sicherheitsprinzipal verwenden. Welche Art von Sicherheitsprinzipal Sie benötigen, hängt davon ab, wo Ihre App ausgeführt wird. Verwenden Sie diese Tabelle als Leitfaden.
| Wo die App ausgeführt wird | Sicherheitsprinzipal | Leitfaden |
|---|---|---|
| Lokaler Computer (Entwickeln und Testen) | Service Principal | Informationen zum Registrieren der App, Einrichten einer Microsoft Entra-Gruppe, Zuweisen von Rollen und Konfigurieren von Umgebungsvariablen finden Sie unter Autorisieren des Zugriffs mithilfe von Entwicklerdienstprinzipale |
| Lokaler Computer (Entwickeln und Testen) | Benutzeridentität | Informationen zum Einrichten einer Microsoft Entra-Gruppe, zum Zuweisen von Rollen und zur Anmeldung bei Azure finden Sie unter Autorisieren des Zugriffs mithilfe von Entwickleranmeldeinformationen |
| Gehostet in Azure | Verwaltete Identität | Informationen zum Aktivieren verwalteter Identität und Zuweisen von Rollen finden Sie unter Autorisieren des Zugriffs von von Azure gehosteten Apps mithilfe einer verwalteten Identität |
| Gehostet außerhalb von Azure (z. B. lokale Apps) | Service Principal | Informationen zum Registrieren der App, Zuweisen von Rollen und Konfigurieren von Umgebungsvariablen finden Sie unter Autorisieren des Zugriffs von lokalen Apps mithilfe eines Anwendungsdienstprinzipals |
Damit Sie die Codebeispiele in diesem Artikel verwenden können, weisen Sie dem Sicherheitsprinzipal die integrierte Azure RBAC-Rolle Privilegierter Mitwirkender für Speicherdateidaten zu. Diese Rolle gewährt vollständigen Zugriff auf alle Daten mit Lese-, Schreib-, ACL-Modifizierungs- und Löschrechten in den Freigaben für alle konfigurierten Speicherkonten, unabhängig von den festgelegten NTFS-Berechtigungen auf Datei-/Verzeichnisebene. Weitere Informationen finden Sie unter Zugriff auf Azure-Dateifreigaben mit Microsoft Entra ID und Azure Files OAuth über REST.
Autorisieren des Zugriffs mithilfe von DefaultAzureCredential
Eine einfache und sichere Möglichkeit zum Autorisieren des Zugriffs und der Verbindung mit Azure Files ist das Abrufen eines OAuth-Tokens durch Erstellen einer DefaultAzureCredential-Instanz . Anschließend können Sie diese Anmeldeinformationen verwenden, um ein ShareClient Objekt zu erstellen.
Im folgenden Beispiel wird ein mithilfe von ShareClient autorisiertes DefaultAzureCredential-Objekt erstellt. Anschließend wird ein ShareDirectoryClient-Objekt erstellt, das mit einem Verzeichnis in der Freigabe verwendet werden kann:
from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareClient
account_name = "<account-name>"
share_name = "<share-name>"
# Create the share client using DefaultAzureCredential
share_client = ShareClient(
account_url=f"https://{account_name}.file.core.windows.net",
share_name=share_name,
credential=DefaultAzureCredential(),
# When using a token credential, you MUST specify a token_intent
token_intent='backup'
)
# Get a reference to a directory in the share
directory_client = share_client.get_directory_client("sample-directory")
Wenn Sie genau wissen, welchen Anmeldeinformationstyp Sie zum Authentifizieren von Benutzern verwenden, können Sie ein OAuth-Token mithilfe anderer Klassen in der Azure Identity-Clientbibliothek für Python abrufen. Diese Klassen werden von der TokenCredential-Klasse abgeleitet.
Weitere Informationen zu den einzelnen Autorisierungsmechanismen finden Sie unter Auswählen, wie der Zugriff auf Dateidaten autorisiert werden soll.
Beispiel: Kopieren von Dateien mit der Clientbibliothek für Dateifreigaben
Sie können Dateien innerhalb einer Dateifreigabe oder zwischen Dateifreigaben kopieren, indem Sie die folgende Methode verwenden:
Sie können eine Datei in ein Ziel-BLOB kopieren, indem Sie die folgende Methode aus einem BlobClient Objekt verwenden:
Das folgende Codebeispiel zeigt, wie eine Datei in eine Datei in einer anderen Dateifreigabe kopiert wird:
from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareFileClient
# Define storage account parameters
account_name = "<account-name>"
src_share_name = "src-file-share"
dest_share_name = "dest-file-share"
src_file_path = "src/path/to/file"
dest_file_path = "dest/path/to/file"
# Create token credential
token_credential = DefaultAzureCredential()
# Create source file client
src_file_client = ShareFileClient(
account_url=f"https://{account_name}.file.core.windows.net",
share_name=src_share_name,
file_path=src_file_path,
credential=token_credential,
token_intent='backup'
)
# Create destination file client
dest_file_client = ShareFileClient(
account_url=f"https://{account_name}.file.core.windows.net",
share_name=dest_share_name,
file_path=dest_file_path,
credential=token_credential,
token_intent='backup'
)
# Copy the file from the source share to the destination share
copy_operation = dest_file_client.start_copy_from_url(src_file_client.url)
Beispiel: Leasen einer Datei mithilfe der Clientbibliothek für Dateifreigaben
Ein Lease erstellt eine Sperre für eine Datei, die von Azure über eine Lease-ID verwaltet wird. Die Lease bietet einen Mechanismus zum Koordinieren des Zugriffs auf Dateien über mehrere Clients in einem verteilten System. Eine Lease für eine Datei bietet exklusiven Schreib- und Löschzugriff. Weitere Informationen zu Leasezuständen und -aktionen finden Sie unter Lease File.
Das folgende Codebeispiel zeigt, wie Sie einen Leaseclient erstellen, eine unendliche Dauer-Lease für eine Datei erwerben und die Lease freigeben:
from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareFileClient, ShareLeaseClient
# Define storage account parameters
account_name = "<account-name>"
share_name = "sample-file-share"
file_path = "path/to/file"
# Create a DefaultAzureCredential for authentication
token_credential = DefaultAzureCredential()
# Create a ShareFileClient
file_client = ShareFileClient(
account_url=f"https://{account_name}.file.core.windows.net",
share_name=share_name,
file_path=file_path,
credential=token_credential,
token_intent='backup'
)
# Get a lease client for the file
lease_client = ShareLeaseClient(file_client)
# Acquire an infinite duration lease on the file
lease_info = lease_client.acquire()
# Do something with the file while it's leased
# ...
# Release the lease
lease_client.release()
Beachten Sie bei der Verwendung von SMB und der FileREST-API, dass die FileREST-API Leases zum Verwalten von Dateisperren verwendet, während SMB Dateisystemsperren verwendet, die vom Betriebssystem verwaltet werden. Weitere Informationen zum Verwalten von Dateisperrinteraktionen zwischen SMB und der FileREST-API finden Sie unter Verwalten von Dateisperren.
Beispiel: Erstellen und Auflisten von Freigabemomentaufnahmen mithilfe der Clientbibliothek für Dateifreigaben
Freigabemomentaufnahmen sind schreibgeschützte Kopien einer Dateifreigabe zu einem bestimmten Zeitpunkt. Sie können eine Momentaufnahme einer Dateifreigabe erstellen und anschließend diese Momentaufnahme verwenden, um auf die Daten in der Freigabe zum Zeitpunkt der Momentaufnahmeerstellung zuzugreifen. Sie können auch alle Momentaufnahmen in einer Dateifreigabe auflisten und Freigabemomentaufnahmen löschen.
Das folgende Codebeispiel zeigt, wie Sie eine Freigabemomentaufnahme erstellen, die Momentaufnahmen in einer Dateifreigabe auflisten und das Stammverzeichnis in einer Freigabemomentaufnahme durchlaufen:
from azure.storage.fileshare import ShareServiceClient, ShareDirectoryClient
def list_root_directory_snapshot(root_dir: ShareDirectoryClient):
for item in root_dir.list_directories_and_files():
if item["is_directory"]:
print(f"Directory in snapshot: {item['name']}")
else:
print(f"File in snapshot: {item['name']}")
# Connection string with account key (required for share snapshots)
connection_string = "<connection-string>"
# Create service and share clients
share_service_client = ShareServiceClient.from_connection_string(connection_string)
share_name = "sample-file-share"
share_client = share_service_client.get_share_client(share_name)
# Create a snapshot
snapshot_info = share_client.create_snapshot()
print(f"Snapshot created: {snapshot_info['snapshot']}")
# List snapshots in a share
for share_item in share_service_client.list_shares(include_snapshots=True):
if share_item["snapshot"]:
print(f"Share: {share_item['name']} (Snapshot: {share_item['snapshot']})")
# List directories and files in a share snapshot
snapshot_timestamp = snapshot_info["snapshot"]
share_snapshot = share_service_client.get_share_client(share_name, snapshot=snapshot_timestamp)
root_dir = share_snapshot.get_directory_client("")
list_root_directory_snapshot(root_dir)
Hinweis
OAuth-Token, etwa solche, die bei der Verwendung DefaultAzureCredential abgerufen werden, sind für Datenebenenvorgänge auf Dateifreigabeebene nicht zulässig. Um mit freigegebenen Snapshots zu arbeiten, muss das Clientobjekt mithilfe des Kontoschlüssels autorisiert werden. Das ShareClient in diesem Codebeispiel erstellte Objekt verwendet eine Verbindungszeichenfolge, die den Kontoschlüssel enthält.
Das Speichern von Kontoschlüsseln oder Verbindungszeichenfolgen stellt ein Sicherheitsrisiko dar. Sie sollten diese nur verwenden, wenn die Microsoft Entra-Authentifizierung nicht verfügbar ist. Weitere Informationen zum sicheren Speichern von Kontoschlüsseln in Azure Key Vault finden Sie unter Azure Key Vault verwaltete Speicherkontoschlüssel.
Verwalten von Azure Files-Ressourcen mithilfe der Azure Storage-Verwaltungsbibliotheken
Die Azure Storage-Verwaltungsbibliotheken basieren auf der REST-API des Azure Storage-Ressourcenanbieters. Der Azure Storage-Ressourcenanbieter ist ein Dienst, der auf Azure Resource Manager basiert, und unterstützt sowohl deklarative Methoden (Vorlagen) als auch imperative Methoden (direkter API-Aufruf). Die REST-API des Azure Storage-Ressourcenanbieters bietet programmgesteuerten Zugriff auf Azure Storage-Ressourcen, einschließlich Dateifreigaben. Das Azure SDK stellt Verwaltungsbibliotheken bereit, die auf der REST-API des Azure Storage-Ressourcenanbieters aufbauen.
Die Verwaltungsbibliotheken werden für Vorgänge empfohlen, die auf Dateidienst - oder Dateifreigabeebene ausgeführt werden. In diesem Abschnitt erfahren Sie, wie Sie die Azure Storage-Verwaltungsbibliotheken zum Verwalten von Azure Files-Ressourcen verwenden.
Beispiel: Erstellen einer Dateifreigabe mithilfe der Azure Storage-Verwaltungsbibliothek
Das folgende Codebeispiel zeigt, wie Sie ein Objekt auf oberster Ebene ArmClient erstellen, den Speicherressourcenanbieter mit einem Abonnement registrieren und eine Dateifreigabe mithilfe der Azure Storage-Verwaltungsbibliothek erstellen:
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient, SubscriptionClient
from azure.mgmt.storage import StorageManagementClient
from azure.mgmt.storage.models import FileShare
# Create the credential for authentication
credential = DefaultAzureCredential()
# Define variables
subscription_id = "<subscription-id>"
resource_group_name = "<resource-group-name>"
storage_account_name = "<storage-account-name>"
share_name = "sample-file-share"
# Create clients
resource_client = ResourceManagementClient(credential, subscription_id)
subscription_client = SubscriptionClient(credential)
storage_client = StorageManagementClient(credential, subscription_id)
# Register Microsoft.Storage resource provider, if not already registered
provider = resource_client.providers.get('Microsoft.Storage')
if provider.registration_state == "NotRegistered":
resource_client.providers.register('Microsoft.Storage')
# Create a file share
file_share = storage_client.file_shares.create(
resource_group_name=resource_group_name,
account_name=storage_account_name,
share_name=share_name,
file_share=FileShare(
share_quota=1 # Share size in GiB
# Add other file share properties here
)
)
Sie können die Dateifreigabeeigenschaften mithilfe der FileShare Klasse konfigurieren. Das vorherige Beispiel zeigt, wie die share_quota Eigenschaft festgelegt wird. Weitere Informationen finden Sie in der StorageManagementClient-Klassenreferenz .
Hinweis
Zum Ausführen des Registrierungsvorgangs benötigen Sie Berechtigungen für die folgende Azure RBAC-Aktion: Microsoft.Storage/register/action. Diese Berechtigung ist in den integrierten Rollen "Mitwirkender" und "Besitzer" enthalten.
Beispiel: Auflisten von Dateifreigaben und Momentaufnahmen mithilfe der Azure Storage-Verwaltungsbibliothek
Das folgende Codebeispiel zeigt, wie Dateifreigaben und Schnappschüsse in einem Speicherkonto angezeigt werden.
from azure.identity import DefaultAzureCredential
from azure.mgmt.storage import StorageManagementClient
# Create the credential for authentication
credential = DefaultAzureCredential()
# Define variables
subscription_id = "<subscription-id>"
resource_group_name = "<resource-group-name>"
storage_account_name = "<storage-account-name>"
expand = "snapshots" # Include snapshots in the response
# Create storage management client
storage_client = StorageManagementClient(credential, subscription_id)
# List all file shares with their snapshots
file_shares = storage_client.file_shares.list(
resource_group_name=resource_group_name,
account_name=storage_account_name,
expand=expand
)
# Iterate over the file shares and print them along with any snapshots
for share in file_shares:
print(f"Resource name: {share.name}")
if share.snapshot_time:
print(f"Snapshot: {share.snapshot_time}")
Verwandte Inhalte
Weitere Informationen zur Entwicklung mit Azure Files finden Sie in den folgenden Ressourcen: