Dela via


Utveckla för Azure Files med Java

Lär dig hur du utvecklar Java-program som använder Azure Files för att lagra data. Azure Files är en hanterad fildelningstjänst i molnet. Den tillhandahåller fullständigt hanterade filresurser som är tillgängliga via branschstandardprotokollen Server Message Block (SMB) och NFS (Network File System). Azure Files tillhandahåller också ett REST-API för programmatisk åtkomst till filresurser.

I den här artikeln får du lära dig om de olika metoderna för att utveckla med Azure Files i Java och hur du väljer den metod som bäst passar appens behov. Du får också lära dig hur du skapar en grundläggande konsolapp som interagerar med Azure Files-resurser.

Gäller för

Hanteringsmodell Faktureringsmodell Medieklass Redundans SMB NFS
Microsoft.Storage Provisionerad v2 HDD (standard) Lokalt (LRS) Ja Inga
Microsoft.Storage Provisionerad v2 HDD (standard) Zon (ZRS) Ja Inga
Microsoft.Storage Provisionerad v2 HDD (standard) Geo (GRS) Ja Inga
Microsoft.Storage Provisionerad v2 HDD (standard) GeoZone (GZRS) Ja Inga
Microsoft.Storage Tillhandahållen v1 SSD (hög kvalitet) Lokalt (LRS) Ja Inga
Microsoft.Storage Tillhandahållen v1 SSD (hög kvalitet) Zon (ZRS) Ja Inga
Microsoft.Storage Betala efter hand HDD (standard) Lokalt (LRS) Ja Inga
Microsoft.Storage Betala efter hand HDD (standard) Zon (ZRS) Ja Inga
Microsoft.Storage Betala efter hand HDD (standard) Geo (GRS) Ja Inga
Microsoft.Storage Betala efter hand HDD (standard) GeoZone (GZRS) Ja Inga

Om Java-apputveckling med Azure Files

Azure Files erbjuder flera sätt för Java-utvecklare att komma åt data och hantera resurser i Azure Files. I följande tabell visas metoderna, sammanfattar hur de fungerar och ger vägledning om när du ska använda varje metod:

Tillvägagångssätt Så här fungerar det När man ska använda
Standardbibliotek för fil-I/O Använder API-anrop på operativsystemnivå via Azure-fildelningar som monterade med SMB eller NFS. När du ansluter en filresurs med SMB/NFS kan du använda fil-I/O-bibliotek för ett programmeringsspråk eller ramverk, till exempel java.io och java.nio för Java. Du har verksamhetsspecifika appar med befintlig kod som använder standardfil-I/O och du vill inte skriva om kod för att appen ska fungera med en Azure-filresurs.
FileREST API Anropar HTTPS-slutpunkter direkt för att interagera med data som lagras i Azure Files. Ger programmatisk kontroll över fildelningsresurser. Azure SDK tillhandahåller klientbiblioteket för filresurser (com.azure.storage.file.share) som bygger på FileREST-API:et, så att du kan interagera med FileREST API-åtgärder via välbekanta Java-programmeringsspråkparadigm. Du skapar mervärdesmolntjänster och appar för kunder och vill använda avancerade funktioner som inte är tillgängliga via standardfil-I/O-bibliotek.
REST API för lagringsresursprovider Använder Azure Resource Manager (ARM) för att hantera lagringskonton och filresurser. Anropar REST API-slutpunkter för olika resurshanteringsåtgärder. Din app eller tjänst måste utföra resurshanteringsuppgifter, till exempel att skapa, ta bort eller uppdatera lagringskonton eller filresurser.

Allmän information om dessa metoder finns i Översikt över programutveckling med Azure Files.

Den här artikeln fokuserar på att arbeta med Azure Files-resurser med hjälp av följande metoder:

Förutsättningar

Konfigurera din miljö

Anmärkning

Den här artikeln använder verktyget Maven-kompilering för att skapa och köra exempelkoden. Andra byggverktyg, till exempel Gradle, fungerar också med Azure SDK för Java.

Använd Maven för att skapa en ny konsolapp eller öppna ett befintligt projekt. Följ de här stegen för att installera paket och lägga till nödvändiga import direktiv.

Installera paket

