Tratamento de recursos do Spring Cloud Azure
Este artigo aplica-se a: ✔️ Versão 4.14.0 Versão 5.8.0 ✔️
O projeto Spring fornece uma abstração de Spring Resources para acessar uma série de recursos de baixo nível. O projeto fornece interfaces como Resource
, ResourceLoader
e ResourcePatternResolver
. O Spring Cloud Azure implementa essas interfaces para os serviços de Armazenamento do Azure, o que permite que você interaja com o Blob de armazenamento do Azure e o Compartilhamento de Arquivos usando o modelo de programação Spring. O Spring Cloud Azure fornece spring-cloud-azure-starter-storage-blob
e configura automaticamente o Blob de Armazenamento do Azure e spring-cloud-azure-starter-storage-file-share
o Compartilhamento de Arquivos de Armazenamento do Azure.
A tabela a seguir lista as bibliotecas relacionadas ao Armazenamento do Azure:
Inicial | Serviço | Description |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Permite que dados não estruturados sejam armazenados e acessados em grande escala em blobs de bloco. |
spring-cloud-azure-starter-storage-file-share | Compartilhamento de arquivos de armazenamento do Azure | Oferece compartilhamentos de arquivos na nuvem totalmente gerenciados que você pode acessar de qualquer lugar por meio do protocolo SMB (Server Message Block) padrão do setor. |
Configuração de dependência
<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>
A spring-cloud-azure-starter-storage-blob
dependência só é necessária quando você estiver usando o Blob de Armazenamento do Azure.
A spring-cloud-azure-starter-storage-file-share
dependência só é necessária quando você estiver usando o Compartilhamento de Arquivos de Armazenamento do Azure.
Gorjeta
Nós também fornecemos spring-cloud-azure-starter-storage
suporte a todos os recursos de armazenamento. Se você optar por usá-lo, spring.cloud.azure.storage.enable
é a propriedade a ser configurada e o valor padrão é true. Em seguida, você pode usar spring.cloud.azure.storage.<storage-service>.enable
para desativar serviços desnecessários.
Configuração
Nota
Se você usar uma entidade de segurança para autenticar e autorizar com a ID do Microsoft Entra para acessar um recurso do Azure, certifique-se de que a entidade de segurança recebeu permissão suficiente para acessar o recurso do Azure. Para obter mais informações, consulte Autorizar acesso com o Microsoft Entra ID.
A tabela a seguir lista as propriedades configuráveis de spring-cloud-azure-starter-storage-blob
:
Property | Predefinição | Description |
---|---|---|
spring.cloud.azure.storage.blob.enabled | verdadeiro | Um valor que indica se um serviço de Armazenamento de Blob do Azure está habilitado. |
spring.cloud.azure.storage.blob.endpoint | O URI para se conectar ao Armazenamento de Blobs do Azure. | |
spring.cloud.azure.storage.blob.account-key | A chave privada para se conectar ao Armazenamento de Blobs do Azure. | |
spring.cloud.azure.storage.blob.nome-da-conta | O nome da conta do Blob de Armazenamento do Azure. |
A tabela a seguir lista as propriedades configuráveis de spring-cloud-azure-starter-storage-file-share
:
Property | Predefinição | Description |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | verdadeiro | Um valor que indica se o serviço de Armazenamento de Arquivos do Azure está habilitado. |
spring.cloud.azure.storage.fileshare.endpoint | O URI para se conectar ao Armazenamento de Arquivos do Azure. | |
spring.cloud.azure.storage.fileshare.account-key | A chave privada para se conectar ao Armazenamento de Arquivos do Azure. | |
spring.cloud.azure.storage.fileshare.nome-da-conta | O nome da conta do Compartilhamento de Arquivos de Armazenamento do Azure. |
Utilização básica
Adicione as seguintes propriedades ao seu arquivo 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}
Obter um recurso
Obtenha um recurso com @Value
Você pode usar a anotação de para autoconectar um recurso de @Value("azure-blob://[your-container-name]/[your-blob-name]")
blob, conforme mostrado no exemplo a seguir:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Você pode usar a anotação de para autowire um recurso de @Value("azure-file://[your-fileshare-name]/[your-file-name]")
arquivo, conforme mostrado no exemplo a seguir:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Obter um recurso com o 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]");
Obter recursos pesquisando padrão
Você pode usar uma classe de implementação de ResourcePatternResolver
para pesquisar recursos. Use AzureStorageBlobProtocolResolver
para pesquisar recursos e AzureStorageFileProtocolResolver
para pesquisar file
blob
recursos.
Para a pesquisa de padrões, o
searchPattern
deve começar comazure-blob://
ouazure-file://
. Por exemplo, significa listar todos os blobs em todos os contêineres eazure-blob://demo-container/**
significa listar todos osdemo-container
blobs no contêiner,azure-blob://**/**
incluindo qualquer subpasta.Para a pesquisa de localização, o deve começar com
azure-blob://
ouazure-file://
e osearchLocation
caminho do arquivo restante deve existir, caso contrário, uma exceção será lançada.
@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");
Manipulação com recursos
Baixar dados de um recurso específico
Você pode baixar um recurso do Blob de Armazenamento do Azure ou do Compartilhamento de Arquivos com o getInputStream()
método .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();
Carregar dados para um recurso específico
Você pode carregar para um recurso no Blob do Azure ou no armazenamento de arquivos transmitindo o Spring Resource
para WritableResource
, conforme mostrado no exemplo a seguir:
@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());
}
Carregamento de várias partes
Os ficheiros com mais de 4 MiB serão carregados para o Armazenamento do Azure em paralelo.
Exemplos
Consulte os repositórios storage-blob-sample e storage-file-sample no GitHub.