1 月末に、プライベートエンドポイントを使用して保護されているストレージ アカウント間のデータコピーができるようになりました。以下がそのアップデート情報です。
参考:Generally available: Copy Blob support over private endpoints in Azure Storage
Azure Storage では、一方または両方のアカウントがプライベートエンドポイントを使用して保護されているストレージ アカウント間でデータをコピーできるようになりました。これには、Copy Blob や AzCopy over Private Endpoints などのユーティリティのサポートが含まれます。この機能は、一方のアカウントがプライベートエンドポイントを使用し、もう一方がサービスエンドポイントを使用するストレージアカウント間でデータをコピーすることもできます。Azure Storage は、データのコピーを許可する前に、クライアントがソースとデスティネーションの両方のストレージアカウントにアクセスできることを検証します。
この機能を実際にどのように使用すればいいのか試してみました。
ストレージ アカウントを用意
まず、以下の方法で接続できるストレージ アカウントを用意します。
- プライベート エンドポイント
- パブリック エンドポイント (選択されたネットワーク ※サービス エンドポイント)
- パブリック エンドポイント (すべてのネットワーク)
以下のドキュメントを参考に各 Azure リソースを作成します。
※1.と2.については、インターネット経由からのアクセスを遮断します。こちらをご参考ください。
参考:チュートリアル:Azure プライベート エンドポイントを使用してストレージ アカウントに接続する
参考:チュートリアル: Azure Portal を使用して仮想ネットワーク サービス エンドポイントで PaaS リソースへのネットワーク アクセスを制限する
参考:Azure portal を使用してサービス エンドポイント ポリシーを作成、変更、または削除する
検証環境の紹介
検証するために以下のような環境を作成しました。
仮想マシン (demo-vm) から各ストレージアカウントのエンドポイント (FQDN) に対して「nslookup」を実行して IP アドレスを確認します。実行結果は以下のとおりです。
Private Endpoint を設置したストレージ アカウントからは、仮想ネットワーク上のプライベート IP アドレスが返されます。また、Service Endpoint を構成したストレージ アカウントとパブリックなストレージアカウントからは、パブリック IP アドレスが返されます。
検証してみよう
AzCopy で検証
以下のドキュメントから AzCopy をダウンロードして、任意のフォルダーに解凍しましょう。
また操作方法もこのドキュメントを参考にします。
参考:AzCopy v10 を使用して Azure Storage にデータをコピーまたは移動する
以降からの検証では Azure ポータルで SAS トークンを生成して、各ストレージ アカウントにアクセスします。
生成された SAS トークンは忘れずにメモっておきましょう。
使用時にはリソース URL にメモっておいた SAS トークンを含めます。
https://privatesto1.blob.core.windows.net/test1/aaaaa.txt?sv=<SAS トークン>
参考:Shared Access Signatures (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する
ストレージ 間での Blob コピー
ストレージ 間で Blob のコピーを以下のパターンで検証しています。
- Private Endpoint ⇔ Private Endpoint (privatesto1 ⇔ privatesto2)
- Private Endpoint ⇔ Service Endpoint (privatesto1/2 ⇔ publicsto3)
- Private Endpoint ⇔ Public Endpoint (privatesto1/2 ⇔ publicsto4)
- Service Endpoint ⇔ Public Endpoint (publicsto3 ⇔ publicsto4)
参考:AzCopy v10 を使用して Azure ストレージ アカウント間で BLOB をコピーする
1. Private Endpoint ⇔ Private Endpoint
Private Endpoint 間の Blob コピーは成功しました。
- privatesto1 (Private Endpoint) → privatesto2 (Private Endpoint)
2. Private Endpoint ⇔ Service Endpoint
Private Endpoint と Service Endpoint との間の Blob コピーは双方向とも成功しました。
- privatesto2 (Private Endpoint) → publicsto3 (Service Endpoint)
- publicsto3 (Service Endpoint) → privatesto2 (Private Endpoint)
3. Private Endpoint ⇔ Public Endpoint
Private Endpoint と Public Endpoint との間の BloB コピーは双方向とも成功しました。
- privatesto1 (Private Endpoint) → publicsto4 (Public Endpoint)
- publicsto4 (Public Endpoint) → privatesto1 (Private Endpoint)
4. Service Endpoint ⇔ Public Endpoint
Service Endpoint と Public Endpoint との間の BloB コピーは双方向とも成功しました。
- publicsto3 (Service Endpoint) → publicsto4 (Public Endpoint)
- publicsto4 (Public Endpoint) → publicsto3 (Service Endpoint)
Azure Storage Explorer で検証
Azure Storage Explorer でも操作を検証します。
参考:Azure Storage Explorer の概要
参考:クイック スタート:Azure Storage Explorer を使用して BLOB を作成する
ストレージ アカウントへ接続
Private Endpoint を経由してストレージ アカウントに接続する場合、以前は「接続文字列」を指定して接続していたと思います。
※勘違いだったらゴメンナサイ。
今回は Azure アカウントで接続しています。
はい。すべて問題なく接続できました。
ストレージ 間での Blob コピー
AzCopy と同じように、ストレージ 間で Blob のコピーを以下のパターンで検証しています。
- Private Endpoint ⇔ Private Endpoint (privatesto1 ⇔ privatesto2)
- Private Endpoint ⇔ Service Endpoint (privatesto1/2 ⇔ publicsto3)
- Private Endpoint ⇔ Public Endpoint (privatesto1/2 ⇔ publicsto4)
- Service Endpoint ⇔ Public Endpoint (publicsto3 ⇔ publicsto4)
1. Private Endpoint ⇔ Private Endpoint
Private Endpoint 間の Blob コピーは成功しました。
- privatesto1 (Private Endpoint) → privatesto2 (Private Endpoint)
2. Private Endpoint ⇔ Service Endpoint
Private Endpoint と Service Endpoint との間の Blob コピーは双方向とも成功しました。
- privatesto2 (Private Endpoint) → publicsto3 (Service Endpoint)
- publicsto3 (Service Endpoint) → privatesto2 (Private Endpoint)
3. Private Endpoint ⇔ Public Endpoint
Private Endpoint と Public Endpoint との間の BloB コピーは双方向とも成功しました。
- privatesto1 (Private Endpoint) → publicsto4 (Public Endpoint)
- publicsto4 (Public Endpoint) → privatesto1 (Private Endpoint)
4. Service Endpoint ⇔ Public Endpoint
Service Endpoint と Public Endpoint との間の BloB コピーは双方向とも成功しました。
- publicsto3 (Service Endpoint) → publicsto4 (Public Endpoint)
- publicsto4 (Public Endpoint) → publicsto3 (Service Endpoint)
まとめ
試してみた結果、エンドポイントに関係なくすべて正常に動作しました。
AzCopy も Azure Storage Explorer も今までと同じように使用できるので、困らずに済みますね。