pom.xml Öppna filen i textredigeraren. Installera paketen genom att inkludera BOM-filen eller inkludera ett direkt beroende.

Inkludera BOM-filen

Lägg till azure-sdk-bom för att använda den senaste versionen av biblioteket. I följande kodfragment ersätter du {bom_version_to_target} platshållaren med versionsnumret. Med hjälp av azure-sdk-bom behöver du inte ange versionen av varje enskilt beroende. Mer information om bommen finns i AZURE SDK BOM README.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Lägg till följande beroendeelement i gruppen med beroenden. Azure-identitetsberoendet behövs för lösenordslösa anslutningar till Azure-tjänster . Observera att resource manager-artefakterna inte ingår i BOM-filen, så du måste lägga till dem som direkta beroenden.

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-storage-file-share</artifactId>
</dependency>
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-identity</artifactId>
</dependency>
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-core-management</artifactId>
</dependency>
<dependency>
  <groupId>com.azure.resourcemanager</groupId>
  <artifactId>azure-resourcemanager</artifactId>
  <version>{package_version_to_target}</version>
</dependency>
<dependency>
  <groupId>com.azure.resourcemanager</groupId>
  <artifactId>azure-resourcemanager-storage</artifactId>
  <version>{package_version_to_target}</version>
</dependency>

Inkludera ett direkt beroende

Om du vill ha ett beroende av en viss version av biblioteket lägger du till det direkta beroendet i projektet:

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-storage-file-share</artifactId>
  <version>{package_version_to_target}</version>
</dependency>
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-identity</artifactId>
  <version>{package_version_to_target}</version>
</dependency>
<dependency>
  <groupId>com.azure.resourcemanager</groupId>
  <artifactId>azure-resourcemanager</artifactId>
  <version>{package_version_to_target}</version>
</dependency>
<dependency>
  <groupId>com.azure.resourcemanager</groupId>
  <artifactId>azure-resourcemanager-storage</artifactId>
  <version>{package_version_to_target}</version>
</dependency>
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-core-management</artifactId>
  <version>{package_version_to_target}</version>
</dependency>

Inkludera importdirektiv

Öppna sedan kodfilen och lägg till de direktiv som krävs import . I det här exemplet lägger vi till följande direktiv i filen App.java :

import com.azure.identity.*;
import com.azure.storage.file.share.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.models.*;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;

Om du planerar att använda Java-fil-I/O-biblioteken måste du också lägga till följande importdirektiv:

import java.io.*;
import java.nio.file.*;

Arbeta med Azure Files med hjälp av Java-fil-I/O-bibliotek

Standardfil-I/O-bibliotek är det vanligaste sättet att komma åt och arbeta med Azure Files-resurser. När du monterar en fildelning med SMB eller NFS omdirigerar operativsystemet API-begäranden för det lokala filsystemet. Med den här metoden kan du använda standardfil-I/O-bibliotek, till exempel java.io och java.nio, för att interagera med filer och kataloger i resursen.

Överväg att använda Java-fil-I/O-bibliotek när din app kräver:

  • Appkompatibilitet: Perfekt för verksamhetsspecifika appar med befintlig kod som redan använder Java-fil-I/O-bibliotek. Du behöver inte skriva om kod för att appen ska fungera med en Azure-filresurs.
  • Användarvänlighet: Java-fil-I/O-bibliotek är välkända av utvecklare och enkla att använda. Ett viktigt värdeförslag för Azure Files är att det exponerar interna filsystem-API:er via SMB och NFS.

I det här avsnittet får du lära dig hur du använder Java-fil-I/O-bibliotek för att arbeta med Azure Files-resurser.

Mer information och exempel finns i följande resurs:

Montera en filresurs

Om du vill använda Java-fil-I/O-biblioteken måste du först montera en fildelning. Se följande resurser för vägledning om hur du monterar en filresurs med SMB eller NFS.

I den här artikeln använder vi följande sökväg för att referera till en monterad SMB-filresurs i Windows:

String fileSharePath = "Z:\\file-share";

Exempel: Ansluta till en filresurs och räkna upp kataloger med hjälp av Java-fil-I/O-bibliotek

Följande kodexempel visar hur du ansluter till en filresurs och listar katalogerna i resursen:

