Freigeben über


Spring Cloud Azure-Ressourcenbehandlung

Dieser Artikel gilt für:✅ Version 4.19.0 ✅ Version 5.19.0

Das Spring-Projekt bietet eine Spring Resources Abstraktion für den Zugriff auf eine Reihe von Ressourcen auf niedriger Ebene. Das Projekt stellt Schnittstellen wie Resource, ResourceLoader und ResourcePatternResolverbereit. Spring Cloud Azure implementiert diese Schnittstellen für Azure Storage-Dienste, mit denen Sie mithilfe des Spring-Programmiermodells mit Azure Storage Blob und Dateifreigabe interagieren können. Spring Cloud Azure bietet spring-cloud-azure-starter-storage-blob und spring-cloud-azure-starter-storage-file-share zum automatischen Konfigurieren von Azure Storage Blob und Azure Storage File Share.

In der folgenden Tabelle sind azure Storage-bezogene Bibliotheken aufgeführt:

Anlasser Dienst Beschreibung
spring-cloud-azure-starter-storage-blob Azure Storage Blob Ermöglicht die Speicherung und den Zugriff auf unstrukturierte Daten in Block-Blobs in großem Maßstab.
spring-cloud-azure-starter-storage-file-share Azure Storage File Share Bietet vollständig verwaltete Cloud-Dateifreigaben, auf die Sie über das Branchenstandardprotokoll Server Message Block (SMB) von praktisch überall aus zugreifen können.

Setup von Abhängigkeiten

<dependencies>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-storage-file-share</artifactId>
    </dependency>
</dependencies>

Die spring-cloud-azure-starter-storage-blob Abhängigkeit ist nur erforderlich, wenn Sie Azure Storage Blob verwenden.

Die spring-cloud-azure-starter-storage-file-share Abhängigkeit ist nur erforderlich, wenn Sie azure Storage File Share verwenden.

Trinkgeld

Wir bieten auch spring-cloud-azure-starter-storage, um alle Features von Storage zu unterstützen. Wenn Sie die Eigenschaft verwenden, ist spring.cloud.azure.storage.enable die zu konfigurierende Eigenschaft, und der Standardwert ist true. Anschließend können Sie spring.cloud.azure.storage.<storage-service>.enable verwenden, um nicht benötigte Dienste zu deaktivieren.

Konfiguration

Anmerkung

Wenn Sie einen Sicherheitsprinzipal zum Authentifizieren und Autorisieren mit Microsoft Entra-ID für den Zugriff auf eine Azure-Ressource verwenden, stellen Sie sicher, dass dem Sicherheitsprinzipal ausreichende Berechtigungen für den Zugriff auf die Azure-Ressource erteilt wurden. Weitere Informationen finden Sie unter Autorisieren des Zugriffs mit microsoft Entra ID.

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften von spring-cloud-azure-starter-storage-blobaufgeführt:

Eigentum Vorgabe Beschreibung
spring.cloud.azure.storage.blob.enabled STIMMT Ein Wert, der angibt, ob ein Azure Blob Storage-Dienst aktiviert ist.
spring.cloud.azure.storage.blob.endpoint Der URI zum Herstellen einer Verbindung mit Azure Blob Storage.
spring.cloud.azure.storage.blob.account-key Der private Schlüssel zum Herstellen einer Verbindung mit Azure Blob Storage.
spring.cloud.azure.storage.blob.account-name Der Name des Azure Storage Blob-Kontos.

In der folgenden Tabelle sind die konfigurierbaren Eigenschaften von spring-cloud-azure-starter-storage-file-shareaufgeführt:

Eigentum Vorgabe Beschreibung
spring.cloud.azure.storage.fileshare.enabled STIMMT Ein Wert, der angibt, ob der Azure-Dateispeicherdienst aktiviert ist.
spring.cloud.azure.storage.fileshare.endpoint Der URI zum Herstellen einer Verbindung mit Azure File Storage.
spring.cloud.azure.storage.fileshare.account-key Der private Schlüssel zum Herstellen einer Verbindung mit Azure File Storage.
spring.cloud.azure.storage.fileshare.account-name Der Name des Azure Storage File Share-Kontos.

Grundlegende Nutzung

