BLOB のアーカイブ

アーカイブ アクセス層は、めったにアクセスしない BLOB データを保存するためのオフライン層です。 アーカイブ アクセス層は保存コストが最も安いですが、オンライン層 (ホットおよびクール) と比べてデータ取得コストが高く、待機時間が長いです。 データは、少なくとも 180 日間、アーカイブ層に保持される必要があります。そうでない場合、早期削除料金の対象になります。 アーカイブ アクセス層の詳細については、「アーカイブ アクセス層」を参照してください。

BLOB は、アーカイブ アクセス層にある間は、読み取りも変更もできません。 アーカイブ アクセス層の BLOB を読み取る、またはダウンロードするには、まずオンライン層 (ホットまたはクール アクセス層) にリハイドレートする必要があります。 アーカイブ層のデータは、再水和操作に指定した優先度に応じて、再水和するのに最大15時間かかる場合があります。 BLOB のリハイドレートの詳しい情報は「アーカイブ層からの BLOB のリハイドレートの概要」をご覧ください。

注意

アーカイブ アクセス層の BLOB はオフラインです。 つまり、リハイドレートされるまで読み取りや変更を行うことはできません。 リハイドレート プロセスには数時間かかり、コストがかかります。 アーカイブ アクセス層にデータを移動する前に、BLOB データをオフラインにすることがワークフローに影響しないか検討してください。

Azure portal、PowerShell、Azure CLI、またはいずれかの Azure Storage クライアント ライブラリを使用して、データのアーカイブを管理できます。

アップロード時に BLOB をアーカイブする

アップロード時に 1 つ以上の BLOB をアーカイブするには、アーカイブ アクセス層に BLOB を直接作成します。

Azure portal からアップロード時に BLOB または BLOB のセットをアーカイブするには、次の手順を実行します。

  1. ターゲット コンテナーに移動します。

  2. [アップロード] ボタンを選択します。

  3. アップロードするファイルを選択します。

  4. [詳細設定] セクションを展開し、 [アクセス層][アーカイブ] に設定します。

  5. [アップロード] ボタンを選択します。

    Screenshot showing how to upload blobs to the archive tier in the Azure portal.

既存の BLOB をアーカイブする

既存の BLOB をアーカイブ アクセス層に移動するには、次の 2 つの方法があります。

  • Set Blob Tier (BLOB の層を設定) 操作を使用して、BLOB のアクセス層を変更できます。 Set Blob Tier によって、1 つの BLOB が 1 つの階層から別の階層に移動します。

    BLOB 層の設定で BLOB をアーカイブ アクセス層に移動する場合、BLOB をリハイドレートするまで BLOB のデータの読み取りや変更ができないことに注意してください。 早期削除期間が経過する前に BLOB のデータを読み取りまたは変更する必要がある場合は、BLOB のコピー操作を使用して、BLOB のコピーをアーカイブ アクセス層に作成することを検討してください。

  • BLOB のコピー操作を使用して、オンライン層の BLOB をアーカイブ アクセス層にコピーできます。 BLOB のコピー操作を呼び出して、オンライン層 (ホットまたはクール) からアーカイブ アクセス層に BLOB をコピーすることができます。 ソース BLOB はオンライン層に残り、オンライン層でデータの読み取りまたは変更を続けることができます。

層を変更して既存の BLOB をアーカイブする

BLOB 層の設定操作を使用して、BLOB をホットまたはクール アクセス層からアーカイブ アクセス層に移動します。 Set Blob Tier 操作は、早期削除期間が経過する前にアーカイブされたデータにアクセスする必要がないシナリオに最適です。

Set Blob Tier 操作では、1 つの BLOB の層が変更されます。 最適なパフォーマンスで一連の BLOB をアーカイブ アクセス層に移動するには、一括アーカイブ操作を実行することをお勧めします。 一括アーカイブ操作では、1 つのトランザクションで、Set Blob Tier 呼び出しのバッチをサービスに送信します。 詳細については、「一括アーカイブ」を参照してください。