import java.io.*;
import java.nio.file.*;

// Add the following code to a new or existing function

String fileSharePath = "Z:\\file-share";

try {
    File directory = new File(fileSharePath);
    File[] dirs = directory.listFiles(File::isDirectory);
            
    if (dirs != null) {
        for (File dir : dirs) {
            System.out.println(dir.getName());
        }
        System.out.println(dirs.length + " directories found.");
    }
} catch (Exception e) {
    System.out.println("Error: " + e.getMessage());
}

Exempel: Skriva till en fil i en filresurs med hjälp av Java-fil-I/O-bibliotek

I följande kodexempel visas hur du skriver och lägger till text i en fil:

import java.io.*;
import java.nio.file.*;
import java.util.Arrays;

// Add the following code to a new or existing function

String fileSharePath = "Z:\\file-share";
String fileName = "test.txt";

try {
    String textToWrite = "First line" + System.lineSeparator();
    Path filePath = Paths.get(fileSharePath, fileName);
        
    // Write initial content to file
    Files.write(filePath, textToWrite.getBytes());
    System.out.println("Initial text written to file");
        
    // Append additional lines to the file
    String[] textToAppend = { "Second line", "Third line" };
    Files.write(filePath, 
                Arrays.asList(textToAppend),
                StandardOpenOption.APPEND);
    System.out.println("Additional lines appended to file");
} catch (IOException ex) {
    System.out.println("Error writing to file: " + ex.getMessage());
}

Exempel: Låsa en fil i en fildelning med hjälp av Java-fil-I/O-bibliotek

SMB-klienter som monterar fildelningar kan använda filsystemslåsningsmekanismer för att hantera åtkomst till delade filer.

Följande kodexempel visar hur du låser en fil i en filresurs:

import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.file.*;

// Add the following code to a new or existing function

String fileSharePath = "Z:\\file-share";
String fileName = "test.txt";
String filePath = Paths.get(fileSharePath, fileName).toString();

try (
    FileOutputStream fos = new FileOutputStream(filePath);
    FileChannel fileChannel = fos.getChannel()) {

    // Acquire an exclusive lock on this file
    FileLock lock = fileChannel.lock();

    System.out.println("File is locked.");

    // Perform file operations here

    // Release the lock
    lock.release();
    System.out.println("File lock released.");

} catch (Exception e) {
    e.printStackTrace();
}

När du använder både SMB och FileREST API:et bör du tänka på att FileREST API använder leasingar för att hantera fillås, medan SMB använder filsystemlås som hanteras av operativsystemet. Mer information om hur du hanterar fillåsningsinteraktioner mellan SMB och FileREST-API:et finns i Hantera fillås.

Exempel: Räkna upp fil-ACL:er med hjälp av Java-fil-I/O-bibliotek

I följande kodexempel visas hur du räknar upp åtkomstkontrollistor (ACL:er) för en fil:

import java.nio.file.*;
import java.nio.file.attribute.AclEntry;
import java.nio.file.attribute.AclFileAttributeView;
import java.util.List;

// Add the following code to a new or existing function

String fileSharePath = "Z:\\file-share";
String fileName = "test.txt";
String filePath = Paths.get(fileSharePath, fileName).toString();

try {
    Path path = Paths.get(filePath);

    // Get the ACL view for the file
    AclFileAttributeView aclView = Files.getFileAttributeView(
            path, AclFileAttributeView.class);

    // Get the ACL entries
    List<AclEntry> aclEntries = aclView.getAcl();

    // List all access rules for the file
    for (AclEntry entry : aclEntries) {
        System.out.println("Identity: " + entry.principal().getName());
        System.out.println("Access Control Type: " + entry.type());
        System.out.println("File System Rights: " + entry.permissions());
        System.out.println();
    }

    System.out.println(aclEntries.size() + " ACL entries found.");
} catch (Exception ex) {
    System.out.println("Error: " + ex.getMessage());
}

Arbeta med Azure Files med hjälp av klientbiblioteket för fildelningar i Java

