Azure Blob Storageのオブジェクト レプリケーション設定(Blob コンテナー間のレプリケーション)

2021-10-06Azure,Storage(Files,Blob)

ストレージアカウント(Azure Blob Storage)におけるオブジェクト レプリケーション機能の設定手順から、BLOBのレプリケーションまでを紹介しています。
ストレージアカウントでのレプリケーション規則の作成や条件設定、コンテナーでBLOBを更新・削除した場合のレプリケーション状況を確認しています。

※本記事内では、ブロックBLOBやファイルをBLOBとして記載しています。

スポンサーリンク

 ストレージアカウントでオブジェクト レプリケーションを設定

オブジェクト レプリケーションとは?

ストレージアカウント(Azure Blob Storage)間でブロックBLOBを非同期にレプリケーションする機能です。
非同期との記載がありますが、バッチ処理ではなく、随時レプリケーションされます。

ブロック BLOB のオブジェクト レプリケーション

レプリケーション規則を作成して利用する

オブジェクト レプリケーションを利用する場合は、レプリケーション規則を作成します。
この規則では、ストレージアカウント名とコンテナー名を設定します。
レプリケーション先として、別リージョンのストレージアカウントを設定することも可能です。
また、1つのコンテナーに対して複数のレプリケーション先を設定することができます。

オブジェクト レプリケーション機能は、汎用v2ストレージアカウントまたはPremiumブロックBLOBアカウントで利用できます。

※記事記載時点(2024年12月)では、階層型名前空間が有効になっているストレージアカウントでは、オブジェクト レプリケーションは利用できません。

ストレージアカウントの変更フィードやBLOB バージョン管理を使う

オブジェクト レプリケーションを利用する場合、レプリケーション元となるストレージアカウントの変更フィードを有効にする必要があります。
また、レプリケーション元およびレプリケーション先のストレージアカウントの両方で、BLOBバージョン管理を有効にする必要があります。

オブジェクト レプリケーションの前提条件と注意事項

オブジェクト レプリケーション規則の作成と同時に、変更フィードやBLOBバージョン管理は自動的に有効化されます。
変更フィードなどには追加で課金が発生するため、その点に注意が必要です。

Azure Blob Storage の価格

オブジェクト レプリケーションの同期間隔

オブジェクト レプリケーションは非同期で実行されます。
レプリケーション間隔に関するSLAは提供されておらず、即時に同期される機能ではない点に注意が必要です。

オブジェクト レプリケーションのしくみ

ストレージアカウントの冗長性とは関連しない

オブジェクト レプリケーションは、ストレージアカウント間でブロックBLOBをコピーする機能です。
ストレージアカウントの冗長性とは関連せずに設定できます。

確認用のストレージアカウント設定

確認用のストレージアカウントは、3つ(sttest03object01、02、03)作成しています。
汎用 v2のストレージ アカウント(ローカル冗長(LRS))を利用しています。

ストレージアカウント名 リージョン BLOBコンテナー名
sttest01object01 East US 2 test-01
test-02
sttest02object02 Japan East test-01
sttest03object03 Japan West test-01
  オブジェクトレプリケーションの動作確認用ストレージアカウント

作成したレプリケーション規則

レプリケーション規則では、レプリケーション元のストレージアカウントとコンテナー名、レプリケーション先のストレージアカウントとコンテナー名を設定します。
転送するBLOBのフィルターや上書きコピーの条件設定もできます。

レプリケーション元 レプリケーション先 レプリケーション規則設定
sttest01object01 test-01 sttest02object02 test-01

上書きコピー:新しいファイルのみ
フィルター:なし

sttest01object01 test-02 sttest03object03 test-01

上書きコピー:すべて
フィルター:なし

sttest01object01 test-02 sttest03object03 test-01

上書きコピー:すべて
フィルター:あり

※sttest01object01からsttest03object03へのレプリケーション規則は、フィルター設定を確認するために変更して利用しています。

レプリケーション規則の作成手順

レプリケーション規則を作成します。
オブジェクト レプリケーションのメニューからレプリケーション規則を作成します。

1つのレプリケーション規則で設定できるストレージアカウントは1つです。
ストレージアカウント単位でレプリケーション規則を作成する必要があります。
1つのレプリケーション規則で複数のコンテナーを設定する事ができます。

レプリケーション規則作成には、ストレージアカウントに対して共同作成者以上の権限が必要になります。

前提条件(ブロック BLOB のオブジェクト レプリケーションを構成する)

公式サイトの手順を参考に進めます。

ブロック BLOB のオブジェクト レプリケーションを構成する

レプリケーション規則を作成
ストレージアカウントのデータ管理になるオブジェクト レプリケーションを選択します。
レプリケーション規則の作成を選択します。
レプリケーション規則の作成(ストレージアカウントのオブジェクトレプリケーション設定)