Azure portal で既存の BLOB をアーカイブ アクセス層に移動するには、こちらの手順を実行します。

  1. BLOB のコンテナーに移動します。

  2. アーカイブする BLOB を選択します。

  3. [層の変更] ボタンを選択します。

  4. [アクセス層] ドロップダウンから [アーカイブ] を選択します。

  5. [保存] を選択します。

    Screenshot showing how to set a blob's tier to Archive in the Azure portal

コピー操作により既存の BLOB をアーカイブする

BLOB のコピー操作を使用して、ホットまたはクール アクセス層からアーカイブ アクセス層に BLOB をコピーします。 ソース BLOB はホットまたはクール アクセス層に残り、コピー先の BLOB がアーカイブ アクセス層に作成されます。

Copy Blob 操作は、早期削除期間が経過する前にアーカイブされたデータを読み取りまたは変更することが必要な可能性があるシナリオに最適です。 アーカイブされた BLOB をリハイドレートしなくても、ソース BLOB のデータにアクセスできます。

該当なし

一括アーカイブ

コンテナーまたはフォルダー内の Archive レベルに BLOB を移動するには、BLOB を列挙し、それぞれに対して [BLOB 層の設定] 操作を呼び出します。 次の例は、この操作の実行方法を示しています。

該当なし

多数の BLOB をアーカイブ アクセス層に移動する場合は、最適なパフォーマンスを得るためにバッチ操作を使用します。 バッチ操作では、1 つの要求で複数の API 呼び出しがサービスに送信されます。 Blob Batch 操作でサポートされるサブ操作には、Delete BlobSet Blob Tier があります。

バッチ操作で BLOB をアーカイブするには、Azure Storage クライアント ライブラリのいずれかを使用します。 次のコード例は、.NET クライアント ライブラリで基本的なバッチ操作を実行する方法を示しています。

static async Task BulkArchiveContainerContents(string accountName, string containerName)
{
    string containerUri = string.Format("https://{0}.blob.core.windows.net/{1}",
                                    accountName,
                                    containerName);

    // Get container client, using Azure AD credentials.
    BlobUriBuilder containerUriBuilder = new BlobUriBuilder(new Uri(containerUri));
    BlobContainerClient blobContainerClient = new BlobContainerClient(containerUriBuilder.ToUri(), 
                                                                      new DefaultAzureCredential());

    // Get URIs for blobs in this container and add to stack.
    var uris = new Stack<Uri>();
    await foreach (var item in blobContainerClient.GetBlobsAsync())
    {
        uris.Push(blobContainerClient.GetBlobClient(item.Name).Uri);
    }

    // Get the blob batch client.
    BlobBatchClient blobBatchClient = blobContainerClient.GetBlobBatchClient();

    try
    {
        // Perform the bulk operation to archive blobs.
        await blobBatchClient.SetBlobsAccessTierAsync(blobUris: uris, accessTier: AccessTier.Archive);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
    }
}

バッチ操作で層を変更する方法を示す詳細なサンプル アプリケーションについては、「AzBulkSetBlobTier」を参照してください。

ライフサイクル管理ポリシーを使用して BLOB をアーカイブする

指定した期間内にアクセスまたは変更されていない BLOB をアーカイブ アクセス層に自動的に移動するライフサイクル管理ポリシーを作成することによって、ほとんどアクセスされない BLOB データのコストを最適化することができます。 ライフサイクル管理ポリシーを構成すると、Azure Storage はそれを1日に1回実行します。 ライフサイクル管理ポリシーの詳細については、「データ ライフサイクルを自動管理してコストを最適化する」を参照してください。

Azure portal、PowerShell、Azure CLI、または Azure Resource Manager テンプレートを使用して、ライフサイクル管理ポリシーを追加、編集、削除することができます。 わかりやすくするために、このセクションでは、Azure portal でライフサイクル管理ポリシーを作成する方法のみを説明します。 ライフサイクル管理ポリシーの作成方法を示すその他の例については、「ライフサイクル管理ポリシーの構成」を参照してください。

注意事項

