Aracılığıyla paylaş


Python ile Azure Dosyalar için geliştirme

Verileri depolamak için Azure Dosyalar kullanan Python uygulamaları geliştirmeyi öğrenin. Azure Dosyalar, bulutta yönetilen bir dosya paylaşımı hizmetidir. Endüstri standardı Sunucu İleti Bloğu (SMB) ve Ağ Dosya Sistemi (NFS) protokolleri aracılığıyla erişilebilen tam olarak yönetilen dosya paylaşımları sağlar. Azure Dosyalar ayrıca dosya paylaşımlarına program aracılığıyla erişim için bir REST API sağlar.

Bu makalede Python'da Azure Dosyalar ile geliştirmenin farklı yaklaşımları ve uygulamanızın gereksinimlerine en uygun yaklaşımı seçmeyi öğreneceksiniz. Ayrıca Azure Dosyalar kaynaklarıyla etkileşim kuran temel bir konsol uygulaması oluşturmayı da öğrenirsiniz.

Şunun için geçerlidir:

Yönetim modeli Faturalama modeli Medya katmanı Yedeklilik KOBİ Ağ Dosya Sistemi (NFS)
Microsoft.Storage Sağlanan versiyon 2 HDD (standart) Yerel (LRS) Evet Yok
Microsoft.Storage Sağlanan versiyon 2 HDD (standart) Bölge (ZRS) Evet Yok
Microsoft.Storage Sağlanan versiyon 2 HDD (standart) Coğrafi (GRS) Evet Yok
Microsoft.Storage Sağlanan versiyon 2 HDD (standart) GeoZone (GZRS) Evet Yok
Microsoft.Storage Tahsis edilen v1 SSD (üst düzey) Yerel (LRS) Evet Yok
Microsoft.Storage Tahsis edilen v1 SSD (üst düzey) Bölge (ZRS) Evet Yok
Microsoft.Storage Kullandıkça ödeme yap HDD (standart) Yerel (LRS) Evet Yok
Microsoft.Storage Kullandıkça ödeme yap HDD (standart) Bölge (ZRS) Evet Yok
Microsoft.Storage Kullandıkça ödeme yap HDD (standart) Coğrafi (GRS) Evet Yok
Microsoft.Storage Kullandıkça ödeme yap HDD (standart) GeoZone (GZRS) Evet Yok

Azure Dosyalar ile Python uygulaması geliştirme hakkında

Azure Dosyalar, Python geliştiricilerinin Azure Dosyalar'daki verilere erişmesi ve kaynakları yönetmesi için çeşitli yollar sunar. Aşağıdaki tabloda yaklaşımlar listelenir, nasıl çalıştıkları özetler ve her yaklaşımın ne zaman kullanılacağına ilişkin yönergeler sağlanır:

Yaklaşım Nasıl çalışır? Ne zaman kullanılır?
Standart dosya giriş/çıkış kitaplıkları SMB veya NFS kullanarak bağlanmış Azure dosya paylaşımları üzerinden işletim sistemi seviyesindeki API çağrılarını kullanır. SMB/NFS kullanarak bir dosya paylaşımını bağladığınızda, Python gibi bir programlama dili veya çerçevesi için os ve io dosya G/Ç kitaplıklarını kullanabilirsiniz. Standart dosya G/Ç kullanan mevcut koda sahip iş kolu uygulamalarınız var ve uygulamanın bir Azure dosya paylaşımıyla çalışması için kodu yeniden yazmak istemiyorsunuz.
FileREST API Azure Dosyalar'da depolanan verilerle etkileşime geçmek için HTTPS uç noktalarını doğrudan çağırır. Dosya paylaşımı kaynakları üzerinde programlı denetim sağlar. Azure SDK, FileREST API'sini temel alan Dosya Paylaşımları istemci kitaplığını (azure-storage-file-share) sağlayarak tanıdık Python programlama dili paradigmalarıyla FileREST API işlemleriyle etkileşim kurmanızı sağlar. Müşteriler için katma değerli bulut hizmetleri ve uygulamaları oluşturuyorsunuz ve Python dosya G/Ç kitaplıkları aracılığıyla kullanılamayan gelişmiş özellikleri kullanmak istiyorsunuz.
Depolama kaynak sağlayıcısı REST API'si Depolama hesaplarını ve dosya paylaşımlarını yönetmek için Azure Resource Manager'ı (ARM) kullanır. Çeşitli kaynak yönetimi işlemleri için REST API uç noktalarını çağırır. Uygulamanızın veya hizmetinizin depolama hesaplarını veya dosya paylaşımlarını oluşturma, silme veya güncelleştirme gibi kaynak yönetimi görevlerini gerçekleştirmesi gerekir.

