Gestion des ressources Spring Cloud Azure
Cet article s’applique à : ✔️ Version 4.14.0 ✔️ Version 5.8.0
Le projet Spring fournit une abstraction Spring Resources pour accéder à un certain nombre de ressources de bas niveau. Le projet fournit des interfaces telles que Resource
, ResourceLoader
et ResourcePatternResolver
. Spring Cloud Azure implémente ces interfaces pour les services Stockage Azure, ce qui vous permet d’interagir avec le stockage Azure Blob et le partage de fichiers à l’aide du modèle de programmation Spring. Spring Cloud Azure fournit spring-cloud-azure-starter-storage-blob
et spring-cloud-azure-starter-storage-file-share
configure automatiquement Stockage Azure blob et Stockage Azure partage de fichiers.
Le tableau suivant répertorie Stockage Azure bibliothèques associées :
Starter | Service | Description |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Permet de stocker des données non structurées et d’y accéder à grande échelle dans des objets blob de blocs. |
spring-cloud-azure-starter-storage-file-share | partage de fichiers Stockage Azure | Offre des partages de fichiers cloud complètement managés qui sont accessibles n’importe où via le protocole SMB (Server Message Block) standard. |
Configuration des dépendances
<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>
La spring-cloud-azure-starter-storage-blob
dépendance n’est requise que lorsque vous utilisez Stockage Azure Blob.
La spring-cloud-azure-starter-storage-file-share
dépendance n’est requise que lorsque vous utilisez Stockage Azure partage de fichiers.
Conseil
Nous fournissons spring-cloud-azure-starter-storage
également la prise en charge de toutes les fonctionnalités de Stockage. Si vous choisissez de l’utiliser, spring.cloud.azure.storage.enable
est la propriété à configurer et la valeur par défaut est true. Vous pouvez ensuite utiliser spring.cloud.azure.storage.<storage-service>.enable
pour désactiver les services inutiles.
Configuration
Remarque
Si vous utilisez un principal de sécurité pour authentifier et autoriser avec Microsoft Entra ID pour accéder à une ressource Azure, assurez-vous que le principal de sécurité a reçu l’autorisation suffisante pour accéder à la ressource Azure. Pour plus d’informations, consultez Autoriser l’accès avec Microsoft Entra ID.
Le tableau suivant répertorie les propriétés configurables de spring-cloud-azure-starter-storage-blob
:
Propriété | Default | Description |
---|---|---|
spring.cloud.azure.storage.blob.enabled | true | Valeur qui indique si un service Stockage Blob Azure est activé. |
spring.cloud.azure.storage.blob.endpoint | URI à connecter à Stockage Blob Azure. | |
spring.cloud.azure.storage.blob.account-key | Clé privée à connecter à Stockage Blob Azure. | |
spring.cloud.azure.storage.blob.account-name | Nom du compte d’objet blob Stockage Azure. |
Le tableau suivant répertorie les propriétés configurables de spring-cloud-azure-starter-storage-file-share
:
Propriété | Default | Description |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | true | Valeur qui indique si le service Azure File Stockage est activé. |
spring.cloud.azure.storage.fileshare.endpoint | URI à connecter à Azure File Stockage. | |
spring.cloud.azure.storage.fileshare.account-key | Clé privée à connecter à Azure File Stockage. | |
spring.cloud.azure.storage.fileshare.account-name | Nom du compte de partage de fichiers Stockage Azure. |
Utilisation de base
Ajoutez les propriétés suivantes dans votre fichier application.yml :
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}
Obtenir une ressource
Obtenir une ressource avec @Value
Vous pouvez utiliser l’annotation d’auto-filer @Value("azure-blob://[your-container-name]/[your-blob-name]")
une ressource d’objet blob, comme illustré dans l’exemple suivant :
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Vous pouvez utiliser l’annotation d’auto-filer une ressource de @Value("azure-file://[your-fileshare-name]/[your-file-name]")
fichier, comme illustré dans l’exemple suivant :
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Obtenir une ressource avec 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]");
Obtenir des ressources en recherchant un modèle
Vous pouvez utiliser une classe d’implémentation pour rechercher des ResourcePatternResolver
ressources. Permet AzureStorageBlobProtocolResolver
de rechercher blob
des ressources et AzureStorageFileProtocolResolver
de rechercher des file
ressources.
Pour la recherche de modèles, le
searchPattern
doit commencer parazure-blob://
ouazure-file://
. Par exemple,azure-blob://**/**
consiste à répertorier tous les objets blob de tous les conteneurs etazure-blob://demo-container/**
à répertorier tous les objets blob dudemo-container
conteneur, y compris tout sous-dossier.Pour la recherche d’emplacement, le
searchLocation
fichier doit commencerazure-blob://
par ouazure-file://
le chemin d’accès du fichier restant doit exister ; sinon, une exception est levée.
@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");
Gestion avec la ressource
Télécharger des données à partir d’une ressource spécifique
Vous pouvez télécharger une ressource à partir de Stockage Azure blob ou de partage de fichiers avec la getInputStream()
méthode .Resource
@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();
Charger des données vers une ressource spécifique
Vous pouvez charger vers une ressource vers un stockage Blob ou fichier Azure en cas de castage de Spring Resource
sur WritableResource
, comme illustré dans l’exemple suivant :
@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());
}
Chargement en plusieurs parties
Les fichiers de plus de 4 Mio sont chargés sur Stockage Azure en parallèle.
Exemples
Consultez les référentiels storage-blob-sample et storage-file-sample sur GitHub.