Spring Cloud Azure 리소스 처리
이 문서는✅ 버전 4.19.0 ✅ 버전 5.19.0에 적용됩니다.
Spring 프로젝트는 여러 하위 수준 리소스에 액세스하기 위한 Spring Resources 추상화 기능을 제공합니다. 이 프로젝트는 Resource
, ResourceLoader
및 ResourcePatternResolver
같은 인터페이스를 제공합니다. Spring Cloud Azure는 Spring 프로그래밍 모델을 사용하여 Azure Storage Blob 및 파일 공유와 상호 작용할 수 있는 Azure Storage 서비스에 대해 이러한 인터페이스를 구현합니다. Spring Cloud Azure는 Azure Storage Blob 및 Azure Storage 파일 공유를 자동으로 구성하는 spring-cloud-azure-starter-storage-blob
및 spring-cloud-azure-starter-storage-file-share
제공합니다.
다음 표에서는 Azure Storage 관련 라이브러리를 나열합니다.
스타터 | 서비스 | 묘사 |
---|---|---|
spring-cloud-azure-starter-storage-blob | Azure Storage Blob | 구조화되지 않은 데이터를 블록 Blob에서 대규모로 저장하고 액세스할 수 있습니다. |
spring-cloud-azure-starter-storage-file-share | Azure Storage 파일 공유 | 업계 표준 SMB(서버 메시지 블록) 프로토콜을 통해 어디서나 액세스할 수 있는 완전 관리형 클라우드 파일 공유를 제공합니다. |
종속성 설정
<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>
spring-cloud-azure-starter-storage-blob
종속성은 Azure Storage Blob을 사용하는 경우에만 필요합니다.
spring-cloud-azure-starter-storage-file-share
종속성은 Azure Storage 파일 공유를 사용하는 경우에만 필요합니다.
팁
또한 Storage의 모든 기능을 지원하는 spring-cloud-azure-starter-storage
제공합니다. 사용하도록 선택하는 경우 spring.cloud.azure.storage.<storage-service>.enable
사용하여 불필요한 서비스를 사용하지 않도록 설정할 수 있습니다.
구성
메모
보안 주체를 사용하여 Azure 리소스에 액세스하기 위해 Microsoft Entra ID로 인증하고 권한을 부여하는 경우 보안 주체에게 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인합니다. 자세한 내용은 Microsoft Entra ID사용하여 액세스 권한 부여를 참조하세요.
다음 표에서는 spring-cloud-azure-starter-storage-blob
구성 가능한 속성을 나열합니다.
재산 | 기본값 | 묘사 |
---|---|---|
spring.cloud.azure.storage.blob.enabled를 |
참 | Azure Blob Storage 서비스를 사용할 수 있는지 여부를 나타내는 값입니다. |
spring.cloud.azure.storage.blob.endpoint |
Azure Blob Storage에 연결할 URI입니다. | |
spring.cloud.azure.storage.blob.account-key를 |
Azure Blob Storage에 연결할 프라이빗 키입니다. | |
spring.cloud.azure.storage.blob.account-name |
Azure Storage Blob 계정 이름입니다. |
다음 표에서는 spring-cloud-azure-starter-storage-file-share
구성 가능한 속성을 나열합니다.
재산 | 기본값 | 묘사 |
---|---|---|
spring.cloud.azure.storage.fileshare.enabled를 |
참 | Azure File Storage 서비스를 사용할 수 있는지 여부를 나타내는 값입니다. |
spring.cloud.azure.storage.fileshare.endpoint |
Azure File Storage에 연결할 URI입니다. | |
spring.cloud.azure.storage.fileshare.account-key를 |
Azure File Storage에 연결할 프라이빗 키입니다. | |
spring.cloud.azure.storage.fileshare.account-name |
Azure Storage 파일 공유 계정 이름입니다. |
기본 사용량
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}
리소스 가져오기
@Value 사용하여 리소스 가져오기
다음 예제와 같이 @Value("azure-blob://[your-container-name]/[your-blob-name]")
주석을 사용하여 Blob 리소스를 자동으로 연결할 수 있습니다.
@Value("azure-blob://[your-container-name]/[your-blob-name]")
private Resource storageBlobResource;
다음 예제와 같이 @Value("azure-file://[your-fileshare-name]/[your-file-name]")
주석을 사용하여 파일 리소스를 자동으로 연결할 수 있습니다.
@Value("azure-file://[your-fileshare-name]/[your-file-name]")
private Resource storageFileResource;
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]");
패턴을 검색하여 리소스 가져오기
ResourcePatternResolver
구현 클래스를 사용하여 리소스를 검색할 수 있습니다.
AzureStorageBlobProtocolResolver
사용하여 blob
리소스를 검색하고 AzureStorageFileProtocolResolver
file
리소스를 검색합니다.
패턴 검색의 경우
searchPattern
azure-blob://
또는azure-file://
시작합니다. 예를 들어azure-blob://**/**
모든 컨테이너의 모든 Blob을 나열하는 것을 의미하며,azure-blob://demo-container/**
하위 폴더를 포함하여demo-container
컨테이너의 모든 Blob을 나열하는 것을 의미합니다.위치 검색의 경우
searchLocation
azure-blob://
또는azure-file://
시작하고 나머지 파일 경로가 있어야 합니다. 그렇지 않으면 예외가 throw됩니다.
@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");
리소스를 사용하여 처리
특정 리소스에서 데이터 다운로드
Resource
getInputStream()
방법으로 Azure Storage Blob 또는 파일 공유에서 리소스를 다운로드할 수 있습니다.
@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();
특정 리소스에 데이터 업로드
다음 예제와 같이 Spring Resource
WritableResource
캐스팅하여 Azure Blob 또는 파일 스토리지에 리소스에 업로드할 수 있습니다.
@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());
}
다중 파트 업로드
4MiB보다 큰 파일은 Azure Storage에 병렬로 업로드됩니다.
샘플
GitHub에서 storage-blob-sample 및 storage-file-sample 리포지토리를 참조하세요.