ブロブをアーカイブする

アーカイブ層は、ほとんどアクセスされないブロブデータを保存するためのオフライン層です。 アーカイブ層はストレージコストが最も低いですが、オンライン層(ホット・クール)に比べてデータ取得コストや遅延が高くなります。 データは、少なくとも 180 日間、アーカイブ層に保持される必要があります。そうでない場合、早期削除料金の対象になります。 アーカイブ層の詳細については、「 アーカイブアクセス層」をご覧ください。

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

Caution

アーカイブ層のブロブはオフラインです。 つまり、再水和されるまでは読み取りや改変ができません。 水分補給には数時間かかることがあり、それに伴う費用もかかります。 データをアーカイブ層に移す前に、ブロブデータをオフラインにすることがワークフローに影響を与えるかどうかを検討してください。

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

アップロード時のアーカイブブロブ

アップロード時に 1 つ以上の BLOB をアーカイブするには、BLOB をアーカイブ層に直接作成してください。

Azureポータルからアップロード時にブロブまたは複数のブロブをアーカイブするには、以下の手順に従ってください。

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

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

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

  4. Advancedセクションを展開し、アクセス階層アーカイブに設定してください。

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

    Azureポータルのアーカイブ層にブロブをアップロードする方法のスクリーンショットです。

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

既存のブロブをアーカイブ階層に移動させる方法は2通りです:

  • Set Blob Tier操作でブロブの階層を変更できます。 Set Blob Tier は、単一のブロブをある階層から別の階層へ移動させます。

    Set Blob Tierでブロブをアーカイブ層に移動させると、ブロブを再水和させるまではデータを読み取ったり変更したりできません。 早期削除間隔が経過する前にブロブのデータを読み取ったり変更する必要がある場合は、アーカイブ層でブロブのコピーを作成するためにコピーブロ 操作を使うことを検討してください。

  • オンラインティアのブロブをコピーすれば、アーカイブティアにコピーできます。 Copy Blob操作を呼び出して、オンラインティア(ホットまたはクール)からアーカイブティアにブロブをコピーできます。 ソースブロブはオンラインティアに残り、オンラインティアでもそのデータを読み取ったり変更したりできます。

既存のブロブをティア変更してアーカイブする

Set Blob Tier操作を使って、HotまたはCool Tierからアーカイブティアにブロブを移動させます。 Set Blob Tier操作は、早期削除間隔が経過する前にアーカイブデータにアクセスする必要がないシナリオに最適です。

Set Blob Tier操作は、単一のブロブの階層を変更します。 最適なパフォーマンスで複数のブロブをアーカイブ層に移動させるには、Microsoftは一括アーカイブ操作を推奨しています。 一括アーカイブ操作では、Set Blob Tier の呼び出しをまとめて 1 回のトランザクションでサービスに送信します。 詳細は 「バルクアーカイブ」をご覧ください。

既存のブロブをAzureポータルのアーカイブ層に移動するには、以下の手順に従ってください:

  1. ブロブのコンテナへ移動してください。

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

  3. 「ティア変更」ボタンを選択してください。

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

  5. 保存を選びます。

    AzureポータルでBlobの階層をArchiveに設定する方法を示すスクリーンショット

コピー操作で既存のブロブをアーカイブします

Copy Blob操作を使って、ホット層や冷たい層からアーカイブ層にブロブをコピーします。 ソースブロブはホットまたはクール層に残り、宛先ブロブはアーカイブ層に作成されます。

コピーブロ 操作は、早期削除間隔が経過する前にアーカイブデータを読み取ったり修正したりする必要がある場合に最適です。 アーカイブされたブロブを再ハイドレートすることなく、元のブロブのデータにアクセスできます。

N/A

一括アーカイブ

コンテナやフォルダ内のアーカイブ層にブロブを移動するには、ブロブを列挙し、それぞれに対してSet Blob Tier操作を呼び出します。 次の例は、この操作の実行方法を示しています。

N/A

大量のブロブをアーカイブ層に移動する際は、最適なパフォーマンスのためにバッチ操作を用いてください。 バッチ操作では、1 つの要求で複数の API 呼び出しがサービスに送信されます。 Blob Batch 操作でサポートされるサブ操作には、Delete BlobSet Blob Tier があります。

バッチ操作でブロブをアーカイブするには、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」を参照してください。

ライフサイクル管理ポリシーを使ってブロブをアーカイブします

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

Azureポータル、PowerShell、Azure CLI、またはAzure Resource Managerテンプレートを使ってライフサイクル管理ポリシーを作成できます。 簡単のため、このセクションではAzureポータルのみでライフサイクル管理ポリシーを作成する方法を示します。 ライフサイクル管理ポリシーの作成方法を示すさらなる例については、「 ライフサイクル管理ポリシーの設定」をご覧ください。

Caution

ライフサイクル管理ポリシーを使ってデータをアーカイブ層に移動する前に、そのデータが少なくとも180日間削除または別の階層に移動する必要がないか確認してください。 180日以内に削除または別のティアに移動したデータには早期削除手数料が課されます。

また、アーカイブ層のデータは読み取りや変更前にリハイドレートされている必要があることも覚えておいてください。 アーカイブ層からブロブを再水和させるには数時間かかり、それに伴うコストもかかります。

Azureポータルでブロブをアーカイブするためのライフサイクル管理ポリシーを作成するには、以下の手順に従ってください:

ステップ1:ルールを作成し、ブロブタイプを指定します

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

  2. データ管理の中で、ライフサイクル管理の設定を見つけてください。

  3. ルールを追加」 ボタンを選択します。

  4. 詳細タブでルールの名前を指定します。

  5. ルールの範囲を指定してください: ストレージアカウント内のすべてのブロブにルールを適用するか、 フィルター付きのブロブを制限する。

  6. ルールを適用するブロブの種類を選択し、ブロブスナップショットを含めるかバージョンを含めるかを指定します。

    ライフサイクル管理ポリシーの設定方法を示すスクリーンショット - 詳細タブ。

ステップ2:ルール条件の追加

  1. 選択に応じて、ベースブロブ(現在のバージョン)、過去のバージョン、またはブロブスナップショットのルールを設定できます。 チェックすべき2つの条件のいずれかを指定します:

    • オブジェクトは数日前に最後に改造されました。
    • オブジェクトは数日前に作成されました。
    • 物体は数日前に最後にアクセスされた。

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

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

  3. 間隔が経過した後にオブジェクトをアーカイブ層に移動することを指定してください。

    ライフサイクル管理ポリシーの設定方法を示すスクリーンショット - Base Blobタブ。

  4. ルールで影響を受けるブロブをフィルターで制限する場合は、ブロブプレフィックスかブロブインデックスマッチでフィルターを指定することができます。

ステップ3:規則が再水和した塊を除外していることを確認

Blob の階層を変更して再ハイドレートした場合、最終更新時刻、作成時刻、または最終アクセス時刻がポリシーで設定されたしきい値を超えていると、このルールにより Blob はアーカイブ階層に戻されます。

最終更新日 のルール条件を選択した場合は、過去 で再水和されたブロブをスキップする を選択し、再水和されたブロブをこのルールの対象外にする日数を入力することで、これを防ぐことができます。

前回の設定で再水和されたスキップブロブのスクリーンショットです。

Note

このオプションは 「最後に修正された ルール条件」を選択した場合のみ表示されます。

ルールをポリシーに追加するには 「追加 」ボタンを選択してください。

ポリシーのJSON を見る

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

上記の画像で作成されたシンプルなライフサイクル管理ポリシーのJSONはこちらです:

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

こちらも参照ください