Java を使用してブロック BLOB のアクセス層を設定または変更する
この記事では、Java 用の Azure Storage クライアント ライブラリを使用して、ブロック BLOB のアクセス層を設定または変更する方法について説明します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- Azure Storage アカウント - ストレージ アカウントの作成
- Java Development Kit (JDK) バージョン 8 以降 (最適なエクスペリエンスを得るために、バージョン 17 をお勧めします)
- この例では、Apache Maven をプロジェクト管理に使用します
環境を設定する
既存のプロジェクトがない場合、Java 用 Azure Blob Storage クライアント ライブラリを操作するためにプロジェクトをセットアップする方法について、このセクションで説明します。 詳細については、「Azure Blob Storage と Java での作業開始」を参照してください。
この記事のコード例を使用するには、次の手順に従ってプロジェクトを設定します。
Note
この記事では Maven ビルド ツールを使用して、コード例をビルドして実行します。 Gradle などの他のビルド ツールも、Azure SDK for Java で動作します。
パッケージをインストールする
テキスト エディターで pom.xml
ファイルを開きます。 BOM ファイルを含めるか、直接依存関係を含めることで、パッケージをインストールします。
import ステートメントを追加する
次の import
ステートメントを追加します。
import com.azure.core.util.polling.LongRunningOperationStatus;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.options.BlobBeginCopyOptions;
承認
認可メカニズムに、BLOB のアクセス層を設定するために必要なアクセス許可があることが必要です。 Microsoft Entra ID を使用した認可 (推奨) には、Azure RBAC 組み込みロールのストレージ BLOB データ共同作成者以上が必要です。 詳細については、「Set Blob Tier」の認可のガイダンスを参照してください。
クライアント オブジェクトの作成
アプリを Blob Storage に接続するには、 BlobServiceClientのインスタンスを作成します。
次の例では、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>");
クライアント オブジェクトの作成と管理の詳細については、「データ リソースを操作するクライアント オブジェクトを作成および管理する」を参照してください。
ブロック BLOB アクセス層について
ストレージ ニーズのコストを管理するには、アクセス頻度と必要な保持期間に基づいてデータを整理するのが有効です。 Azure ストレージには、使用方法に応じて最もコスト効率の高い方法で BLOB データを保存できるように複数のアクセス層が用意されています。
BLOB データのアクセス層
Azure Storage アクセス層には次のものがあります。
- ホット アクセス層 - 頻繁にアクセスまたは変更するデータの保存に最適なオンライン層。 ホット アクセス層はストレージ コストが最も高く、アクセス コストは最も安いです。
- クール アクセス層 - アクセスおよび変更の頻度が低いデータの保存に最適なオンライン層。 クール アクセス層のデータは、最低 30 日間は保存する必要があります。 クール アクセス層は、ホット アクセス層と比べてストレージ コストが安く、アクセス コストが高いです。
- コールド アクセス層 - アクセスおよび変更の頻度が低いデータの保存に最適なオンライン層。 コールド アクセス層のデータは、最低 90 日間は保存する必要があります。 コールド アクセス層は、クール アクセス層と比べてストレージ コストが安く、アクセス コストが高くなります。
- アーカイブ アクセス層 - めったにアクセスせず、数時間規模の待機時間の変動を許容できるデータ保存に最適なオフライン層。 アーカイブ アクセス層のデータは、最低 180 日間は保存する必要があります。
アクセス層の詳細については、「BLOB データのアクセス層」を参照してください。
BLOB はアーカイブ アクセス層に含まれていますが、オフラインと見なされ、読み取りや変更はできません。 アーカイブされた BLOB 内のデータを読み取りまたは変更するには、まず、オンライン層に BLOB をリハイドレートする必要があります。 アーカイブ層からオンライン層への BLOB のリハイドレートの詳細については、「アーカイブ層からの BLOB のリハイドレート」を参照してください。
制限
アクセス層の設定はブロック BLOB でのみ許可されています。 ブロック BLOB のアクセス層の設定に関する制限の詳細については、BLOB 層の設定 (REST API)に関する記事を参照してください。
注意
Java を使用してアクセス層を Cold
に設定するには、最小クライアント ライブラリ バージョン 12.21.0 を使用する必要があります。
アップロード中に BLOB のアクセス層を設定する
BlobUploadFromFileOptions クラスを使用して、アップロード時に BLOB のアクセス層を設定できます。 次のコード例は、BLOB をアップロードするときにアクセス層を設定する方法を示しています。
public void uploadBlobWithAccessTier(BlobContainerClient blobContainerClient, Path filePath) {
String fileName = filePath.getFileName().toString();
BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString())
.setTier(AccessTier.COOL);
try {
Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
} catch (UncheckedIOException ex) {
System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
}
}
Java を使用した BLOB のアップロードの詳細については、「Java を使用して BLOB をアップロードする」を参照してください。
既存のブロック BLOB のアクセス層を変更する
次のいずれかのメソッドを使用して、既存のブロック BLOB のアクセス層を変更できます。
次のコード例は、既存の BLOB のアクセス層をクールに変更する方法を示しています。
public void changeBlobAccessTier(BlobClient blobClient) {
// Change the blob's access tier to cool
blobClient.setAccessTier(AccessTier.COOL);
}
アーカイブされた BLOB をリハイドレートする場合は、setAccessTierWithResponse メソッドを使用します。 tier
パラメータを有効な AccessTier 値 (HOT
、COOL
、COLD
、または ARCHIVE
) に設定します。 必要に応じて、priority
パラメータを有効な RehydratePriority 値 (HIGH
または STANDARD
) に設定できます。
次のコード例は、アクセス層をホットに変更してアーカイ済み BLOB をリハイドレートする方法を示しています。
public void rehydrateBlobSetAccessTier(BlobClient blobClient) {
// Rehydrate the blob to hot tier using a standard rehydrate priority
blobClient.setAccessTierWithResponse(
AccessTier.HOT,
RehydratePriority.STANDARD,
null,
null,
null);
}
setAccessTierWithResponse メソッドは、BlobSetAccessTierOptions パラメータを受け取って構成オプションを指定することもできます。
BLOB を別のアクセス層にコピーする
コピー操作の一部としてアクセス層を指定することで、既存のブロック BLOB のアクセス層を変更できます。 コピー操作中にアクセス層を変更するには、BlobBeginCopyOptions クラスを使用します。
setTier メソッドを使用して、AccessTier 値を HOT
、COOL
、COLD
、または ARCHIVE
として指定できます。 コピー操作を使用してアーカイブ層から BLOB をリハイドレートする場合は、setRehydratePriority メソッドを使用してRehydratePriority 値を HIGH
または STANDARD
として指定します。
次のコード例は、コピー操作を使用してアーカイブされた BLOB をホット層にリハイドレートする方法を示しています。
public void rehydrateBlobUsingCopy(
BlobClient sourceArchiveBlob,
BlobClient destinationRehydratedBlob) {
// Note: the destination blob must have a different name than the archived source blob
// Start the copy operation and wait for it to complete
final SyncPoller<BlobCopyInfo, Void> poller = destinationRehydratedBlob.beginCopy(
new BlobBeginCopyOptions(sourceArchiveBlob.getBlobUrl())
.setTier(AccessTier.HOT)
.setRehydratePriority(RehydratePriority.STANDARD));
PollResponse<BlobCopyInfo> response = poller
.waitUntil(LongRunningOperationStatus.SUCCESSFULLY_COMPLETED);
}
Java を使用した BLOB のコピーの詳細については、「Java を使用して BLOB をコピーする」を参照してください。
リソース
Java 用 Azure Blob Storage クライアント ライブラリを使用したアクセス層の設定の詳細については、次のリソースをご覧ください。
コード サンプル
REST API の操作
Azure SDK for Java には Azure REST API に基づき構築されたライブラリが含まれるため、使い慣れた Java パラダイムを通じて REST API 操作を実施できます。 アクセス層を設定するためのクライアント ライブラリ メソッドでは、次の REST API 操作が使用されます。
- BLOB 層を設定する (REST API)
クライアント ライブラリのリソース
関連項目
関連するコンテンツ
- この記事は、Java の Blob Storage 開発者ガイドの一部です。 詳しくは、Java アプリの構築に関するセクションにある開発者ガイド記事の完全な一覧をご覧ください。