Bu yaklaşımlar hakkında genel bilgi için bkz. Azure Dosyalar ile uygulama geliştirmeye genel bakış.

Bu makale, aşağıdaki yaklaşımları kullanarak Azure Dosyalar kaynaklarıyla çalışmaya odaklanır:

Önkoşullar

Projenizi ayarlayın

Bu bölüm, Azure Dosyalar ile çalışmak üzere bir proje hazırlama işleminde size yol gösterir.

Proje dizininizden komutunu kullanarak pip install uygulamanızın gereksinimlerine göre paketleri yükleyin. Aşağıdaki örnekte Azure Dosya Paylaşımları istemci kitaplığının, Depolama yönetimi istemci kitaplığının ve Azure Kimlik kitaplığının nasıl yükleneceği gösterilmektedir. Azure hizmetlerine parolasız bağlantılar için azure-identity paketi gereklidir.

pip install azure-identity
pip install azure-storage-file-share
pip install azure-mgmt-resource
pip install azure-mgmt-storage

Kod dosyanızı açın ve gerekli içe aktarma ifadelerini ekleyin.

Python os ve io kitaplıklarını kullanmayı planlıyorsanız, .py dosyanıza aşağıdakileri ekleyin:

import os
import io

Azure Depolama Dosya Paylaşımları istemci kitaplığını kullanmayı planlıyorsanız, .py dosyanıza aşağıdakileri ekleyin:

from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareClient, ShareDirectoryClient, ShareFileClient

Azure Depolama yönetim kitaplıklarını kullanmayı planlıyorsanız , .py dosyanıza aşağıdakileri ekleyin:

from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient

Python dosya giriş/çıkış (G/Ç) kitaplıklarını kullanarak Azure Dosyalar ile çalışma

Standart dosya G/Ç kitaplıkları, Azure Dosyalar kaynaklarına erişmenin ve bu kaynaklarla çalışmanın en yaygın yoludur. SMB veya NFS kullanarak bir dosya paylaşımı bağladığınızda, işletim sisteminiz yerel dosya sistemi için API isteklerini yeniden yönlendirir. Bu yaklaşım, paylaşımdaki dosya ve dizinlerle etkileşim kurmak için os veya io gibi standart dosya G/Ç kitaplıklarını kullanmanıza olanak tanır.

Uygulamanız şunları gerektirdiğinde Python dosya G/Ç kitaplıklarını kullanmayı göz önünde bulundurun:

  • Uygulama uyumluluğu: Python dosya G/Ç kitaplıklarını zaten kullanan mevcut koda sahip iş kolu uygulamaları için idealdir. Uygulamanın bir Azure dosya paylaşımıyla çalışması için kodu yeniden yazmanız gerekmez.
  • Kullanım kolaylığı: Python dosya G/Ç kitaplıkları geliştiriciler tarafından iyi bilinir ve kullanımı kolaydır. Azure Dosyalar'ın önemli bir değer teklifi, yerel dosya sistemi API'lerini SMB ve NFS aracılığıyla kullanıma sunmasıdır.

Bu bölümde, Azure Dosyalar kaynaklarıyla çalışmak için Python dosya G/Ç kitaplıklarını kullanmayı öğreneceksiniz.

Daha fazla bilgi ve örnek için aşağıdaki kaynaklara bakın:

  • Dosya G/Ç için Python kütüphaneleri: os ve io

Dosya paylaşımını bağlamak

Python dosya G/Ç kitaplıklarını kullanmak için önce bir dosya paylaşımı bağlamanız gerekir. SMB veya NFS kullanarak dosya paylaşımını bağlama yönergeleri için aşağıdaki kaynaklara bakın:

Bu makalede, Windows'ta bağlı bir SMB dosya paylaşımına başvurmak için aşağıdaki yolu kullanacağız:

