Control de recursos de Azure de Spring Cloud
Este artículo se aplica a: ✔️ Versión 4.14.0 ✔️ versión 5.8.0
El proyecto Spring proporciona una abstracción de Recursos de Spring para acceder a una serie de recursos de bajo nivel. El proyecto proporciona interfaces como Resource
, ResourceLoader
y ResourcePatternResolver
. Spring Cloud Azure implementa estas interfaces para los servicios de Azure Storage, lo que permite interactuar con Azure Storage Blob y File Share mediante el modelo de programación spring. Spring Cloud Azure proporciona spring-cloud-azure-starter-storage-blob
y spring-cloud-azure-starter-storage-file-share
configura automáticamente blob de Azure Storage y recurso compartido de archivos de Azure Storage.
En la tabla siguiente se enumeran las bibliotecas relacionadas con Azure Storage:
Inicio | Servicio | Descripción |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Permite que los datos no estructurados se almacenen y accedan a una escala masiva en blobs en bloques. |
spring-cloud-azure-starter-storage-file-share | Recurso compartido de archivos de Azure Storage | Ofrece recursos compartidos de archivos en la nube totalmente administrados a los que puede acceder desde cualquier lugar a través del protocolo de bloque de mensajes del servidor (SMB) estándar del sector. |
Configuración de dependencias
<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
dependencia solo es necesaria cuando se usa Azure Storage Blob.
La spring-cloud-azure-starter-storage-file-share
dependencia solo es necesaria cuando se usa el recurso compartido de archivos de Azure Storage.
Sugerencia
También proporcionamos spring-cloud-azure-starter-storage
soporte para todas las características de Storage. Si decide usarlo, spring.cloud.azure.storage.enable
es la propiedad para configurar y el valor predeterminado es true. Después, puede usar spring.cloud.azure.storage.<storage-service>.enable
para deshabilitar los servicios innecesarios.
Configuración
Nota:
Si usa una entidad de seguridad para autenticar y autorizar con el identificador de Entra de Microsoft para acceder a un recurso de Azure, asegúrese de que a la entidad de seguridad se le ha concedido permiso suficiente para acceder al recurso de Azure. Para más información, vea Autorización del acceso mediante Microsoft Entra ID.
En la tabla siguiente se enumeran las propiedades configurables de spring-cloud-azure-starter-storage-blob
:
Propiedad | Valor predeterminado | Descripción |
---|---|---|
spring.cloud.azure.storage.blob.enabled | true | Valor que indica si un servicio de Azure Blob Storage está habilitado. |
spring.cloud.azure.storage.blob.endpoint | URI para conectarse a Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-key | Clave privada para conectarse a Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-name | Nombre de la cuenta de Blob de Azure Storage. |
En la tabla siguiente se enumeran las propiedades configurables de spring-cloud-azure-starter-storage-file-share
:
Propiedad | Valor predeterminado | Descripción |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | true | Valor que indica si el servicio Azure File Storage está habilitado. |
spring.cloud.azure.storage.fileshare.endpoint | URI para conectarse a Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-key | Clave privada para conectarse a Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-name | Nombre de la cuenta del recurso compartido de archivos de Azure Storage. |
Uso básico
Agregue las siguientes propiedades al archivo 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}
Obtención de un recurso
Obtención de un recurso con @Value
Puede usar la anotación de @Value("azure-blob://[your-container-name]/[your-blob-name]")
para conectar automáticamente un recurso de blob, como se muestra en el ejemplo siguiente:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Puede usar la anotación de @Value("azure-file://[your-fileshare-name]/[your-file-name]")
para conectar automáticamente un recurso de archivo, como se muestra en el ejemplo siguiente:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Obtención de un recurso con 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]");
Obtención de recursos mediante la búsqueda de patrones
Puede usar una clase de implementación de ResourcePatternResolver
para buscar recursos. Use AzureStorageBlobProtocolResolver
para buscar blob
recursos y AzureStorageFileProtocolResolver
para buscar file
recursos.
Para la
searchPattern
búsqueda de patrones, debe comenzar conazure-blob://
oazure-file://
. Por ejemplo,azure-blob://**/**
significa enumerar todos los blobs de todos los contenedores yazure-blob://demo-container/**
significa enumerar todos los blobs deldemo-container
contenedor, incluida cualquier subcarpeta.Para la
searchLocation
búsqueda de ubicación, debe comenzar conazure-blob://
oazure-file://
y debe existir la ruta de acceso del archivo restante; de lo contrario, se producirá una excepción.
@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");
Control con el recurso
Descarga de datos de un recurso específico
Puede descargar un recurso de Azure Storage Blob o Recurso compartido de archivos con el getInputStream()
método 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();
Carga de datos en un recurso específico
Puede cargar en un recurso en Azure Blob o almacenamiento de archivos mediante la conversión de Spring Resource
a WritableResource
, como se muestra en el ejemplo siguiente:
@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());
}
Carga de varias partes
Los archivos mayores de 4 MiB se cargarán en Azure Storage en paralelo.
Ejemplos
Consulte los repositorios storage-blob-sample y storage-file-sample en GitHub.