Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 les objets blob de stockage Azure et le partage de fichiers à l’aide du modèle de programmation Spring. Spring Cloud Azure fournit des spring-cloud-azure-starter-storage-blob et des spring-cloud-azure-starter-storage-file-share pour la configuration automatique du stockage Blob Azure et du partage de fichiers Azure.
Le tableau suivant répertorie les bibliothèques associées au Stockage Azure :
| Débutant | Service | Descriptif |
|---|---|---|
spring-cloud-azure-starter-storage-blob |
stockage Azure Blob | Permet de stocker et d’accéder à des données non structurées à très grande échelle dans des objets blob de type bloc. |
spring-cloud-azure-starter-storage-file-share |
Partage de fichiers stockage Azure | Offre des partages de fichiers cloud entièrement managés auxquels vous pouvez accéder n’importe où via le protocole SMB (Server Message Block) standard du secteur. |
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 dépendance spring-cloud-azure-starter-storage-blob n’est requise que lorsque vous utilisez le Stockage Blob Azure.
La dépendance spring-cloud-azure-starter-storage-file-share est requise uniquement lorsque vous utilisez le partage de fichiers stockage Azure.
Pourboire
Nous fournissons également spring-cloud-azure-starter-storage pour prendre en charge 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.
Paramétrage
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é | Par défaut | Descriptif |
|---|---|---|
spring.cloud.azure.storage.blob.enabled |
vrai | Valeur qui indique si un service Stockage Blob Azure est activé. |
spring.cloud.azure.storage.blob.endpoint |
URI permettant de se connecter au Stockage Blob Azure. | |
spring.cloud.azure.storage.blob.account-key |
La clé privée permettant de se connecter à Stockage Blob Azure. | |
spring.cloud.azure.storage.blob.account-name |
Nom du compte Azure Blob Storage. |
Le tableau suivant répertorie les propriétés configurables de spring-cloud-azure-starter-storage-file-share:
| Propriété | Par défaut | Descriptif |
|---|---|---|
spring.cloud.azure.storage.fileshare.enabled |
vrai | Valeur qui indique si le service stockage de fichiers Azure est activé. |
spring.cloud.azure.storage.fileshare.endpoint |
URI à connecter au stockage de fichiers Azure. | |
spring.cloud.azure.storage.fileshare.account-key |
Clé privée pour se connecter au stockage de fichiers Azure. | |
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 à 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 @Value("azure-blob://[your-container-name]/[your-blob-name]") pour injecter automatiquement une ressource blob, comme dans l’exemple suivant :
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Vous pouvez utiliser l’annotation @Value("azure-file://[your-fileshare-name]/[your-file-name]") pour injecter automatiquement une ressource de type fichier, comme indiqué 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 de ResourcePatternResolver pour rechercher des ressources. Utilisez AzureStorageBlobProtocolResolver pour rechercher des ressources blob et AzureStorageFileProtocolResolver pour rechercher des ressources file.
Pour la recherche de modèles, le
searchPatterndoit commencer parazure-blob://ouazure-file://. Par exemple,azure-blob://**/**signifie répertorier tous les objets blob de tous les conteneurs, etazure-blob://demo-container/**signifie répertorier tous les objets blob du conteneurdemo-container, y compris tout sous-dossier.Pour la recherche d’emplacement, la valeur
searchLocationdoit commencer parazure-blob://ouazure-file://, et le reste du chemin d’accès au fichier doit exister, sinon une exception sera 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");
Manipulation des ressources
Télécharger des données à partir d’une ressource spécifique
Vous pouvez télécharger une ressource depuis un objet blob stockage Azure ou un partage de fichiers à l’aide de la méthode getInputStream() de 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 une ressource dans le Stockage Blob Azure ou le Stockage de fichiers Azure en convertissant le Resource Spring en 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 MiB seront téléversés vers le stockage Azure en parallèle.
Échantillons
Consultez les dépôts storage-blob-sample et storage-file-sample sur GitHub.