FileREST-API:et ger programmatisk åtkomst till Azure Files. Det gör att du kan anropa HTTPS-slutpunkter för att utföra åtgärder på filresurser, kataloger och filer. FileREST-API:et är utformat för hög skalbarhet och avancerade funktioner som kanske inte är tillgängliga via interna protokoll. Azure SDK tillhandahåller klientbibliotek, till exempel filresursklientbiblioteket för Java, som bygger på FileREST-API:et.

Överväg att använda FileREST-API:et och filresursklientbiblioteket om programmet kräver:

  • Avancerade funktioner: Åtkomståtgärder och funktioner som inte är tillgängliga via interna protokoll.
  • Anpassade molnintegreringar: Skapa anpassade mervärdestjänster, till exempel säkerhetskopiering, antivirus eller datahantering, som interagerar direkt med Azure Files.
  • Prestandaoptimering: Dra nytta av prestandafördelar i storskaliga scenarier med hjälp av dataplansåtgärder.

FileREST API modellerar Azure Files som en resurshierarki och rekommenderas för åtgärder som utförs på katalog- eller filnivå . Du bör föredra REST-API:et för lagringsresursprovidern för åtgärder som utförs på filtjänst- eller filresursnivå .

I det här avsnittet får du lära dig hur du använder klientbiblioteket filresurser för Java för att arbeta med Azure Files-resurser.

Mer information och exempel finns i följande resurser:

Auktorisera åtkomst och skapa en klient

Skapa ett ShareClient objekt för att ansluta en app till Azure Files. Det här objektet är startpunkten för att arbeta med Azure Files-resurser. Följande kodexempel visar hur du skapar ett ShareClient objekt med olika auktoriseringsmekanismer.

Om du vill auktorisera med Microsoft Entra ID måste du använda en säkerhetsprincip. Vilken typ av säkerhetsprincip du behöver beror på var din applikation körs. Mer information om autentiseringsscenarier finns i Azure-autentisering med Java och Azure Identity.

Om du vill arbeta med kodexemplen i den här artikeln, tilldela Azure RBAC:s inbyggda roll Storage File Data Privileged Contributor till säkerhetsprincipalen. Den här rollen ger fullständig läs-, skriv-, ändrings-ACL:er och borttagningsåtkomst för alla data i resurserna för alla konfigurerade lagringskonton oavsett vilka NTFS-behörigheter på fil-/katalognivå som har angetts. Mer information finns i Access Azure file shares using Microsoft Entra ID with Azure Files OAuth over REST (Åtkomst till Azure-filresurser med Microsoft Entra-ID med Azure Files OAuth via REST).

Auktorisera åtkomst med defaultAzureCredential

Ett enkelt och säkert sätt att auktorisera åtkomst och ansluta till Azure Files är att hämta en OAuth-token genom att skapa en DefaultAzureCredential-instans . Du kan sedan använda den autentiseringsuppgiften för att skapa ett ShareClient objekt.

I följande exempel skapas ett ShareClient-objekt som har auktoriserats med DefaultAzureCredential. Sedan skapas ett ShareDirectoryClient-objekt som ska arbeta med en katalog i resursen:

import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.file.share.*;

// Add the following code to a new or existing function

String accountName = "<account-name>";
String shareName = "<share-name>";
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();

// Create the ShareClient
ShareClient shareClient = new ShareClientBuilder()
    .endpoint(String.format("https://%s.file.core.windows.net", accountName))
    .shareName(shareName)
    .credential(defaultAzureCredential)
    .buildClient();

// Create a client to interact with a directory in the share
ShareDirectoryClient directoryClient = shareClient.getDirectoryClient("sample-directory");

Om du vet exakt vilken typ av autentiseringsuppgifter du använder för att autentisera användare kan du hämta en OAuth-token med hjälp av andra klasser i Azure Identity-klientbiblioteket för Java. Dessa klasser härleds från klassen TokenCredential .

Mer information om var och en av dessa auktoriseringsmekanismer finns i Välj hur du auktoriserar åtkomst till fildata.

Exempel: Kopiera filer med hjälp av kundbiblioteket för fildelning

Du kan kopiera filer i en filresurs eller mellan filresurser med hjälp av följande metod:

Du kan kopiera en fil till en målblob med hjälp av följande metod från ett BlockBlobClient objekt:

I följande kodexempel visas hur du kopierar en fil till en fil i en annan filresurs:

import java.time.*;
import java.util.*;

import com.azure.core.credential.TokenCredential;
import com.azure.core.util.polling.*;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.file.share.*;
import com.azure.storage.file.share.models.*;

// Add the following code to a new or existing function

String accountName = "<account-name>";
String srcShareName = "src-file-share";
String destShareName = "dest-file-share";
String srcFilePath = "src/path/to/file";
String destFilePath = "dest/path/to/file";

TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();

ShareFileClient srcShareFileClient = new ShareFileClientBuilder()
    .endpoint(String.format("https://%s.file.core.windows.net", accountName))
    .shareName(srcShareName)
    .shareTokenIntent(ShareTokenIntent.BACKUP)
    .resourcePath(srcFilePath)
    .credential(defaultAzureCredential)
    .buildFileClient();

ShareFileClient destShareFileClient = new ShareFileClientBuilder()
    .endpoint(String.format("https://%s.file.core.windows.net", accountName))
    .shareName(destShareName)
    .shareTokenIntent(ShareTokenIntent.BACKUP)
    .resourcePath(destFilePath)
    .credential(defaultAzureCredential)
    .buildFileClient();

// Copy the file from the source share to the destination share
SyncPoller<ShareFileCopyInfo, Void> poller = destShareFileClient
        .beginCopy(srcShareFileClient.getFileUrl(),
                Collections.singletonMap("file", "metadata"),
                Duration.ofSeconds(2));

final PollResponse<ShareFileCopyInfo> pollResponse = poller.poll();
final ShareFileCopyInfo value = pollResponse.getValue();
System.out.printf("Copy source: %s. Status: %s.%n", value.getCopySourceUrl(), value.getCopyStatus());

Exempel: Hyr en fil med hjälp av klientbiblioteket för fildelningar

Ett lån skapar ett lås på en fil som hanteras av Azure via ett låne-ID. Leasingavtalet syftar till att samordna åtkomsten till filer mellan flera klienter i ett distribuerat system. Ett lån på en fil ger exklusiv skriv- och borttagningsåtkomst. Mer information om lånetillstånd och åtgärder finns i Lånefil.

I följande kodexempel visas hur du skapar en låneklient, skaffar ett lån med obegränsad varaktighet för en fil och släpper lånet:

import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.storage.file.share.*;
import com.azure.storage.file.share.models.*;
import com.azure.storage.file.share.specialized.*;

// Add the following code to a new or existing function

String accountName = "<account-name>";
String shareName = "sample-file-share";
String filePath = "path/to/file";
        
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();

ShareFileClient fileClient = new ShareFileClientBuilder()
    .endpoint(String.format("https://%s.file.core.windows.net", accountName))
    .shareName(shareName)
    .shareTokenIntent(ShareTokenIntent.BACKUP)
    .resourcePath(filePath)
    .credential(defaultAzureCredential)
    .buildFileClient();

// Get a ShareLeaseClient
ShareLeaseClient fileLeaseClient = new ShareLeaseClientBuilder()
        .fileClient(fileClient)
        .shareTokenIntent(ShareTokenIntent.BACKUP)
        .buildClient();
        
try {
    // Acquire a lease on the file with infinite duration
    fileLeaseClient.acquireLease();
    System.out.println("Lease acquired successfully");
            
    // Do something with the file

} catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
} finally {
    // Release the lease when finished
    try {
        fileLeaseClient.releaseLease();
        System.out.println("Lease released successfully.");
    } catch (Exception e) {
        System.err.println(e.getMessage());
    }
}

När du använder både SMB och FileREST API:et bör du tänka på att FileREST API använder leasingar för att hantera fillås, medan SMB använder filsystemlås som hanteras av operativsystemet. Mer information om hur du hanterar fillåsningsinteraktioner mellan SMB och FileREST-API:et finns i Hantera fillås.

Exempel: Skapa och lista ögonblicksbilder med hjälp av klientbiblioteket för fildelningar

Resursögonblicksbilder är skrivskyddade kopior av en filresurs vid en tidpunkt. Du kan skapa en ögonblicksbild av en filresurs och sedan använda ögonblicksbilden för att komma åt data i resursen när ögonblicksbilden skapades. Du kan också visa en lista över alla ögonblicksbilder i en fildelning och ta bort fildelningens ögonblicksbilder.