レプリケーション規則の作成画面です。
ターゲットのストレージ アカウントを選択します。
ソースのコンテナーと宛先のコンテナーを選択します。
作成を選択します。

レプリケーション規則を設定(ストレージアカウントのオブジェクトレプリケーション設定)

作成したレプリケーション規則を確認

レプリケーション元のストレージアカウントとレプリケーション先のストレージアカウントでレプリケーション規則を確認します。
ストレージアカウント名、対象のコンテナーを確認できます。

レプリケーション規則を確認
それぞれのストレージアカウントで、レプリケーション規則が設定されている事が確認できます。
レプリケーション元では、このアカウントからコピーされたオブジェクトとして表示されます。
レプリケーション先では、このアカウントにコピーされたオブジェクトとして表示されます。

【レプリケーション元のストレージアカウント】作成したレプリケーション規則(レプリケーション元ストレージアカウント)(ストレージアカウントのオブジェクトレプリケーション設定)
【レプリケーション先のストレージアカウント】作成したレプリケーション規則(レプリケーション先ストレージアカウント)(ストレージアカウントのオブジェクトレプリケーション設定)

レプリケーション規則を作成した後の変更フィードやBLOB バージョン管理設定

レプリケーション規則作成したストレージアカウントで、データ保護設定を確認します。

ストレージアカウントのデータ保護設定

レプリケーション元のストレージアカウントで、BLOBのバージョン管理、BLOBの変更フィードが有効化されています。
レプリケーション先のストレージアカウントで、BLOBのバージョン管理が有効化されています。

※オブジェクト レプリケーション未設定のストレージアカウントのデータ保護設定は、比較のために載せています。

【レプリケーション元のストレージアカウント】データ保護設定(レプリケーション元ストレージアカウント)(ストレージアカウントのオブジェクトレプリケーション設定)
【レプリケーション先のストレージアカウント】データ保護設定(レプリケーション先ストレージアカウント)(ストレージアカウントのオブジェクトレプリケーション設定)
【オブジェクト レプリケーション設定前のストレージアカウント】データ保護設定(レプリケーション設定前)(ストレージアカウントのオブジェクトレプリケーション設定)

—広告—

オブジェクト レプリケーションを使ったBLOBのレプリケーション

コンテナーにBLOBをアップロードしてレプリケーションを確認

コンテナーにBLOBをアップロードして、ストレージアカウント間のレプリケーションを確認します。
レプリケーション元のコンテナーに3つ(test01.txt、test02.txt、test03.txt)のBLOBをアップロードします。

BLOBのレプリケーションを確認
レプリケーション元のストレージアカウントです。
コンテナーに3つのBLOBをアップロードします。
BLOBをアップロード(ストレージアカウントのオブジェクトレプリケーション設定)
レプリケーション先のストレージアカウントに、3つのBLOBが作成されている事が確認できます。
レプリケーションが非同期であるため、最終変更日にタイムラグが生じています。
【レプリケーション元のコンテナー】BLOB一覧(レプリケーション元コンテナー)(ストレージアカウントのオブジェクトレプリケーション設定)
【レプリケーション先のコンテナー】BLOB一覧(レプリケーション先コンテナー)(ストレージアカウントのオブジェクトレプリケーション設定)
オブジェクト レプリケーションの状態を確認します。
レプリケーション元のコンテナーで、BLOBのプロパティに状態が表示されます。

BLOBのプロパティ(ストレージアカウントのオブジェクトレプリケーション設定)

レプリケーション元のコンテナーでBLOBを削除した場合

レプリケーション元のコンテナーでBLOBを削除した場合、レプリケーション先のコンテナーでもBLOBが削除されます。
BLOBのバージョン管理については、公式サイトの記載を確認してください。

削除操作でのバージョン管理

BLOBを削除して確認
レプリケーション元のコンテナーでBLOB(test03.txt)を削除します。
レプリケーション先のコンテナーでもBLOB(test03.txt)が削除されている事が確認できます。
【レプリケーション元でBLOBを削除】BLOBを削除(ストレージアカウントのオブジェクトレプリケーション)
【レプリケーション元のコンテナー】BLOB削除後の一覧(レプリケーション元コンテナー)(ストレージアカウントのオブジェクトレプリケーション)
BLOB削除後の一覧(レプリケーション先コンテナー)(ストレージアカウントのオブジェクトレプリケーション)

レプリケーション先のコンテナーにBLOBをアップロードするとエラーになる

レプリケーション先のコンテナーにファイルをアップロードする事はできません。
The request is rejected because of object replication policy.とエラーメッセージが表示されます。

BLOBをアップロード時のエラー
レプリケーション先のコンテナーにBLOBをアップロードするとエラーになります。 BLOBアップロード時のエラー(ストレージアカウントのオブジェクトレプリケーション)

※レプリケーション先のコンテナーでBLOBを削除する事はできます。

レプリケーション規則の上書きコピー設定を編集