ライフサイクル管理ポリシーを使用してデータをアーカイブ アクセス層に移動する前に、少なくとも180日間、データを削除したり別の層に移動したりする必要がないことを確認してください。 180日の期間が経過する前に削除または別の階層に移動されたデータには、早期削除料金が適用されます。

また、アーカイブ アクセス層のデータを読み取りまたは変更するには、事前にリハイドレートする必要があることに注意してください。 アーカイブ アクセス層からの BLOB のリハイドレートは、完了までに数時間かかることがあります。

Azure portal で BLOB をアーカイブするライフサイクル管理ポリシーを作成するには、次の手順を実行します。

手順 1: 規則を作成し、BLOB の種類を指定する

  1. ポータルでストレージ アカウントに移動します。

  2. [データ管理]で、[ライフサイクル管理]の設定を特定します。

  3. [規則の追加]ボタンを選択します。

  4. [詳細]タブで、規則の名前を指定します。

  5. 規則のスコープを指定します。 ストレージアカウント内のすべての BLOB に規則を適用するか、 フィルターを使用して BLOB を制限します。

  6. 規則を適用する BLOB の種類を選択し、BLOB のスナップショットとバージョンのどちらを含めるかを指定します。

    Screenshot showing how to configure a lifecycle management policy - Details tab.

手順 2: 規則の条件を追加する

  1. 選択内容に応じて、ベース BLOB (現在のバージョン)、以前のバージョン、または BLOB のスナップショットの規則を構成できます。 次の2つの条件のいずれかを指定して確認します。

    • オブジェクトが最後に変更されたのは数日前です。
    • オブジェクトが作成されたのは数日前です。
    • オブジェクトが最後にアクセスされたのは数日前です。

    これらの条件のうち1つだけを適用して、特定の種類のオブジェクトを規則ごとにアーカイブ アクセス層に移動できます。 たとえば、90日間に変更されていないベース BLOB をアーカイブするアクションを定義した場合、90日間アクセスされていないベース BLOB をアーカイブするアクションを定義することはできません。 同様に、これらの条件のいずれかを使用して規則ごとに1つのアクションを定義して、以前のバージョンをアーカイブし、スナップショットをアーカイブすることができます。

  2. 次に、オブジェクトが変更またはアクセスされてからの経過日数を指定します。

  3. 間隔が経過した後で、オブジェクトをアーカイブ アクセス層に移動するように指定します。

    Screenshot showing how to configure a lifecycle management policy - Base blob tab.

  4. 規則の影響を受ける BLOB をフィルターによって制限することを選択した場合は、BLOB プレフィックスまたは BLOB インデックス マッチでフィルターを指定できます。

手順 3: リハイドレートされた BLOB が規則によって除外されていることを確認する

BLOB をその層を変更してリハイドレートした場合でも、最終更新時刻、作成時刻、最終アクセス時刻のいずれかがポリシーに設定されたしきい値を超えると、この規則によって BLOB がアーカイブ層に戻されます。

規則の条件として [最終更新] を選択した場合、[次の期間にリハイドレートされた BLOB をスキップする: 過去] を選択し、リハイドレートされた BLOB をこの規則から除外する日数を入力することによってこれを防ぐことができます。

Screenshot showing the skip blobs that have been rehydrated in the last setting.

Note

このオプションは、規則の条件として [最終更新] を選択した場合にのみ表示されます。

[追加]ボタンを選択して、ポリシーに規則を追加します。

ポリシーの JSON を表示する

ライフサイクル管理ポリシーを作成した後、リストビューからコードビューに切り替えることによって、ライフサイクル管理ページでポリシーの JSON を表示できます。

上記のイメージで作成された簡単なライフサイクル管理ポリシーの JSON を次に示します。

{
  "rules": [
    {
      "enabled": true,
      "name": "sample-archive-rule",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "tierToArchive": {
              "daysAfterLastAccessTimeGreaterThan": 90,
              "daysAfterLastTierChangeGreaterThan": 7
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ]
        }
      }
    }
  ]
}

関連項目