Azure Blob Storage에 파일 업로드

이 자습서에서는 Spring Boot 애플리케이션에서 Azure Blob Storage 계정의 컨테이너 Blob을 업로드하고 읽는 방법을 보여 줍니다.

Azure Blob Storage는 클라우드를 위한 Microsoft의 개체 스토리지 솔루션입니다. Blob Storage는 텍스트 또는 이진 데이터와 같은 대량의 구조화되지 않은 데이터를 저장하기 위해 최적화되어 있습니다.

필수 조건

참고 항목

계정에 리소스에 대한 액세스 권한을 부여하려면 새로 만든 Azure Storage 계정에서 현재 사용 중인 Microsoft Entra 계정에 역할을 할당 Storage Blob Data Contributor 합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하십시오.

Important

이 자습서의 단계를 완료하려면 Spring Boot 버전 2.5 이상이 필요합니다.

컨테이너 만들기

먼저 Azure Portal을 사용하여 Blob 업로드, 다운로드 및 나열이라는 빠른 시작의 지침에 따라 명명된 testcontainer 컨테이너를 만듭니다.

Azure Storage 계정 컨테이너에서 Blob 업로드 및 읽기

이제 Azure Storage 계정 및 컨테이너가 있으므로 Spring Cloud Azure를 사용하여 Blob에서 파일을 업로드하고 읽을 수 있습니다.

Spring Cloud Azure Storage Blob Starter 모듈을 설치하려면 pom.xml 파일에 다음 종속성을 추가합니다.

  • Spring Cloud AZURE BOM(청구서)

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.12.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    참고 항목

    Spring Boot 2.x를 사용하는 경우 버전을 .로 설정 spring-cloud-azure-dependencies 해야 합니다 4.18.0. 이 BOM(청구서)은 pom.xml 파일의 섹션에서 구성 <dependencyManagement> 해야 합니다. 이렇게 하면 모든 Spring Cloud Azure 종속성이 동일한 버전을 사용합니다. 이 BOM에 사용되는 버전에 대한 자세한 내용은 어떤 버전의 Spring Cloud Azure를 사용해야 하는지를 참조하세요.

  • Spring Cloud Azure Storage Blob Starter 아티팩트:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>
    

애플리케이션 코딩

Spring Cloud Azure Storage Blob Starter를 사용하여 Blob에서 파일을 업로드하고 읽으려면 다음 단계를 사용하여 애플리케이션을 구성합니다.

  1. 다음 예제와 같이 application.properties 구성 파일에서 Storage 계정 이름 및 엔드포인트를 구성합니다.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. 다음 예제와 같이 새 BlobController Java 클래스를 만듭니다. 이 클래스는 Azure Storage 계정의 컨테이너 Blob에서 파일을 업로드하고 읽는 데 사용됩니다.

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.WritableResource;
    import org.springframework.util.StreamUtils;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    
    @RestController
    @RequestMapping("blob")
    public class BlobController {
    
        @Value("azure-blob://testcontainer/test.txt")
        private Resource blobFile;
    
        @GetMapping("/readBlobFile")
        public String readBlobFile() throws IOException {
            return StreamUtils.copyToString(
                    this.blobFile.getInputStream(),
                    Charset.defaultCharset());
        }
    
        @PostMapping("/writeBlobFile")
        public String writeBlobFile(@RequestBody String data) throws IOException {
            try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
                os.write(data.getBytes());
            }
            return "file was updated";
        }
    }
    

    이 자습서에서는 구성 또는 코드에 인증 작업이 없습니다. 그러나 Azure 서비스에 연결하려면 인증이 필요합니다. 인증을 완료하려면 Azure ID를 사용해야 합니다. Spring Cloud Azure는 코드 변경 없이 자격 증명을 가져오는 데 도움이 되는 Azure ID 라이브러리를 사용합니다 DefaultAzureCredential.

    DefaultAzureCredential은 여러 인증 방법을 지원하고 런타임에 사용할 방법을 결정합니다. 이 방법을 사용하면 앱이 환경별 코드를 구현하지 않고도 다양한 환경(예: 로컬 및 프로덕션 환경)에서 다양한 인증 방법을 사용할 수 있습니다. 자세한 내용은 DefaultAzureCredential을 참조 하세요.

    로컬 개발 환경에서 인증을 완료하려면 Azure CLI, Visual Studio Code, PowerShell 또는 기타 방법을 사용할 수 있습니다. 자세한 내용은 Java 개발 환경에서 Azure 인증을 참조 하세요. Azure 호스팅 환경에서 인증을 완료하려면 사용자 할당 관리 ID를 사용하는 것이 좋습니다. 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요.

  3. 애플리케이션이 실행되면 다음 단계에 따라 애플리케이션을 테스트하는 데 사용합니다 curl .

    1. 다음 명령을 사용하여 POST 요청을 보내 파일의 콘텐츠를 업데이트합니다.

      curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
      

      라는 file was updated응답이 표시됩니다.

    2. 다음 명령을 사용하여 GET 요청을 보내 파일의 내용을 확인합니다.

      curl -X GET http://localhost:8080/blob/readBlobFile
      

      게시한 "새 메시지" 텍스트가 표시됩니다.

Azure Spring Apps에 배포

이제 Spring Boot 애플리케이션을 로컬로 실행했으므로 이제 프로덕션으로 이동해야 합니다. Azure Spring Apps 를 사용하면 코드를 변경하지 않고도 Spring Boot 애플리케이션을 Azure에 쉽게 배포할 수 있습니다. 이 서비스는 개발자가 코드에 집중할 수 있도록 Spring 애플리케이션의 인프라를 관리합니다. Azure Spring Apps는 포괄적인 모니터링 및 진단, 구성 관리, 서비스 검색, CI/CD 통합, 파란색-녹색 배포 등을 사용하여 수명 주기 관리를 제공합니다. Azure Spring Apps에 애플리케이션을 배포하려면 Azure Spring Apps에 첫 번째 애플리케이션 배포를 참조하세요.

다음 단계

Spring과 Azure에 대한 자세한 사항은 Azure의 Spring 설명서 센터를 참조합니다.

참고 항목

Microsoft Azure 에 사용할 수 있는 추가 Spring Boot Starter에 대한 자세한 내용은 Spring Cloud Azure란?

Spring Boot 애플리케이션에서 호출할 수 있는 추가 Azure Storage API에 대한 자세한 내용은 다음 문서를 참조하세요.