Spring Cloud Azure-resurshantering
Den här artikeln gäller för:✅ version 4.19.0 ✅ version 5.19.0
Spring-projektet tillhandahåller en Spring Resources- abstraktion för att få åtkomst till ett antal lågnivåresurser. Projektet innehåller gränssnitt som Resource
, ResourceLoader
och ResourcePatternResolver
. Spring Cloud Azure implementerar dessa gränssnitt för Azure Storage-tjänster, vilket gör att du kan interagera med Azure Storage Blob och Filresurs med hjälp av Spring-programmeringsmodellen. Spring Cloud Azure tillhandahåller spring-cloud-azure-starter-storage-blob
och spring-cloud-azure-starter-storage-file-share
för automatisk konfiguration av Azure Storage Blob och Azure Storage-filresurs.
I följande tabell visas Azure Storage-relaterade bibliotek:
Förrätt | Tjänst | Beskrivning |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage-blob | Gör att ostrukturerade data kan lagras och nås i stor skala i blockblobar. |
spring-cloud-azure-starter-storage-file-share | Azure Storage-filresurs | Erbjuder fullständigt hanterade molnfilresurser som du kan komma åt var som helst via SMB-protokollet (Server Message Block). |
Beroendekonfiguration
<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>
Det spring-cloud-azure-starter-storage-blob
beroendet krävs bara när du använder Azure Storage Blob.
Det spring-cloud-azure-starter-storage-file-share
beroendet krävs bara när du använder Azure Storage-filresurs.
Dricks
Vi tillhandahåller även spring-cloud-azure-starter-storage
för att stödja alla funktioner i Storage. Om du väljer att använda den är spring.cloud.azure.storage.enable
egenskapen som ska konfigureras och standardvärdet är true
. Du kan sedan använda spring.cloud.azure.storage.<storage-service>.enable
för att inaktivera onödiga tjänster.
Konfiguration
Not
Om du använder ett säkerhetsobjekt för att autentisera och auktorisera med Microsoft Entra-ID för åtkomst till en Azure-resurs måste du se till att säkerhetsobjektet har beviljats tillräcklig behörighet för att få åtkomst till Azure-resursen. Mer information finns i Auktorisera åtkomst med Microsoft Entra-ID.
I följande tabell visas de konfigurerbara egenskaperna för spring-cloud-azure-starter-storage-blob
:
Egenskap | Standard | Beskrivning |
---|---|---|
spring.cloud.azure.storage.blob.enabled | sann | Ett värde som anger om en Azure Blob Storage-tjänst är aktiverad. |
spring.cloud.azure.storage.blob.endpoint | URI:n för att ansluta till Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-key | Den privata nyckeln för att ansluta till Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-name | Azure Storage Blob-kontonamnet. |
I följande tabell visas de konfigurerbara egenskaperna för spring-cloud-azure-starter-storage-file-share
:
Egenskap | Standard | Beskrivning |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | sann | Ett värde som anger om Azure File Storage-tjänsten är aktiverad. |
spring.cloud.azure.storage.fileshare.endpoint | URI:n för att ansluta till Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-key | Den privata nyckeln för att ansluta till Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-name | Namnet på Azure Storage-filresurskontot. |
Grundläggande användning
Lägg till följande egenskaper i din application.yml-fil:
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}
Hämta en resurs
Hämta en resurs med @Value
Du kan använda anteckningen för @Value("azure-blob://[your-container-name]/[your-blob-name]")
för att automatiskt koppla en blobresurs, som du ser i följande exempel:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Du kan använda anteckningen för @Value("azure-file://[your-fileshare-name]/[your-file-name]")
för att automatiskt koppla en filresurs, som du ser i följande exempel:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Hämta en resurs med 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]");
Hämta resurser genom att söka i mönster
Du kan använda en implementeringsklass med ResourcePatternResolver
för att söka efter resurser. Använd AzureStorageBlobProtocolResolver
för att söka efter blob
resurser och AzureStorageFileProtocolResolver
för att söka efter file
resurser.
För mönstersökning bör
searchPattern
börja medazure-blob://
ellerazure-file://
. Till exempel innebärazure-blob://**/**
att lista alla blobar i alla containrar, ochazure-blob://demo-container/**
innebär att visa en lista över alla blobar idemo-container
-containern, inklusive alla undermappar.För platssökning bör
searchLocation
börja medazure-blob://
ellerazure-file://
och den återstående filsökvägen ska finnas, annars utlöses ett undantag.
@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");
Hantering med resurs
Ladda ned data från en specifik resurs
Du kan ladda ned en resurs från Azure Storage Blob eller Filresurs med metoden getInputStream()
för 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();
Ladda upp data till en specifik resurs
Du kan ladda upp till en resurs till Azure Blob eller fillagring genom att casta Spring Resource
till WritableResource
, som du ser i följande exempel:
@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());
}
Uppladdning av flera delar
Filer som är större än 4 MiB laddas upp till Azure Storage parallellt.
Prover
Se storage-blob-sample och storage-file-sample lagringsplatser på GitHub.