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 Resourcea ResourceLoaderResourcePatternResolver. 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čínat azure-blob:// nebo azure-file://. Například azure-blob://**/** znamená vypsat všechny objekty blob ve všech kontejnerech a azure-blob://demo-container/** znamená vypsat všechny objekty blob v kontejneru demo-container , včetně jakékoli podsložky.

  • Pro hledání searchLocation umístění by mělo začínat azure-blob:// nebo azure-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.