Fügen Sie der datei application.yml die folgenden Eigenschaften hinzu:

spring:
  cloud:
    azure:
      storage:
        blob:
          account-name: ${STORAGE_ACCOUNT_NAME}
          account-key: ${STORAGE_ACCOUNT_KEY}
          endpoint: ${STORAGE_BLOB_ENDPOINT}
        fileshare:
          account-name: ${STORAGE_ACCOUNT_NAME}
          account-key: ${STORAGE_ACCOUNT_KEY}
          endpoint:  ${STORAGE_FILESHARE_ENDPOINT}

Abrufen einer Ressource

Abrufen einer Ressource mit @Value

Sie können die Anmerkung von @Value("azure-blob://[your-container-name]/[your-blob-name]") verwenden, um eine BLOB-Ressource zu automatisch zu verkabeln, wie im folgenden Beispiel gezeigt:

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

Sie können die Anmerkung von @Value("azure-file://[your-fileshare-name]/[your-file-name]") verwenden, um eine Dateiressource automatisch zu verkabeln, wie im folgenden Beispiel gezeigt:

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

Abrufen einer Ressource mit ResourceLoader

@Autowired
private ResourceLoader resourceLoader;
...
// Get a BlobResource.
Resource storageBlobResource = resourceLoader.getResource("azure-blob://[your-container-name]/[your-blob-name]");

// Get a FileResource.
Resource storageFileResource = resourceLoader.getResource("azure-file://[your-fileshare-name]/[your-file-name]");

Abrufen von Ressourcen nach Mustern

Sie können eine Implementierungsklasse von ResourcePatternResolver verwenden, um Ressourcen zu durchsuchen. Verwenden Sie AzureStorageBlobProtocolResolver, um blob Ressourcen zu durchsuchen und AzureStorageFileProtocolResolver, um file Ressourcen zu durchsuchen.

  • Bei der Mustersuche sollte die searchPattern mit azure-blob:// oder azure-file://beginnen. Beispielsweise bedeutet azure-blob://**/**, alle Blobs in allen Containern auflisten zu können, und azure-blob://demo-container/** bedeutet, alle Blobs im container demo-container, einschließlich aller Unterordner, auflisten zu können.

  • Bei der Speicherortsuche sollte der searchLocation mit azure-blob:// oder azure-file:// beginnen und der verbleibende Dateipfad vorhanden sein, andernfalls wird eine Ausnahme ausgelöst.

@Autowired
private AzureStorageBlobProtocolResolver azureStorageBlobProtocolResolver;

@Autowired
private AzureStorageFileProtocolResolver azureStorageFileProtocolResolver;

// Get all text blobs.
Resource[] blobTextResources = azureStorageBlobProtocolResolver.getResources("azure-blob://[container-pattern]/*.txt");

// Get all text files.
Resource[] fileTextResources = azureStorageFileProtocolResolver.getResources("azure-file://[fileshare-pattern]/*.txt");

Umgang mit Ressource

Herunterladen von Daten aus einer bestimmten Ressource

Sie können eine Ressource aus Azure Storage Blob oder Dateifreigabe mit der getInputStream() Methode von Resourceherunterladen.

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

//...

// Download data as a stream from a blob resource.
InputStream inputblobStream = storageBlobResource.getInputStream();

// Download data as a stream from a file resource.
InputStream inputfileStream = storageFileResource.getInputStream();

Hochladen von Daten in bestimmte Ressourcen

Sie können eine Ressource in Azure Blob oder Dateispeicher hochladen, indem Sie das Spring Resource in WritableResourceumwandeln, wie im folgenden Beispiel gezeigt:

@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;

@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;

String data = "sampledata";

// Upload string data to a blob.
try (OutputStream blobos = ((WritableResource) this.storageBlobResource).getOutputStream()) {
    blobos.write(data.getBytes());
}

// Upload string data to a file.
try (OutputStream fileos = ((WritableResource) this.storageFileResource).getOutputStream()) {
    fileos.write(data.getBytes());
}

Mehrteiliger Upload

Dateien, die größer als 4 MiB sind, werden parallel in Azure Storage hochgeladen.

Proben

Sehen Sie sich das storage-blob-sample- und Speicherdatei-Beispiel-Repositorys auf GitHub an.