共用方式為

将 Azure 事件网格系统主题重定位到另一个区域

本文介绍将 Azure 事件网格系统主题重定位到另一个区域的建议方法、指南和做法。

出于多种原因,你可能希望将现有 Azure 资源从一个区域移到另一个区域。 你可能想要:

  • 利用新的 Azure 区域。
  • 部署仅在特定区域可用的功能和服务。
  • 满足内部策略和治理要求。
  • 与公司合并和收购保持一致
  • 满足容量计划要求。

下面是本文介绍的概要步骤:

  • 将包含 Azure 存储帐户及其关联的系统主题的资源组导出到资源管理器模板。 你还可以仅导出系统主题的模板。 如果走此路线,请记得在移动系统主题之前将 Azure 事件源(在此示例中为 Azure 存储帐户)移动到另一个区域。 然后,在系统主题的已导出模板中,更新目标区域中的存储帐户的外部 ID。
  • 修改模板来添加 endpointUrl 属性,使之指向订阅系统主题的 Webhook。 导出系统主题时,其订阅(在本例中为 Webhook)也将导出到模板,但 endpointUrl 属性不包括在内。 因此,你需要将其更新为指向订阅该主题的终结点。 另外,还要更新 location 属性的值,使之指向新位置或区域。 对于其他类型的事件处理程序,你只需更新位置。
  • 使用模板将资源部署到目标区域。 你需要指定要在目标区域中创建的存储帐户和系统主题的名称。
  • 验证部署。 验证将文件上传到目标区域中的 blob 存储时是否调用 Webhook。
  • 若要完成移动,请从源区域中删除资源(事件源和系统主题)。

先决条件

准备

若要开始,请为包含系统事件源(Azure 存储帐户)及其关联的系统主题的资源组导出资源管理器模板。

  1. 登录到 Azure 门户

  2. 在左侧菜单中选择“资源组”。 然后,选择为其创建了系统主题的事件源所在的资源组。 在以下示例中,它是 Azure 存储帐户。 资源组包含存储帐户及其关联的系统主题。

    资源组页的屏幕截图。

  3. 在左侧菜单中的“设置”下选择“导出模板”,然后在工具栏上选择“下载” 。

    存储帐户 -“导出模板”页的屏幕截图。

  4. 找到从门户下载的 .zip 文件,并将该文件解压缩到所选的文件夹。 此 zip 文件包含模板和参数 JSON 文件。

  5. 在所选编辑器中打开 template.json。

  6. Webhook 的 URL 未导出到模板。 因此,请执行以下步骤:

    1. 在模板文件中,搜索“WebHook”。

    2. 在“属性”部分的最后一行的末尾添加一个逗号 () 字符。 在此示例中,它是 "preferredBatchSizeInKilobytes": 64

    3. 添加 endpointUrl 属性并将值设置为你的 Webhook URL,如以下示例所示。

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

      注释

      对于其他类型的事件处理程序,所有属性都会导出到模板。 你只需将 location 属性更新为目标区域,如下一步所示。

  7. 将存储帐户资源的 location 更新为目标区域或位置。 若要获取位置代码,请参阅 Azure 位置。 区域代码是不带空格的区域名称。

    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccounts_spegridstorage080420_name')]",
    "location": "chinanorth3",
    
  8. 重复此步骤以更新模板中系统主题资源的 location

    "type": "Microsoft.EventGrid/systemTopics",
    "apiVersion": "2020-04-01-preview",
    "name": "[parameters('systemTopics_spegridsystopic080420_name')]",
    "location": "westus",
    
  9. 保存模板。

重新部署

部署模板,在目标区域中为存储帐户创建一个存储帐户和系统主题。

  1. 在 Azure 门户中,选择“创建资源”。
  2. 搜索市场中键入模板部署,然后按ENTER
  3. 选择“模板部署”。
  4. 选择 创建
  5. 选择“在编辑器中生成自己的模板”。
  6. 选择“加载文件”,然后按说明加载在上一部分下载的 template.json 文件。
  7. 选择“保存”以保存该模板。
  8. 在“自定义部署”页上执行以下步骤。
    1. 选择 Azure 订阅。

    2. 选择目标区域中现有的资源组,或者创建一个资源组。

    3. 对于“区域”,请选择目标区域。 如果选择了现有资源组,则此设置为只读。

    4. 对于“系统主题名称”,请输入将与存储帐户关联的系统主题的名称。

    5. 对于“存储帐户名称”,请输入要在目标区域中创建的存储帐户的名称。

      “部署资源管理器模板”页的屏幕截图。

    6. 在页面底部选择查看 + 创建

    7. 在“查看 + 创建”页上,查看设置,然后选择“创建” 。

验证

  1. 部署成功后,选择“转到资源组”。
  2. 在“资源组”页面上,验证是否已创建事件源(在本例中为 Azure 存储帐户)和系统主题。
  3. 将文件上传到 Azure Blob 存储中的容器,并验证 Webhook 是否已收到该事件。 有关详细信息,请参阅将事件发送到终结点

弃置或清理

若要完成移动,请在源区域中删除包含存储帐户及其关联的系统主题的资源组。

如果需要重新开始,请在目标区域中删除源源组,然后重复本文的准备重新创建部分中的步骤。

若要使用 Azure 门户删除资源组(源或目标),请执行以下操作:

  1. 在 Azure 门户顶部的搜索窗口中,键入“资源组”,然后从搜索结果中选择“资源组” 。

  2. 选择要删除的资源组,然后从工具栏中选择“删除”。

    “删除资源组”的屏幕截图。

  3. 在确认页上,输入资源组的名称,然后选择“删除”。