レプリケーション規則では、上書きコピーの条件を設定できます。
すべて、新しいオブジェクトのみ、カスタムの3種類から選択できます。
カスタム設定では、特定の日時以降に作成されたオブジェクトのみをコピーするように設定できます。

上書きコピー設定は、レプリケーション規則作成時だけでなく、作成後に変更することもできます。

レプリケーション規則の上書きコピー設定を変更
レプリケーション規則で規則の編集を選択します。
上書きコピーの項目で変更を選択します。
レプリケーション規則の編集(ストレージアカウントのオブジェクトレプリケーション)
レプリケーション規則で上書きコピー設定を変更(ストレージアカウントのオブジェクトレプリケーション)
上書きコピーの条件を3種類から選択できます。
デフォルトでは新しいオブジェクトのみが選択されています。
カスタムを選択した場合は、日時も指定します。

レプリケーション規則の上書きコピー設定パターン(ストレージアカウントのオブジェクトレプリケーション)
レプリケーション規則の上書きコピーでカスタムを選択した場合(ストレージアカウントのオブジェクトレプリケーション)

上書きコピー設定を変更してBLOBのレプリケーション状況を確認

レプリケーション規則の上書きコピー設定の動作を確認します。
レプリケーション規則の上書きコピー設定を、新しいオブジェクトのみから、すべてに変更します。

レプリケーション規則の上書きコピー設定を変更

レプリケーション規則作成前に、3つのBLOBをアップロードした状態としています。
レプリケーション規則を作成します。
上書きコピーの設定は、新しいオブジェクトのみにしています。

レプリケーション先のコンテナーを確認します。
既存のBLOBがコピーされていない事が確認できます。

レプリケーション前のBLOBコンテナー(ストレージアカウントのオブジェクトレプリケーション)
レプリケーション規則変更前の上書きコピー設定(ストレージアカウントのオブジェクトレプリケーション)
レプリケーション先のコンテナー(ストレージアカウントのオブジェクトレプリケーション)

レプリケーション規則で、上書きコピーの設定をすべてに変更します。

レプリケーション規則変更後に、レプリケーション先のコンテナーでBLOBを確認します。
既存のBLOBがレプリケーションされている事が確認できます。

レプリケーション規則の上書きコピーをすべてに変更(ストレージアカウントのオブジェクトレプリケーション)
レプリケーション規則変更後のBLOBコンテナー(ストレージアカウントのオブジェクトレプリケーション)

レプリケーション規則のフィルター設定

レプリケーション対象のフィルター条件を設定できます。
プレフィックス一致を追加する事で、レプリケーション対象のBLOBをフィルターできます。
プレフィックス一致に合致したBLOBのみがレプリケーションされます。

test01.txtという文字列で、プレフィックスの一致を追加します。
test01.txt、test02.txt、test03.txtというBLOBのうち、test01.txtしかレプリケーションされないか確認します。

最大 5 つまで追加できます。ワイルドカードは利用できません。

ブロック BLOB のオブジェクト レプリケーションを構成する

レプリケーション規則にフィルターを追加して確認
レプリケーション規則を編集してフィルターを追加します。
プレフィックス一致の追加にtest01.txtを設定し保存します。
レプリケーション規則のフィルター設定(ストレージアカウントのオブジェクトレプリケーション)
フィルター設定変更後のレプリケーション規則(ストレージアカウントのオブジェクトレプリケーション)
レプリケーション元のコンテナーには3つのBLOBが存在しますが、レプリケーション先のコンテナーにはBLOBが1つしか存在しません。
プレフィックス一致の文字列に合致したBLOBのみがレプリケーションされていることが確認できます。
【レプリケーション元のコンテナー】フィルター設定した状態のBLOBコンテナー(レプリケーション元のコンテナー)(ストレージアカウントのオブジェクトレプリケーション)
【レプリケーション先のコンテナー】フィルター設定した状態のBLOBコンテナー(レプリケーション先のコンテナー)(ストレージアカウントのオブジェクトレプリケーション)

—広告—

最後に

ストレージアカウントのオブジェクトレプリケーション設定について、手順から簡単な動作確認まで試してみました。
別リージョンへのBLOBコンテナーのバックアップなどにも簡単に利用できそうです。
課金面や、記事記載時点では階層型名前空間が有効になっている場合には利用できないなど、注意すべきポイントはありますが、簡単に設定できて便利な機能だと思いました。

引き続き、いろいろ試してみたいと思います。

Azure Backup Vaultを使ったAzure BLOB コンテナーのバックアップリストア手順はこちらで紹介しています。

ストレージアカウントのライフルサイクル管理についてはこちらで紹介しています。

Azure Blob StorageをRocky LinuxからNFSでマウントする手順についてはこちらで紹介しています。

※記事の記載時点では、残念ながら、NFSを利用している場合はオブジェクトレプリケーションがサポートされていません。

スポンサーリンク