Azure Blob Storageのオブジェクト レプリケーション設定(Blob コンテナー間のレプリケーション)
ストレージアカウント(Azure Blob Storage)におけるオブジェクト レプリケーション機能の設定手順から、BLOBのレプリケーションまでを紹介しています。
ストレージアカウントでのレプリケーション規則の作成や条件設定、コンテナーでBLOBを更新・削除した場合のレプリケーション状況を確認しています。
※本記事内では、ブロックBLOBやファイルをBLOBとして記載しています。
ストレージアカウントでオブジェクト レプリケーションを設定
オブジェクト レプリケーションとは?
ストレージアカウント(Azure Blob Storage)間でブロックBLOBを非同期にレプリケーションする機能です。
非同期との記載がありますが、バッチ処理ではなく、随時レプリケーションされます。
レプリケーション規則を作成して利用する
オブジェクト レプリケーションを利用する場合は、レプリケーション規則を作成します。
この規則では、ストレージアカウント名とコンテナー名を設定します。
レプリケーション先として、別リージョンのストレージアカウントを設定することも可能です。
また、1つのコンテナーに対して複数のレプリケーション先を設定することができます。
オブジェクト レプリケーション機能は、汎用v2ストレージアカウントまたはPremiumブロックBLOBアカウントで利用できます。
※記事記載時点(2024年12月)では、階層型名前空間が有効になっているストレージアカウントでは、オブジェクト レプリケーションは利用できません。
ストレージアカウントの変更フィードやBLOB バージョン管理を使う
オブジェクト レプリケーションを利用する場合、レプリケーション元となるストレージアカウントの変更フィードを有効にする必要があります。
また、レプリケーション元およびレプリケーション先のストレージアカウントの両方で、BLOBバージョン管理を有効にする必要があります。
オブジェクト レプリケーション規則の作成と同時に、変更フィードやBLOBバージョン管理は自動的に有効化されます。
変更フィードなどには追加で課金が発生するため、その点に注意が必要です。
オブジェクト レプリケーションの同期間隔
オブジェクト レプリケーションは非同期で実行されます。
レプリケーション間隔に関する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をアップロードして、ストレージアカウント間のレプリケーションを確認します。
レプリケーション元のコンテナーに3つ(test01.txt、test02.txt、test03.txt)のBLOBをアップロードします。
レプリケーション元のコンテナーでBLOBを削除した場合
レプリケーション元のコンテナーでBLOBを削除した場合、レプリケーション先のコンテナーでもBLOBが削除されます。
BLOBのバージョン管理については、公式サイトの記載を確認してください。
BLOBを削除して確認 | |
レプリケーション元のコンテナーでBLOB(test03.txt)を削除します。 レプリケーション先のコンテナーでもBLOB(test03.txt)が削除されている事が確認できます。 |
【レプリケーション元でBLOBを削除】 |
【レプリケーション元のコンテナー】 | |
レプリケーション先のコンテナーにBLOBをアップロードするとエラーになる
レプリケーション先のコンテナーにファイルをアップロードする事はできません。
The request is rejected because of object replication policy.とエラーメッセージが表示されます。
BLOBをアップロード時のエラー | |
レプリケーション先のコンテナーにBLOBをアップロードするとエラーになります。 |
※レプリケーション先のコンテナーでBLOBを削除する事はできます。
レプリケーション規則の上書きコピー設定を編集
レプリケーション規則では、上書きコピーの条件を設定できます。
すべて、新しいオブジェクトのみ、カスタムの3種類から選択できます。
カスタム設定では、特定の日時以降に作成されたオブジェクトのみをコピーするように設定できます。
上書きコピー設定は、レプリケーション規則作成時だけでなく、作成後に変更することもできます。
レプリケーション規則の上書きコピー設定を変更 | |
レプリケーション規則で規則の編集を選択します。 上書きコピーの項目で変更を選択します。 |
|
上書きコピーの条件を3種類から選択できます。 デフォルトでは新しいオブジェクトのみが選択されています。 カスタムを選択した場合は、日時も指定します。
|
|
上書きコピー設定を変更してBLOBのレプリケーション状況を確認
レプリケーション規則の上書きコピー設定の動作を確認します。
レプリケーション規則の上書きコピー設定を、新しいオブジェクトのみから、すべてに変更します。
レプリケーション規則のフィルター設定
レプリケーション対象のフィルター条件を設定できます。
プレフィックス一致を追加する事で、レプリケーション対象のBLOBをフィルターできます。
プレフィックス一致に合致したBLOBのみがレプリケーションされます。
test01.txtという文字列で、プレフィックスの一致を追加します。
test01.txt、test02.txt、test03.txtというBLOBのうち、test01.txtしかレプリケーションされないか確認します。
最大 5 つまで追加できます。ワイルドカードは利用できません。
ブロック BLOB のオブジェクト レプリケーションを構成する
—広告—
最後に
ストレージアカウントのオブジェクトレプリケーション設定について、手順から簡単な動作確認まで試してみました。
別リージョンへのBLOBコンテナーのバックアップなどにも簡単に利用できそうです。
課金面や、記事記載時点では階層型名前空間が有効になっている場合には利用できないなど、注意すべきポイントはありますが、簡単に設定できて便利な機能だと思いました。
引き続き、いろいろ試してみたいと思います。
Azure Backup Vaultを使ったAzure BLOB コンテナーのバックアップリストア手順はこちらで紹介しています。
ストレージアカウントのライフルサイクル管理についてはこちらで紹介しています。
Azure Blob StorageをRocky LinuxからNFSでマウントする手順についてはこちらで紹介しています。
※記事の記載時点では、残念ながら、NFSを利用している場合はオブジェクトレプリケーションがサポートされていません。