file_share_path = "Z:\\file-share"

Örnek: Python dosya G/Ç kitaplıklarını kullanarak bir dosya paylaşımına bağlanma ve dizinleri listeleme

Aşağıdaki kod örneği, bir dosya paylaşımına bağlanmayı ve paylaşımdaki dizinleri listelemeyi gösterir:

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)

Örnek: Python dosya G/Ç kitaplıklarını kullanarak dosya paylaşımındaki bir dosyaya yazma

Aşağıdaki kod örneğinde bir dosyaya metin yazma ve ekleme işlemi gösterilmektedir:

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")

Örnek: Python dosya G/Ç kitaplıklarını kullanarak dosya ACL'lerini listeleme

Aşağıdaki kod örneğinde, bir dosya için temel erişim denetim listelerinin (ACL) nasıl numaralandırılası gösterilmektedir:

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)

Python için Dosya Paylaşımları istemci kitaplığını kullanarak Azure Dosyalar verileriyle çalışma

FileREST API'sinde Azure Dosyalar'a program aracılığıyla erişim sağlanır. Dosya paylaşımları, dizinler ve dosyalar üzerinde işlem gerçekleştirmek için HTTPS uç noktalarını çağırmanıza olanak tanır. FileREST API'si, yerel protokoller aracılığıyla kullanılamayabilecek yüksek ölçeklenebilirlik ve gelişmiş özellikler için tasarlanmıştır. Azure SDK, FileREST API'sini oluşturan Python için Dosya Paylaşımları istemci kitaplığı gibi istemci kitaplıkları sağlar.

Uygulamanız şunları gerektiriyorsa FileREST API'sini ve Dosya Paylaşımı istemci kitaplığını kullanmayı göz önünde bulundurun:

  • Gelişmiş özellikler: Yerel protokoller aracılığıyla kullanılamayabilecek işlemlere ve özelliklere erişin.
  • Özel bulut tümleştirmeleri: Doğrudan Azure Dosyaları ile etkileşim kuran yedekleme, virüsten koruma veya veri yönetimi gibi özel katma değerli hizmetler oluşturun.
  • Performans iyileştirmesi: Veri düzlemi işlemlerini kullanarak yüksek ölçekli senaryolarda performans avantajlarından yararlanın.

FileREST API'sinde Azure Dosyalar kaynak hiyerarşisi olarak modellenir ve dizin veya dosya düzeyinde gerçekleştirilen işlemler için önerilir. Dosya hizmeti veya dosyapaylaşımı düzeyinde gerçekleştirilen işlemler için Depolama kaynak sağlayıcısı REST API'sini tercih etmelisiniz.

Bu bölümde, Azure Dosyaları kaynaklarıyla çalışmak için Dosya Paylaşımı istemci kütüphanesini nasıl kullanacağınızı öğrenirsiniz.

Daha fazla bilgi ve örnek için aşağıdaki kaynaklara bakın:

Erişimi yetkilendirme ve istemci oluşturma

Bir uygulamayı Azure Dosyalar'a bağlamak için bir ShareClient nesne oluşturun. Bu nesne, Azure Dosyalar kaynaklarıyla çalışmak için başlangıç noktanızdır. Aşağıdaki kod örnekleri, farklı yetkilendirme mekanizmaları kullanarak bir ShareClient nesnenin nasıl oluşturulacağını gösterir.

Microsoft Entra ID ile yetkilendirmek için bir güvenlik ilkesi kullanmanız gerekir. İhtiyacınız olan güvenlik sorumlusunun türü, uygulamanızın nerede çalıştığına bağlıdır. Bu tabloyu kılavuz olarak kullanın.