Följande kodexempel visar hur du skapar en resursögonblicksbild, listar ögonblicksbilderna i en filresurs och passerar katalogträdet i en resursögonblicksbild:

import com.azure.storage.file.share.*;
import com.azure.storage.file.share.models.*;

// Add the following code to a new or existing function

public static void main(String[] args) {
    String connectionString = "<connection-string>";

    // Create a ShareServiceClient from which you can create clients for specific shares
    ShareServiceClient shareServiceClient = new ShareServiceClientBuilder()
    .connectionString(connectionString)
        .buildClient();
        
    // Get a client for a specific share
    ShareClient shareClient = shareServiceClient.getShareClient("sample-file-share");

    try {
        // Create a snapshot
        ShareSnapshotInfo snapshotInfo = shareClient.createSnapshot();
        System.out.println("Snapshot created: " + snapshotInfo.getSnapshot());

        // List snapshots in a share
        ListSharesOptions options = new ListSharesOptions()
            .setIncludeSnapshots(true);
                
        for (ShareItem shareItem : shareServiceClient.listShares(options, null, null)) {
            if (shareItem.getSnapshot() != null) {
                System.out.println("Share: " + shareItem.getName() + 
                    " (Snapshot: " + shareItem.getSnapshot() + ")");
            }
        }

        // List directories and files in a share snapshot
        String snapshotTimestamp = snapshotInfo.getSnapshot();
        ShareClient shareSnapshot = shareClient.getSnapshotClient(snapshotTimestamp);
        ShareDirectoryClient rootDir = shareSnapshot.getRootDirectoryClient();

        listDirectoryTree(rootDir);
            
    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());
    }
 }
    
private static void listDirectoryTree(ShareDirectoryClient directory) {
    // List all files and directories in current directory
    for (ShareFileItem fileItem : directory.listFilesAndDirectories()) {
        if (fileItem.isDirectory()) {
            System.out.println("Directory: " + fileItem.getName());
            // Recursively list subdirectory contents
            listDirectoryTree(directory.getSubdirectoryClient(fileItem.getName()));
        } else {
            System.out.println("File: " + fileItem.getName());
        }
    }
}

Anmärkning

OAuth-token, till exempel de som hämtas när du använder DefaultAzureCredential, tillåts inte för dataplansåtgärder på filandelnivå. Om du vill arbeta med delade ögonblicksbilder måste klientobjektet auktoriseras med hjälp av kontonyckeln. Objektet ShareClient som skapas i det här kodexemplet använder en anslutningssträng som innehåller kontonyckeln.

Lagring av kontonycklar eller anslutningssträngar utgör en säkerhetsrisk. Du bör bara använda dem när Microsoft Entra-autentisering inte är tillgänglig. Mer information om hur du lagrar kontonycklar på ett säkert sätt i Azure Key Vault finns i Om Azure Key Vault-hanterade lagringskontonycklar.

Hantera Azure Files-resurser med hjälp av Azure Storage-hanteringsbiblioteken

Azure Storage-hanteringsbiblioteken bygger på REST-API:et för Azure Storage-resursprovidern. Azure Storage-resursprovidern är en tjänst baserad på Azure Resource Manager och stöder både deklarativa metoder (mallar) och imperativa metoder (direkt API-anrop). REST-API:n för resursleverantören Azure Storage ger programmatisk åtkomst till Azure Storage-resurser, inklusive fildelningar. Azure SDK tillhandahåller hanteringsbibliotek som bygger på REST-API:et för Azure Storage-resursprovidern.

Hanteringsbiblioteken rekommenderas för åtgärder som utförs på filtjänst- eller filresursnivå . I det här avsnittet får du lära dig hur du använder Azure Storage-hanteringsbiblioteken för att hantera Azure Files-resurser.

