Manipulação 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 recursos do Spring para acessar vários 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 interagir com o Blob de armazenamento do Azure e o Compartilhamento de Arquivos usando o modelo de programação do 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 | Descrição |
---|---|---|
spring-cloud-azure-starter-storage-blob | O Azure Storage Blob | Permite que os dados não estruturados sejam armazenados e acessados em grande escala em blobs de blocos. |
spring-cloud-azure-starter-storage-file-share | Compartilhamento de Arquivos de Armazenamento do Azure | Oferece compartilhamentos de arquivos de nuvem totalmente gerenciados que podem ser acessados 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.
Dica
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 desabilitar serviços desnecessários.
Configuração
Observação
Se você usar uma entidade de segurança para autenticar e autorizar com a ID do Microsoft Entra para acessar um recurso do Azure, verifique se a entidade de segurança recebeu permissão suficiente para acessar o recurso do Azure. Para obter mais informações, confira Autorizar o acesso com o Microsoft Entra ID.
A tabela a seguir lista as propriedades configuráveis de spring-cloud-azure-starter-storage-blob
:
Propriedade | Padrão | Descrição |
---|---|---|
spring.cloud.azure.storage.blob.enabled | true | Um valor que indica se um serviço de Armazenamento de Blobs do Azure está habilitado. |
primavera.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
:
Propriedade | Padrão | Descrição |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | true | Um valor que indica se o serviço de Armazenamento de Arquivos do Azure está habilitado. |
primavera.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. |
Uso básico
Adicione as seguintes propriedades ao 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 conectar automaticamente 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 conectar automaticamente 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 blob
recursos e AzureStorageFileProtocolResolver
pesquisar file
recursos.
Para pesquisa de padrão, 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 os blobs nodemo-container
contêiner,azure-blob://**/**
incluindo qualquer subpasta.Para pesquisa de local, 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 em um recurso para o Blob do Azure ou armazenamento de arquivos convertendo o Spring Resource
em 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
Arquivos maiores que 4 MiB serão carregados no Armazenamento do Azure em paralelo.
Exemplos
Consulte os repositórios storage-blob-sample e storage-file-sample no GitHub.