Uygulamanın çalıştığı yer Güvenlik sorumlusu Yönerge
Yerel makine (geliştirme ve test) Servis Principal Uygulamayı kaydetmeyi, bir Microsoft Entra grubu ayarlamayı, rolleri atamayı ve ortam değişkenlerini yapılandırmayı öğrenmek için bkz . Geliştirici hizmet sorumlularını kullanarak erişimi yetkilendirme
Yerel makine (geliştirme ve test) Kullanıcı kimliği Microsoft Entra grubu ayarlamayı, rol atamayı ve Azure'da oturum açmayı öğrenmek için bkz . Geliştirici kimlik bilgilerini kullanarak erişimi yetkilendirme
Azure'da barındırılan Denetim Altındaki Kimlik Azure'da barındırılan uygulamalardan yönetilen kimlik kullanarak erişimi yetkilendirme hakkında bilgi almak için Yönetilen kimlik etkinleştirme ve rolleri atama< /c0> konusuna bakın.
Azure dışında barındırılan (örneğin, şirket içi uygulamalar) Servis Principal Uygulamayı kaydetmeyi, rolleri atamayı ve ortam değişkenlerini yapılandırmayı öğrenmek için bkz . Uygulama hizmet sorumlusu kullanarak şirket içi uygulamalardan erişimi yetkilendirme

Bu makaledeki kod örnekleriyle çalışmak için Azure RBAC yerleşik rolünü Depolama Dosyası Verileri Ayrıcalıklı Katkıda Bulunanı güvenlik sorumlusuna atayın. Bu rol, ayarlanan dosya/dizin düzeyi NTFS izinlerinden bağımsız olarak tüm yapılandırılmış depolama hesapları için paylaşımlardaki tüm verilere tam okuma, yazma, değiştirme ve silme erişimi sağlar. Daha fazla bilgi için bkz. REST üzerinden Azure Dosyalar OAuth ile Microsoft Entra ID kullanarak Azure dosya paylaşımlarını erişme.

DefaultAzureCredential kullanarak erişimi yetkilendirme

Erişimi yetkilendirmenin ve Azure Dosyalar'a bağlanmanın kolay ve güvenli bir yolu , DefaultAzureCredential örneği oluşturarak OAuth belirteci almaktır. Ardından bu kimlik bilgilerini kullanarak bir ShareClient nesne oluşturabilirsiniz.

Aşağıdaki örnek, kullanılarak ShareClientyetkilendirilmiş bir DefaultAzureCredential nesne oluşturur ve ardından paylaşımdaki bir ShareDirectoryClient dizinle çalışmak için bir nesne oluşturur:

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")

Kullanıcıların kimliğini doğrulamak için tam olarak hangi kimlik bilgisi türünü kullandığınızı biliyorsanız, Python için Azure Identity istemci kitaplığındaki diğer sınıfları kullanarak bir OAuth belirteci alabilirsiniz. Bu sınıflar TokenCredential sınıfından türetilir.

Bu yetkilendirme mekanizmalarının her biri hakkında daha fazla bilgi edinmek için bkz. Dosya verilerine erişimi yetkilendirmeyi seçme.

Örnek: Dosya Paylaşımları istemci kitaplığını kullanarak dosyaları kopyalama

Aşağıdaki yöntemi kullanarak dosyaları bir dosya paylaşımı içinde veya dosya paylaşımları arasında kopyalayabilirsiniz:

Bir nesneden BlobClient aşağıdaki yöntemi kullanarak bir dosyayı hedef bloba kopyalayabilirsiniz:

Aşağıdaki kod örneği, bir dosyanın başka bir dosya paylaşımındaki bir dosyaya nasıl kopyalanmasını gösterir:

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)

Örnek: Dosya Paylaşımları istemci kitaplığını kullanarak dosya kiralama

Kira, Azure tarafından kira kimliği aracılığıyla yönetilen bir dosyada kilit oluşturur. Kira, dağıtılmış bir sistemdeki birden çok istemcideki dosyalara erişimi koordine etmek için bir mekanizma sağlar. Bir dosya üzerindeki kiralama, özel yazma ve silme erişimi sağlar. Kira durumları ve eylemleri hakkında daha fazla bilgi edinmek için bkz. Kira Dosyası.

Aşağıdaki kod örneğinde kira istemcisi oluşturma, dosyada sonsuz süreli kiralama alma ve kirayı serbest bırakma işlemi gösterilmektedir:

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()

Hem SMB hem de FileREST API'sini kullanırken, FileREST API kiralamalarının dosya kilitlerini yönetmek için kullanıldığını, SMB'nin ise işletim sistemi tarafından yönetilen dosya sistemi kilitlerini kullandığını unutmayın. SMB ile FileREST API arasındaki dosya kilitleme etkileşimlerini yönetme hakkında daha fazla bilgi edinmek için bkz. Dosya kilitlerini yönetme.

