Azure Event Grid システム トピックを別のリージョンに再配置する

この記事では、Event Grid システム トピックを別のリージョンに再配置する際に推奨されるアプローチ、ガイドライン、およびプラクティスについて説明します。

既存の Azure リソースを別のリージョンに移動するシナリオには、さまざまなケースがあります。 管理容易性のため、ガバナンス上の理由、会社の合併や買収による場合などです。

この記事で説明する手順の概要を次に示します。

  • Azure Storage アカウントとそれに関連付けられているシステム トピックを含むリソース グループを Resource Manager テンプレートにエクスポートします。 また、システム トピックのみのテンプレートをエクスポートすることもできます。 この方法を使用する場合は、システム トピックを移動する前に、Azure イベント ソース (この例では Azure Storage アカウント) を他のリージョンに移動することを忘れないでください。 その後、エクスポートされたシステム トピックのテンプレートで、ターゲット リージョンのストレージ アカウントの外部 ID を更新します。
  • テンプレートを変更して、システム トピックをサブスクライブする webhook を指すように endpointUrl プロパティを追加します。 システム トピックをエクスポートすると、そのサブスクリプション (この場合は webhook) もテンプレートにエクスポートされますが、endpointUrl プロパティは含められません。 そのため、トピックをサブスクライブするエンドポイントを指すように更新する必要があります。 また、location プロパティの値を新しい場所またはリージョンに更新します。 その他の種類のイベント ハンドラーの場合は、場所のみを更新する必要があります。
  • テンプレートを使用して、リソースをターゲット リージョンにデプロイします。 ターゲット リージョンに作成されるストレージ アカウントとシステム トピックの名前を指定します。
  • 展開を確認する。 ターゲット リージョンの BLOB ストレージにファイルをアップロードするときに、webhook が呼び出されることを確認します。
  • 移動を完了するには、ソース リージョンからリソース (イベント ソースとシステム トピック) を削除します。

前提条件

準備

開始するには、システム イベントのソース (Azure Storage アカウント) とそれに関連付けられているシステム トピックが含まれているリソース グループの Resource Manager テンプレートをエクスポートします。

  1. Azure portal にサインインします。

  2. 左側のメニューの [リソース グループ] を選択します。 次に、システム トピックが作成されたイベント ソースが含まれているリソース グループを選択します。 次の例では、Azure Storage アカウントです。 リソース グループには、ストレージ アカウントとそれに関連付けられているシステム トピックが含まれています。

    リソース グループ ページのスクリーンショット。

  3. 左側のメニューで、 [設定] にある [テンプレートのエクスポート] を選択し、ツール バーの [ダウンロード] を選択します。

    ストレージ アカウントのスクリーンショット - テンプレートのエクスポート ページ。

  4. ポータルからダウンロードした .zip ファイルを見つけて、選択したフォルダーにそのファイルを解凍します。 この ZIP ファイルには、テンプレートとパラメーターの JSON ファイルが含まれています。

  5. 任意のエディターで template.json を開きます。

  6. Webhook の URL は、テンプレートにエクスポートされません。 そのため、次の手順を実行します。

    1. テンプレート ファイルで、WebHook を探します。

    2. Properties セクションで、最後の行の末尾にコンマ (,) 文字を追加します。 この例では "preferredBatchSizeInKilobytes": 64 です。

    3. 次の例に示すように、endpointUrl プロパティを追加し、値を Webhook の URL に設定します。

      "destination": {
          "properties": {
              "maxEventsPerBatch": 1,
              "preferredBatchSizeInKilobytes": 64,
              "endpointUrl": "https://mysite.azurewebsites.net/api/updates"
          },
          "endpointType": "WebHook"
      }
      

      Note

      その他の種類のイベント ハンドラーの場合は、すべてのプロパティがテンプレートにエクスポートされます。 次の手順で示すように、location プロパティをターゲット リージョンに更新する必要があるだけです。

  7. ストレージ アカウント リソースの location をターゲット リージョンまたは場所に更新します。 場所コードを取得するには、Azure の場所に関するページを参照してください。 リージョンのコードは、スペースを含まないリージョン名です (例えば、West USwestus と同じです)。

    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccounts_spegridstorage080420_name')]",
    "location": "westus",
    
  8. この手順を繰り返して、テンプレートのシステム トピック リソースの location を更新します。

    "type": "Microsoft.EventGrid/systemTopics",
    "apiVersion": "2020-04-01-preview",
    "name": "[parameters('systemTopics_spegridsystopic080420_name')]",
    "location": "westus",
    
  9. テンプレートを [保存] します。

Redeploy

テンプレートをデプロイして、ターゲット リージョンにストレージ アカウントとストレージ アカウントのシステム トピックを作成します。

  1. Azure Portal で、 [リソースの作成] を選択します。
  2. [Marketplace を検索] で「template deployment」と入力し、Enter キーを押します。
  3. [テンプレートのデプロイ] を選択します。
  4. [作成] を選択します
  5. [Build your own template in the editor] (エディターで独自のテンプレートをビルド) を選択します。
  6. [ファイルの読み込み] を選択し、手順に従って、前のセクションでダウンロードした template.json ファイルを読み込みます。
  7. [保存] を選択してテンプレートを保存します。
  8. [カスタム デプロイ] ページで、次の手順を行います。
    1. Azure サブスクリプションを選択します。

    2. ターゲット リージョンの既存のリソース グループを選択するか、新しく作成します。

    3. [リージョン] で、ターゲット リージョンを選択します。 既存のリソース グループを選択した場合、この設定は読み取り専用になります。

    4. システムのトピック名で、ストレージ アカウントに関連付けるシステム トピックの名前を入力します。

    5. ストレージ アカウント名 で、ターゲット リージョンに作成するストレージ アカウントの名前を入力します。

      Resource Manager テンプレートをデプロイするページのスクリーンショット。

    6. ページ下部にある [確認と作成] を選択します。

    7. [確認および作成] ページで、設定を確認し、 [作成] を選択します。

確認

  1. デプロイが成功したら、 [リソース グループに移動] を選択します。
  2. [リソース グループ] ページで、イベント ソース (この例では Azure Storage アカウント) とシステム トピックが作成されていることを確認します。
  3. Azure BLOB ストレージ内のコンテナーにファイルをアップロードし、webhook がイベントを受信したことを確認します。 詳細については、「エンドポイントへのイベントの送信」を参照してください。

破棄またはクリーンアップ

移動を完了するには、ソース リージョンでストレージ アカウントとそれに関連付けられているシステム トピックを含むリソース グループを削除します。

最初からやり直す場合は、ターゲット リージョンのリソース グループを削除し、この記事の「準備」と「再作成する」のセクションの手順を繰り返します。

Azure portal を使用してリソース グループ (ソースまたはターゲット) を削除するには、次の手順を実行します。

  1. Azure portal の上部にある検索ウィンドウで「リソース グループ」と入力し、検索結果から [リソース グループ] を選択します。

  2. 削除するリソース グループを選択し、ツール バーの [削除] を選択します。

    リソース グループ削除のスクリーンショット。

  3. [確認] ページで、リソース グループの名前を入力し、 [削除] を選択します。