Azure Event Grid システム トピックを別のリージョンに再配置する
この記事では、Event Grid システム トピックを別のリージョンに再配置する際に推奨されるアプローチ、ガイドライン、およびプラクティスについて説明します。
既存の Azure リソースを 1 つのリージョンから他のリージョンに移動する必要が生じる理由は多数存在します。 以下を行うことができます。
- 新しい Azure リージョンの利点を活用する。
- 特定のリージョンでしか利用できない機能やサービスをデプロイする。
- 内部ポリシーやガバナンスの要件を満たす。
- 会社の合併と買収に合わせた調整を行う
- 容量計画の要件を満たす。
この記事で説明する手順の概要を次に示します。
- Azure Storage アカウントとそれに関連付けられているシステム トピックを含むリソース グループを Resource Manager テンプレートにエクスポートします。 また、システム トピックのみのテンプレートをエクスポートすることもできます。 この方法を使用する場合は、システム トピックを移動する前に、Azure イベント ソース (この例では Azure Storage アカウント) を他のリージョンに移動することを忘れないでください。 その後、エクスポートされたシステム トピックのテンプレートで、ターゲット リージョンのストレージ アカウントの外部 ID を更新します。
- テンプレートを変更して、システム トピックをサブスクライブする webhook を指すように
endpointUrl
プロパティを追加します。 システム トピックをエクスポートすると、そのサブスクリプション (この場合は webhook) もテンプレートにエクスポートされますが、endpointUrl
プロパティは含められません。 そのため、トピックをサブスクライブするエンドポイントを指すように更新する必要があります。 また、location
プロパティの値を新しい場所またはリージョンに更新します。 その他の種類のイベント ハンドラーの場合は、場所のみを更新する必要があります。 - テンプレートを使用して、リソースをターゲット リージョンにデプロイします。 ターゲット リージョンに作成されるストレージ アカウントとシステム トピックの名前を指定します。
- 展開を確認する。 ターゲット リージョンの BLOB ストレージにファイルをアップロードするときに、webhook が呼び出されることを確認します。
- 移動を完了するには、ソース リージョンからリソース (イベント ソースとシステム トピック) を削除します。
前提条件
- 「Quickstart:Azure portal で Blob Storage のイベントを Web エンドポイントにルーティングする」をソース リージョンで実行します。 この手順は省略可能です。 この記事の手順をテストする場合に実行します。 ストレージ アカウントは、App Service および App Service プランとは別のリソース グループに保持します。
- ターゲット リージョンで Event Grid サービスを使用できることを確認します。 「リージョン別の利用可能な製品」を参照してください。
準備
開始するには、システム イベントのソース (Azure Storage アカウント) とそれに関連付けられているシステム トピックが含まれているリソース グループの Resource Manager テンプレートをエクスポートします。
Azure portal にサインインします。
左側のメニューの [リソース グループ] を選択します。 次に、システム トピックが作成されたイベント ソースが含まれているリソース グループを選択します。 次の例では、Azure Storage アカウントです。 リソース グループには、ストレージ アカウントとそれに関連付けられているシステム トピックが含まれています。
左側のメニューで、 [設定] にある [テンプレートのエクスポート] を選択し、ツール バーの [ダウンロード] を選択します。
ポータルからダウンロードした .zip ファイルを見つけて、選択したフォルダーにそのファイルを解凍します。 この ZIP ファイルには、テンプレートとパラメーターの JSON ファイルが含まれています。
任意のエディターで template.json を開きます。
Webhook の URL は、テンプレートにエクスポートされません。 そのため、次の手順を実行します。
テンプレート ファイルで、WebHook を探します。
Properties セクションで、最後の行の末尾にコンマ (
,
) 文字を追加します。 この例では"preferredBatchSizeInKilobytes": 64
です。次の例に示すように、
endpointUrl
プロパティを追加し、値を Webhook の URL に設定します。"destination": { "properties": { "maxEventsPerBatch": 1, "preferredBatchSizeInKilobytes": 64, "endpointUrl": "https://mysite.azurewebsites.net/api/updates" }, "endpointType": "WebHook" }
Note
その他の種類のイベント ハンドラーの場合は、すべてのプロパティがテンプレートにエクスポートされます。 次の手順で示すように、
location
プロパティをターゲット リージョンに更新する必要があるだけです。
ストレージ アカウント リソースの
location
をターゲット リージョンまたは場所に更新します。 場所コードを取得するには、Azure の場所に関するページを参照してください。 リージョンのコードは、スペースを含まないリージョン名です (例えば、West US
はwestus
と同じです)。"type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "name": "[parameters('storageAccounts_spegridstorage080420_name')]", "location": "westus",
この手順を繰り返して、テンプレートのシステム トピック リソースの
location
を更新します。"type": "Microsoft.EventGrid/systemTopics", "apiVersion": "2020-04-01-preview", "name": "[parameters('systemTopics_spegridsystopic080420_name')]", "location": "westus",
テンプレートを [保存] します。
Redeploy
テンプレートをデプロイして、ターゲット リージョンにストレージ アカウントとストレージ アカウントのシステム トピックを作成します。
- Azure Portal で、 [リソースの作成] を選択します。
- [Marketplace を検索] で「template deployment」と入力し、Enter キーを押します。
- [テンプレートのデプロイ] を選択します。
- [作成] を選択します
- [Build your own template in the editor] (エディターで独自のテンプレートをビルド) を選択します。
- [ファイルの読み込み] を選択し、手順に従って、前のセクションでダウンロードした template.json ファイルを読み込みます。
- [保存] を選択してテンプレートを保存します。
- [カスタム デプロイ] ページで、次の手順を行います。
Azure サブスクリプションを選択します。
ターゲット リージョンの既存のリソース グループを選択するか、新しく作成します。
[リージョン] で、ターゲット リージョンを選択します。 既存のリソース グループを選択した場合、この設定は読み取り専用になります。
システムのトピック名で、ストレージ アカウントに関連付けるシステム トピックの名前を入力します。
ストレージ アカウント名 で、ターゲット リージョンに作成するストレージ アカウントの名前を入力します。
ページ下部にある [確認と作成] を選択します。
[確認および作成] ページで、設定を確認し、 [作成] を選択します。
確認
- デプロイが成功したら、 [リソース グループに移動] を選択します。
- [リソース グループ] ページで、イベント ソース (この例では Azure Storage アカウント) とシステム トピックが作成されていることを確認します。
- Azure BLOB ストレージ内のコンテナーにファイルをアップロードし、webhook がイベントを受信したことを確認します。 詳細については、「エンドポイントへのイベントの送信」を参照してください。
破棄またはクリーンアップ
移動を完了するには、ソース リージョンでストレージ アカウントとそれに関連付けられているシステム トピックを含むリソース グループを削除します。
最初からやり直す場合は、ターゲット リージョンのリソース グループを削除し、この記事の「準備」と「再作成する」のセクションの手順を繰り返します。
Azure portal を使用してリソース グループ (ソースまたはターゲット) を削除するには、次の手順を実行します。
Azure portal の上部にある検索ウィンドウで「リソース グループ」と入力し、検索結果から [リソース グループ] を選択します。
削除するリソース グループを選択し、ツール バーの [削除] を選択します。
[確認] ページで、リソース グループの名前を入力し、 [削除] を選択します。
関連するコンテンツ
- リージョン間でカスタム トピックを再配置する。
- リージョン間でドメインを再配置する。
- 「リソースを新しいリソース グループまたはサブスクリプションに移動する」という記事を参照してください。