Örnek: Dosya Paylaşımları istemci kitaplığını kullanarak paylaşım anlık görüntülerini oluşturma ve listeleme

Paylaşım anı görüntüleri, bir dosya paylaşımının belirli bir noktadaki salt okunur kopyalarıdır. Bir dosya paylaşımının anlık görüntüsünü oluşturabilir ve ardından anlık görüntünün oluşturulduğu sırada paylaşımdaki verilere erişmek için anlık görüntüyü kullanabilirsiniz. Ayrıca bir dosya paylaşımındaki tüm anlık görüntüleri listeleyebilir ve paylaşım anlık görüntülerini silebilirsiniz.

Aşağıdaki kod örneğinde paylaşım anlık görüntüsü oluşturma, dosya paylaşımındaki anlık görüntüleri listeleme ve paylaşım anlık görüntüsünde kök dizinde dolaşma işlemleri gösterilmektedir:

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)

Uyarı

OAuth belirteçleri, örneğin DefaultAzureCredential kullanılırken elde edilenler gibi, dosya paylaşımı düzeyinde veri düzlemi işlemleri için izin verilmez. Paylaşım anlık görüntüleriyle çalışmak için istemci nesnesinin hesap anahtarı kullanılarak yetkilendirilmiş olması gerekir. ShareClient Bu kod örneğinde oluşturulan nesne, hesap anahtarını içeren bir bağlantı dizesi kullanır.

Hesap anahtarlarının veya bağlantı dizelerinin depolanması bir güvenlik riski oluşturur. Bunları yalnızca Microsoft Entra kimlik doğrulaması kullanılamadığında kullanmalısınız. Hesap anahtarlarını Azure Key Vault'ta güvenli bir şekilde depolama hakkında daha fazla bilgi edinmek için bkz. Azure Key Vault yönetilen depolama hesabı anahtarları hakkında.

Azure Depolama yönetim kitaplıklarını kullanarak Azure Dosyalar kaynaklarını yönetme

Azure Depolama yönetim kitaplıkları, Azure Depolama kaynak sağlayıcısı REST API'sinde oluşturulur. Azure Depolama kaynak sağlayıcısı, Azure Resource Manager'ı temel alan bir hizmettir ve hem bildirim temelli (şablonlar) hem de kesinlik temelli (doğrudan API çağrısı) yöntemlerini destekler. Azure Depolama kaynak sağlayıcısı REST API'si, dosya paylaşımları dahil olmak üzere Azure Depolama kaynaklarına programlı erişim sağlar. Azure SDK, Azure Depolama kaynak sağlayıcısı REST API'sini oluşturan yönetim kitaplıkları sağlar.

Yönetim kitaplıkları , dosya hizmeti veya dosya paylaşımı düzeyinde gerçekleştirilen işlemler için önerilir. Bu bölümde, Azure Dosyalar kaynaklarını yönetmek için Azure Depolama yönetim kitaplıklarını kullanmayı öğreneceksiniz.

Örnek: Azure Depolama yönetim kitaplığını kullanarak dosya paylaşımı oluşturma

Aşağıdaki kod örneğinde en üst düzey ArmClient nesne oluşturma, Depolama kaynak sağlayıcısını bir aboneliğe kaydetme ve Azure Depolama yönetim kitaplığını kullanarak dosya paylaşımı oluşturma işlemleri gösterilmektedir:

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
    )
)

sınıfını kullanarak FileShare dosya paylaşımı özelliklerini yapılandırabilirsiniz. Önceki örnek, share_quota özelliğinin nasıl ayarlanacağını gösterir. Daha fazla bilgi edinmek için bkz. StorageManagementClient sınıf başvurusu.

Uyarı

Kayıt işlemini gerçekleştirmek için şu Azure RBAC eylemi için izinlere ihtiyacınız vardır: Microsoft.Storage/register/action. Bu izin Katılımcı ve Sahip yerleşik rollerinin parçasıdır.

Örnek: Azure Depolama yönetim kitaplığını kullanarak dosya paylaşımlarını ve anlık görüntüleri listeleme

Aşağıdaki kod örneği, bir depolama hesabında dosya paylaşımlarını ve anlık görüntüleri listelemeyi gösterir:

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}")

Azure Dosyalar ile geliştirme hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın: