Azure Blob Storage 및 Java 시작
이 문서에서는 Java용 Azure Blob Storage 클라이언트 라이브러리를 사용하여 Azure Blob Storage에 연결하는 방법을 보여 줍니다. 연결되면 개발자 가이드를 사용하여 Blob Storage 서비스의 컨테이너, Blob 및 기능에서 코드가 작동하는 방법을 알아봅니다.
전체 예제로 시작하려면 빠른 시작: Java용 Azure Blob Storage 클라이언트 라이브러리를 참조하세요.
API 참조 | 패키지(Maven) | 라이브러리 소스 코드 | 샘플 | 피드백 제공
필수 조건
- Azure 구독 - 체험 구독 만들기
- Azure Storage 계정 - 스토리지 계정 만들기
- JDK(Java Development Kit) 버전 8 이상
- Apache Maven은 이 예제에서 프로젝트 관리에 사용됩니다.
프로젝트 설정
참고 항목
이 문서에서는 Maven 빌드 도구를 사용하여 샘플 코드를 빌드하고 실행합니다. Gradle과 같은 다른 빌드 도구도 Java용 Azure SDK에서 작동합니다.
Maven을 사용하여 새 콘솔 앱을 만들거나 기존 프로젝트를 엽니다. 다음 단계에 따라 패키지를 설치하고 필요한 import
지시문을 추가합니다.
패키지 설치
텍스트 편집기에서 pom.xml
파일을 엽니다. BOM 파일을 포함하거나 직접 종속성을 포함하여 패키지를 설치합니다.
BOM 파일 포함
azure-sdk-bom을 추가하여 최신 버전의 라이브러리에 대한 종속성을 가져옵니다. 다음 코드 조각에서 {bom_version_to_target}
자리 표시자를 버전 번호로 바꿉니다. azure-sdk-bom을 사용하면 각 개별 종속성의 버전을 지정하지 않아도 됩니다. BOM에 대해 자세히 알아보려면 Azure SDK BOM 추가 정보를 참조하세요.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
종속성 그룹에 다음 종속성 요소를 추가합니다. Azure 서비스에 대한 암호 없는 연결에는 azure-identity 종속성이 필요합니다.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-common</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
직접 종속성 포함
특정 버전의 라이브러리에 대한 종속성을 사용하려면 프로젝트에 직접 종속성을 추가합니다.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-common</artifactId>
<version>{package_version_to_target}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>{package_version_to_target}</version>
</dependency>
import 지시문 포함
그런 다음, 코드 파일을 열고 필요한 import
지시문을 추가합니다. 이 예제에서는 App.java 파일에 다음 지시문을 추가합니다.
import com.azure.core.credential.*;
import com.azure.identity.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.specialized.*;
import com.azure.storage.common.*;
Blob 클라이언트 라이브러리 정보:
- com.azure.storage.blob: 서비스, 컨테이너 및 Blob에서 작업하는 데 사용할 수 있는 기본 클래스(클라이언트 개체)가 포함되어 있습니다.
- com.azure.storage.blob.models: 유틸리티 클래스, 구조체 및 열거형 형식을 포함합니다.
- com.azure.storage.blob.specialized: Blob 형식과 관련된 작업을 수행하는 데 사용할 수 있는 클래스를 포함합니다(예: Blob 추가).
액세스 권한 부여 및 Blob Storage에 연결
앱을 Blob Storage에 연결하려면 BlobServiceClient 클래스의 인스턴스를 만듭니다. 비동기 프로그래밍을 위해 BlobServiceAsyncClient 클래스를 사용할 수도 있습니다. 이 개체는 스토리지 계정 수준에서 데이터 리소스와 상호 작용하기 위한 시작점입니다. 이를 사용하여 스토리지 계정 및 해당 컨테이너에서 작업할 수 있습니다. 작업해야 하는 리소스에 따라 서비스 클라이언트를 사용하여 컨테이너 클라이언트 또는 Blob 클라이언트를 만들 수도 있습니다.
클라이언트 개체 만들기 및 관리에 대한 자세한 내용은 데이터 리소스와 상호 작용하는 클라이언트 개체 만들기 및 관리를 참조하세요.
Microsoft Entra 권한 부여 토큰, 계정 액세스 키 또는 SAS(공유 액세스 서명)를 사용하여 BlobServiceClient
개체에 권한을 부여할 수 있습니다. 최적의 보안을 위해 Microsoft는 관리 ID와 함께 Microsoft Entra ID를 사용하여 Blob 데이터에 대한 요청을 권한 부여하는 것이 좋습니다. 자세한 내용은 Azure Active Directory를 사용하여 Blob에 대한 액세스 권한 부여를 참조하세요.
Microsoft Entra ID로 권한 부여하려면 보안 주체를 사용해야 합니다. 어떤 형식의 보안 주체가 필요한지는 앱이 실행되는 위치에 따라 달라집니다. 다음 표를 가이드로 따르세요.
앱이 실행되는 곳 | 할당할 수 있습니다. | 지침 |
---|---|---|
로컬 컴퓨터(개발 및 테스트) | 서비스 사용자 | 앱 등록, Microsoft Entra 그룹 설정, 역할 할당, 환경 변수 구성 방법을 알아보려면 개발자 서비스 주체를 사용하여 액세스 권한 부여를 참조하세요. |
로컬 컴퓨터(개발 및 테스트) | 사용자 ID | Microsoft Entra 그룹을 설정하고, 역할을 할당하고, Azure에 로그인하는 방법을 알아보려면 개발자 자격 증명을 사용하여 액세스 권한 부여를 참조하세요. |
Azure에서 호스트 | 관리 ID | 관리 ID를 사용하도록 설정하고 역할을 할당하는 방법을 알아보려면 관리 ID를 사용하여 Azure 호스팅 앱에서 액세스 권한 부여를 참조하세요. |
Azure 외부에서 호스트됨(예: 온-프레미스 앱) | 서비스 사용자 | 앱을 등록하고, 역할을 할당하고, 환경 변수를 구성하는 방법을 알아보려면 애플리케이션 서비스 주체를 사용하여 온-프레미스 앱에서 액세스 권한 부여를 참조하세요. |
DefaultAzureCredential을 사용하여 액세스 권한 부여
액세스 권한을 부여하고 Blob Storage에 연결하는 쉽고 안전한 방법은 DefaultAzureCredential 인스턴스를 만들어 OAuth 토큰을 가져오는 것입니다. 그런 다음, 해당 자격 증명을 사용하여 BlobServiceClient 개체를 만들 수 있습니다.
프로젝트 설정에 설명된 대로 pom.xml의 올바른 종속성과 필요한 가져오기 지시문이 있는지 확인합니다.
다음 예에서는 BlobServiceClientBuilder를 사용하여 DefaultAzureCredential
을 사용해 BlobServiceClient
개체를 빌드하고 필요한 경우 컨테이너 및 Blob 클라이언트를 만드는 방법을 보여 줍니다.
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
DNS 이름 조회에 대한 JVM TTL 구성
JVM(Java Virtual Machine)은 TTL(Time-to-Live)이라는 지정된 기간 동안 성공적인 DNS 이름 조회의 응답을 캐시합니다. 많은 JVM의 기본 TTL 값은 -1
JVM이 응답을 무기한 캐시하거나 JVM이 다시 시작될 때까지 캐시한다는 의미입니다.
Azure 리소스는 변경할 수 있는 DNS 이름 항목을 사용하므로 JVM TTL 값을 10초로 설정하는 것이 좋습니다. 이 구성은 리소스에 대한 업데이트된 IP 주소가 다음 DNS 쿼리와 함께 반환되도록 합니다.
JVM을 사용하여 모든 애플리케이션에 대한 TTL 값을 전역적으로 변경하려면 파일의 networkaddress.cache.ttl
java.security
속성을 설정합니다.
networkaddress.cache.ttl=10
Java 8의 java.security
경우 파일은 디렉터리에 있습니다 $JAVA_HOME/jre/lib/security
. Java 11 이상의 경우 파일이 디렉터리에 있습니다 $JAVA_HOME/conf/security
.
앱 빌드
Azure Blob Storage 데이터 리소스를 사용하는 앱을 빌드할 때 코드는 주로 스토리지 계정, 컨테이너 및 Blob의 세 가지 리소스 종류와 상호 작용합니다. 이러한 리소스 종류, 서로 상호 작용하는 방법 및 앱이 리소스와 상호 작용하는 방법에 대한 자세한 내용은 앱이 Blob Storage 데이터 리소스와 상호 작용하는 방법 이해를 참조하세요.
다음 가이드에서는 Java용 Azure Storage 클라이언트 라이브러리를 사용하여 데이터에 액세스하고 특정 작업을 수행하는 방법을 보여 줍니다.
가이드 | 설명 |
---|---|
재시도 정책 구성 | 클라이언트 작업에 대한 다시 시도 정책을 구현합니다. |
Blob 복사 | 한 위치에서 다른 위치로 Blob을 복사합니다. |
컨테이너 만들기 | Blob 컨테이너를 만듭니다. |
사용자 위임 SAS 만들기: | 컨테이너 또는 Blob에 대한 사용자 위임 SAS를 만듭니다. |
Blob 임대 만들기 및 관리 | Blob에 대한 잠금을 설정하고 관리합니다. |
컨테이너 임대 만들기 및 관리 | 컨테이너에 대한 잠금을 설정하고 관리합니다. |
Blob 삭제 및 복원 | Blob을 삭제하고 일시 삭제가 사용하도록 설정된 경우 삭제된 Blob을 복원합니다. |
컨테이너 삭제 및 복원 | 컨테이너를 삭제하고 일시 삭제가 사용하도록 설정된 경우 삭제된 컨테이너를 복원합니다. |
Blob 다운로드 | 문자열, 스트림 및 파일 경로를 사용하여 Blob을 다운로드합니다. |
태그를 사용하여 Blob 찾기 | 태그를 설정 및 검색하고 태그를 사용하여 Blob을 찾습니다. |
Blob 나열 | 다양한 방법으로 Blob을 나열합니다. |
컨테이너 나열 | 계정의 컨테이너와 목록을 사용자 지정하는 데 사용할 수 있는 다양한 옵션을 나열합니다. |
속성 및 메타데이터(blob) 관리 | Blob에 대한 속성 및 메타데이터를 가져오고 설정합니다. |
속성 및 메타데이터(컨테이너) 관리 | 컨테이너의 속성과 메타데이터를 가져오고 설정합니다. |
데이터 전송 성능 튜닝 | 데이터 전송 작업의 성능을 최적화합니다. |
Blob의 액세스 계층 설정 또는 변경 | 블록 Blob에 대한 액세스 계층을 설정하거나 변경합니다. |
Blob 업로드 | 문자열, 스트림, 파일 경로 및 기타 방법을 사용하여 Blob을 업로드하는 방법을 알아봅니다. |