Azure Storage-hanteringsbiblioteken bygger på REST-API:et för Azure Storage-resursprovidern. Azure Storage-resursprovidern är en tjänst baserad på Azure Resource Manager och stöder både deklarativa metoder (mallar) och imperativa metoder (direkt API-anrop). REST-API:n för resursleverantören Azure Storage ger programmatisk åtkomst till Azure Storage-resurser, inklusive fildelningar. Azure SDK tillhandahåller hanteringsbibliotek som bygger på REST-API:et för Azure Storage-resursprovidern.

Hanteringsbiblioteken rekommenderas för åtgärder som utförs på filtjänst- eller filresursnivå . I det här avsnittet får du lära dig hur du använder Azure Storage-hanteringsbiblioteken för att hantera Azure Files-resurser.

Exempel: Skapa en fildelning med hjälp av Azure Storage-hanteringsbibliotek

I följande kodexempel visas hur du skapar ett objekt på högsta nivå AzureResourceManager, registrerar lagringsresursprovidern med en prenumeration och skapar en fildelning med hjälp av Azure Storage-hanteringsbiblioteket.

import com.azure.identity.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.fluent.*;
import com.azure.resourcemanager.storage.fluent.models.*;

import com.azure.core.credential.TokenCredential;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;

// Add the following code to a new or existing function

String subscriptionID = "<subscription-id>";
String rgName = "<resource-group-name>";
String saName = "<storage-account-name>";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);

AzureResourceManager armClient = AzureResourceManager
        .configure()
        .authenticate(credential, profile)
        .withSubscription(subscriptionID);

// Check the registration state of the resource provider and register, if needed
if (armClient.providers().getByName("Microsoft.Storage").registrationState() == "NotRegistered")
    armClient.providers().register("Microsoft.Storage");

// Create a new file share

StorageManagementClient storageManagementClient = armClient.storageAccounts().manager().serviceClient();
FileSharesClient fileShare = storageManagementClient.getFileShares();

String shareName = "sample-file-share";
int quotaInGB = 1;
        
// Create the file share
fileShare.create(
    rgName,
    saName,
    shareName,
    new FileShareInner()
        .withShareQuota(quotaInGB)
);

Du kan konfigurera filresursegenskaperna med klassen FileShareInner . I föregående exempel visas hur du anger resurskvoten när du skapar filresursen. Om du vill uppdatera en befintlig fildelning anropar du fileShare.update() och skickar in objektet FileShareInner med de egenskaper som du vill uppdatera.

Anmärkning

För att utföra registeråtgärden behöver du behörigheter för följande Azure RBAC-åtgärd: Microsoft.Storage/register/action. Den här behörigheten ingår i de inbyggda rollerna Deltagare och Ägare.

Exempel: Lista filandelar och ögonblicksbilder med hjälp av Azure Storage-hanteringsbiblioteket

Följande kodexempel visar hur du listar filresurser och ögonblicksbilder i ett lagringskonto:

import com.azure.identity.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.fluent.*;
import com.azure.resourcemanager.storage.fluent.models.*;

import com.azure.core.credential.TokenCredential;
import com.azure.core.http.rest.PagedIterable;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;
import com.azure.core.util.Context;

// Add the following code to a new or existing function

String subscriptionID = "<subscription-id>";
String rgName = "<resource-group-name>";
String saName = "<storage-account-name>";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);

AzureResourceManager armClient = AzureResourceManager
        .configure()
        .authenticate(credential, profile)
        .withSubscription(subscriptionID);

// Check the registration state of the resource provider and register, if needed
if (armClient.providers().getByName("Microsoft.Storage").registrationState() == "NotRegistered")
    armClient.providers().register("Microsoft.Storage");

StorageManagementClient storageManagementClient = armClient.storageAccounts().manager().serviceClient();
FileSharesClient fileShare = storageManagementClient.getFileShares();

// List all file shares and include snapshots

PagedIterable<FileShareItemInner> fileShares = fileShare.list(
    rgName,               // resource group name
    saName,               // storage account name
    null,                 // maxpagesize
    null,                 // filter
    "snapshots",          // expand to include snapshots
    Context.NONE);        // context

for (FileShareItemInner fileShareItem : fileShares) {
    System.out.println("File share name: " + fileShareItem.name());
    System.out.println("File share quota: " + fileShareItem.shareQuota());
}

Nästa steg

Mer information om hur du utvecklar med Azure Files finns i följande resurser: