Sdílet prostřednictvím


Zpracování prostředků Azure Spring Cloud

Tento článek se vztahuje na:✅ verze 4.19.0 ✅ verze 5.19.0

Projekt Spring poskytuje Spring Resources abstrakci pro přístup k řadě zdrojů nízké úrovně. Projekt poskytuje rozhraní, jako jsou Resource, ResourceLoader a 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 pro automatickou konfiguraci objektů blob služby Azure Storage a sdílené složky Azure Storage.

Následující tabulka uvádí knihovny související se službou Azure Storage:

Předkrm 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.

Spropitné

Poskytujeme také spring-cloud-azure-starter-storage pro podporu všech funkcí služby Storage. Pokud se rozhodnete ji použít, spring.cloud.azure.storage.enable je vlastnost, která se má nakonfigurovat a výchozí hodnota je true. Potom můžete pomocí spring.cloud.azure.storage.<storage-service>.enable zakázat 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 pravdivý 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 pravdivý 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í využ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 pomocí @Value

Poznámku @Value("azure-blob://[your-container-name]/[your-blob-name]") 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]") 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í

K vyhledávání prostředků můžete použít třídu implementace ResourcePatternResolver. Pomocí AzureStorageBlobProtocolResolver můžete hledat blob prostředky a AzureStorageFileProtocolResolver hledat file prostředky.

  • Při hledání vzorů by měl searchPattern 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.

  • Při hledání umístění by měl searchLocation začínat azure-blob:// nebo azure-file:// a zbývající cesta k souboru by měla existovat, jinak dojde k výjimce.

@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 můžete stáhnout z objektu blob služby Azure Storage nebo sdílené složky pomocí metody getInputStream()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 springového Resource do 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.

Vzorky

Podívejte se na storage-blob-sample a úložiště-file-sample úložiště na GitHubu.