在 Azure Spring Apps 中远程调试应用

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

此功能说明如何在 Azure Spring Apps 中启用应用程序的远程调试。

先决条件

  • 带有 Azure Spring Apps 扩展的 Azure CLI。 使用以下命令删除以前的版本,并安装最新的扩展。 如果以前安装了 spring-cloud 扩展,请卸载它以避免配置和版本不匹配。

    az extension remove --name spring
    az extension add --name spring
    az extension remove --name spring-cloud
    
  • Azure Spring Apps 中部署的应用程序。

启用或禁用远程调试

出于安全原因,Azure Spring Apps 默认会禁用远程调试。 根据公司的策略,你可以自行为应用启用远程调试,或者让管理员为你启用远程调试。 可以使用 Azure CLI、Azure 门户或 VS Code 扩展启用或禁用远程调试。

使用以下步骤通过 Azure 门户为应用程序启用远程调试:

  1. 导航到应用程序页。

  2. 在左侧导航窗格中的“设置”下,选择“远程调试”。

  3. 在“远程调试”页上,启用远程调试并指定调试端口。

    Azure 门户的屏幕截图,其中显示了“远程调试”页,并选择了“远程调试”和“调试端口”选项。

分配 Azure 角色

若要远程调试应用实例,必须授予角色 Azure Spring Apps Remote Debugging Role,该角色拥有 Microsoft.AppPlatform/Spring/apps/deployments/remotedebugging/action 数据操作权限。

可以使用 Azure 门户或 Azure CLI 分配 Azure 角色。

按照以下步骤使用 Azure 门户分配 Azure 角色。

  1. 打开 Azure 门户

  2. 打开你的 Azure Spring Apps 服务实例。

  3. 在导航窗格中,选择“访问控制(IAM)”。

  4. 在“访问控制(IAM)”页上选择“添加”,然后选择“添加角色分配”。

    Azure 门户中 Azure Spring Apps 实例的“访问控制(IAM)”页的屏幕截图,其中突出显示了“添加角色分配”选项。

  5. 在“添加角色分配”页上的“名称”列表中,搜索并选择“Azure Spring Apps 远程调试角色”,然后选择“下一步”。

    Azure 门户的屏幕截图,其中显示了“添加角色分配”页,并突出显示了“Azure Spring Apps 远程调试角色”名称。

  6. 选择“成员”,然后搜索并选择你的用户名。

  7. 选择“查看 + 分配”。

远程调试应用实例

可以使用 Azure Toolkit for IntelliJ 或 Azure Spring Apps for VS Code 扩展远程调试应用实例。

本部分介绍如何使用 Azure Toolkit for IntelliJ 远程调试应用实例。

先决条件

启用或禁用远程调试

使用以下步骤启用或禁用远程调试:

  1. 在 Azure 资源管理器中登录到你的 Azure 帐户。

  2. 选择一个应用实例,然后选择“启用远程调试”。

    IntelliJ 的屏幕截图,其中显示了“启用远程调试”菜单选项。

附加调试程序

使用以下步骤附加调试器。

  1. 选择一个应用实例,然后选择“附加调试器”。 IntelliJ 将连接到该应用实例并开始远程调试。

    IntelliJ 的屏幕截图,其中显示了“附加调试程序”菜单选项。

  2. Azure Toolkit for IntelliJ 会创建远程调试配置。 可以在“远程 JVM 调试”下找到该配置。配置用于远程调试的源代码的模块类路径。

    IntelliJ 的屏幕截图,其中显示了“运行/调试配置”页。

故障排除

本部分提供故障排除信息。

  • 如果无法附加调试器并收到类似于 java.net.SocketException, connection resetFailed to attach to remote debugger, ClosedConnectionException 的错误,请执行以下操作:

    • 检查 RBAC 角色,确保你有权远程调试应用实例。

    • 确保连接到有效实例。 刷新部署以获取最新实例。

      IntelliJ 项目资源管理器的屏幕截图,其中显示了“应用实例”节点的“刷新”菜单选项。

  • 如果成功附加了调试器但无法远程调试应用实例,请执行以下操作:

    • 确保 IDE 包含你要调试的源代码。
    • 确保调试配置包含正确的模块类路径。

限制

仅支持对 Java 应用程序进行远程调试。

计划 部署类型 支持
标准和基本计划 Jar
标准和基本计划 源代码 (Java)
标准和基本计划 自定义映像

提示

  • Java 远程调试是有风险的操作,因为它允许执行远程代码。 Azure Spring Apps 可帮助你保护客户端 IDE 与远程应用程序之间的通信。 但是,在完成后应禁用远程调试并删除 RBAC 角色。
  • 应将应用实例缩减为一个,以确保流量可以进入该实例。

后续步骤