Zpracování prostředků Azure Spring Cloud
Tento článek se vztahuje na: ✔️ Verze 4.14.0 ✔️ verze 5.8.0
Projekt Spring poskytuje abstrakci Spring Resources pro přístup k mnoha zdrojům nízké úrovně. Projekt poskytuje rozhraní jako Resource
a ResourceLoader
ResourcePatternResolver
. Spring Cloud Azure implementuje tato rozhraní pro služby Azure Storage, což umožňuje interakci s objekty blob úložiště Azure a sdílenou složkou pomocí programovacího modelu Spring. Spring Cloud Azure poskytuje spring-cloud-azure-starter-storage-blob
a spring-cloud-azure-starter-storage-file-share
automaticky konfiguruje azure Storage Blob a sdílenou složku Azure Storage.
Následující tabulka uvádí knihovny související se službou Azure Storage:
Starter | Služba | Popis |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | Umožňuje ukládání a přístup k nestrukturovaným datům v masivním měřítku v objektech blob bloku. |
spring-cloud-azure-starter-storage-file-share | Sdílená složka azure Storage | Nabízí plně spravované cloudové sdílené složky, ke kterým máte přístup odkudkoli prostřednictvím standardního protokolu SMB (Server Message Block). |
Nastavení závislostí
<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>
Závislost spring-cloud-azure-starter-storage-blob
se vyžaduje jenom v případě, že používáte objekt blob služby Azure Storage.
Závislost spring-cloud-azure-starter-storage-file-share
se vyžaduje jenom v případě, že používáte sdílenou složku Azure Storage.
Tip
Poskytujeme spring-cloud-azure-starter-storage
také podporu všech funkcí úložiště. Pokud se rozhodnete ji použít, je to vlastnost, spring.cloud.azure.storage.enable
která se má nakonfigurovat a výchozí hodnota je true. Pak můžete zakázat spring.cloud.azure.storage.<storage-service>.enable
nepotřebné služby.
Konfigurace
Poznámka:
Pokud k ověřování a autorizaci pomocí ID Microsoft Entra pro přístup k prostředku Azure používáte objekt zabezpečení, ujistěte se, že objekt zabezpečení má dostatečná oprávnění pro přístup k prostředku Azure. Další informace naleznete v tématu Autorizace přístupu pomocí Microsoft Entra ID.
Následující tabulka uvádí konfigurovatelné vlastnosti spring-cloud-azure-starter-storage-blob
:
Vlastnost | Výchozí | Popis |
---|---|---|
spring.cloud.azure.storage.blob.enabled | true | Hodnota, která označuje, jestli je povolená služba Azure Blob Storage. |
spring.cloud.azure.storage.blob.endpoint | Identifikátor URI pro připojení ke službě Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-key | Privátní klíč pro připojení ke službě Azure Blob Storage. | |
spring.cloud.azure.storage.blob.account-name | Název účtu azure Storage Blob. |
Následující tabulka uvádí konfigurovatelné vlastnosti spring-cloud-azure-starter-storage-file-share
:
Vlastnost | Výchozí | Popis |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled | true | Hodnota, která označuje, jestli je povolená služba Azure File Storage. |
spring.cloud.azure.storage.fileshare.endpoint | Identifikátor URI pro připojení ke službě Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-key | Privátní klíč pro připojení ke službě Azure File Storage. | |
spring.cloud.azure.storage.fileshare.account-name | Název účtu sdílené složky Azure Storage. |
Základní použití
Do souboru application.yml přidejte následující vlastnosti:
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}
Získání prostředku
Získání prostředku s využitím @Value
Poznámku k prostředku objektu @Value("azure-blob://[your-container-name]/[your-blob-name]")
blob můžete použít k automatickému připojení prostředku objektu blob, jak je znázorněno v následujícím příkladu:
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
Poznámku @Value("azure-file://[your-fileshare-name]/[your-file-name]")
k prostředku souboru můžete použít k automatickému připojení prostředku souboru, jak je znázorněno v následujícím příkladu:
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
Získání prostředku pomocí ResourceLoaderu
@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]");
Získání prostředků pomocí vzoru vyhledávání
Ke vyhledávání prostředků můžete použít třídu ResourcePatternResolver
implementace. Slouží AzureStorageBlobProtocolResolver
k vyhledávání blob
prostředků a AzureStorageFileProtocolResolver
vyhledávání file
prostředků.
Pro hledání vzorů
searchPattern
by mělo začínatazure-blob://
neboazure-file://
. Napříkladazure-blob://**/**
znamená vypsat všechny objekty blob ve všech kontejnerech aazure-blob://demo-container/**
znamená vypsat všechny objekty blob v kontejnerudemo-container
, včetně jakékoli podsložky.Pro hledání
searchLocation
umístění by mělo začínatazure-blob://
neboazure-file://
by měla existovat zbývající cesta k souboru, jinak se vyvolá výjimka.
@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");
Zpracování s využitím prostředku
Stažení dat z konkrétního prostředku
Prostředek si můžete stáhnout z objektu blob služby Azure Storage nebo sdílené složky pomocí getInputStream()
metody 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();
Nahrání dat do konkrétního prostředku
Do prostředku do služby Azure Blob nebo file Storage můžete nahrát přetypováním spring Resource
na WritableResource
, jak je znázorněno v následujícím příkladu:
@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());
}
Nahrání více částí
Soubory větší než 4 MiB se nahrají paralelně do Služby Azure Storage.
Ukázky
Podívejte se na úložiště-blob-sample a úložiště-file-sample úložiště na GitHubu.