本文介绍适用于 GitHub Copilot 现代化 Java 开发人员的预定义任务。
预定义的任务捕获使用 Azure 服务的行业最佳做法。 目前,GitHub Copilot 现代化提供了涵盖常见迁移方案的预定义任务。 这些任务涉及以下主题,等等:
- 机密管理
- 消息队列集成
- Monitoring
- 标识管理
Note
此列表根据客户反馈和不断变化的云需求增长。
任务列表
GitHub Copilot 现代化目前支持以下预定义任务:
RabbitMQ 到 Azure 服务总线
这些任务可将使用 RabbitMQ 的 Java 应用程序(通过 Spring 高级消息队列协议(AMQP)、Spring Java 消息服务(JMS)或基于 AMQP 的 Java EE/Jakarta EE)迁移为改用托管服务 Azure 服务总线,同时保留消息处理模式和语义,并默认启用安全身份验证。
用于将数据库迁移到 Azure 的托管标识
Azure 数据库产品/服务 - Azure SQL Server、Azure Database for MySQL、Azure Database for PostgreSQL、Azure Cosmos DB for Cassandra API 和 Azure Cosmos DB for MongoDB - 支持使用托管标识进行安全登录。 将应用程序从本地数据库迁移到 Azure 托管云数据库时,此任务有助于为数据库的托管身份验证准备代码库。
Azure 上用于迁移凭据的托管标识
使用连接字符串进行身份验证会导致安全漏洞和维护开销。 此任务将 Java 应用程序转换为将 Azure 的托管标识身份验证用于 Azure 事件中心和 Azure 服务总线等消息传递服务。 与Microsoft标识客户端库集成时,代码不再需要在配置文件中存储敏感连接字符串或共享访问签名。
Amazon Web Services (AWS) S3 转换至 Azure 存储 Blob
将服务从 AWS 迁移到 Azure 时,可以从 AWS S3 过渡到 Azure 存储 Blob。 此任务有助于将与 AWS S3 交互的代码逻辑转换为使用 Azure 存储 Blob 服务的代码逻辑,同时保持相同的语义。
此迁移知识是与 Azure 存储 团队协作开发的,借鉴了他们在Blob 存储 API、身份验证模式和特定于平台的行为方面的深入专业知识,以确保指南反映生产级最佳做法。
登录到本地文件
默认情况下,Azure 托管服务与 Azure Monitor 集成,将日志输出收集到控制台,并使你能够查询和监视它们。 同时,不建议登录到云环境中的文件,因为它需要额外的日志轮换和传输。 此任务可帮助你将应用程序中的基于文件的日志记录转换为基于控制台的日志记录,使其可以与 Azure Monitor 集成。
本地文件 I/O 到 Azure 存储文件共享挂载
Azure 托管服务在预配、缩放、故障转移等方面提供灵活性和更多功能。 同时,给定应用程序运行时的文件系统是暂时性的。 如果应用程序从本地文件读取或写入文件,则此任务可帮助你识别此类情况并将其转换为统一的装载路径访问。 为此,可以将 Azure 存储文件共享装载到指定路径,使应用程序能够在不同副本之间共享和保留数据,而不必担心重定位、故障转移或类似问题。
Java Mail 到 Azure 通信服务
使用简单邮件传输协议 (SMTP) 依赖项迁移应用程序可能很困难,因为并非所有 Azure 环境都支持端口 25 上的传出请求。 此任务有助于转换通过 SMTP 发送邮件以使用与 Azure 托管环境完全兼容的 Azure 通信服务的应用程序。
Azure 密钥保管库 的机密和证书管理
此任务有助于将敏感安全资产迁移到 Azure 密钥保管库。 它支持代码库中的硬编码机密和 Java KeyStore 中管理的本地 TLS/mTLS 证书。 对于机密,它标识可疑的机密文本,并将其转换为从 Azure 密钥保管库 检索数据的逻辑。 对于证书,它将应用程序从在本地管理证书过渡到使用 Azure 密钥保管库 的 Java 加密体系结构(JCA)提供程序,同时保持相同的功能和安全态势。
Azure 密钥保管库 的加密操作
在本地执行加密操作的 Java 应用程序会在集中式、可审计服务之外管理密钥。 此任务将本地加密逻辑迁移到Azure 密钥保管库,以便对永不离开保管库的密钥运行签名、验证、加密和解密操作,同时保留应用程序的现有行为。
用于Microsoft Entra ID 身份验证的用户身份验证
Java 应用程序通常使用不容易迁移到 Azure 的基于 LDAP 的身份验证解决方案。 此任务可帮助你将本地用户身份验证机制转换为使用 Microsoft Entra ID 进行身份验证的身份验证机制。
数据库产品到 Azure 数据库产品/服务
Java在本地数据库上运行的应用程序(包括 Oracle、IBM Db2、Informix 和 Sybase Adaptive Server Enterprise (ASE))可以迁移到Azure Database for PostgreSQL或Azure SQL 数据库,以获取完全托管的云体验。 这些任务更新应用程序,使其使用无密码Microsoft Entra ID身份验证连接到目标Azure数据库,并使用目标方言协调特定于源的 SQL 语法、数据类型和函数,因此应用程序在Azure上保持相同的行为。
AWS 机密管理器转换至 Azure 密钥保管库
从 AWS 机密管理器迁移到 Azure 密钥保管库 需要重新配置应用程序如何处理敏感信息。 此任务转换代码中机密管理的各个方面(从创建和检索到更新和删除)并使用 Azure 密钥保管库 的综合安全功能和身份验证模型。
ActiveMQ 到 Azure 服务总线
可以在 Apache ActiveMQ 上构建的应用程序现代化,以使用 Azure 的托管消息传送服务。 此任务将 ActiveMQ 消息生成者、使用者、连接工厂和队列/主题交互转换为其 Azure 服务总线等效项,实现云环境中可靠性和身份验证的最佳做法。
Amazon Web Services (AWS) 简单队列服务 (SQS) 转换至 Azure 服务总线
从 AWS SQS 迁移到 Azure 服务总线涉及重新实施队列操作和消息处理模式。 此任务将特定于 SQS 的代码结构转换为其 Azure 服务总线的对应项,在保留关键的消息传递语义(如至少一次投递、消息分批处理和可见性超时行为)的同时,引入 Azure 增强的安全功能。
Ant/Eclipse 项目到 Maven 项目
Java使用 Apache Ant 或作为 Eclipse IDE 项目生成的项目依赖于命令性脚本或特定于 IDE 的元数据,这会使依赖项管理复杂化,并使自动化的无外设生成变得困难。 这些任务会将你的 Ant 或 Eclipse 项目转换为 Maven 项目,使其能够在任何环境中一致地构建,依赖项通过 Maven 解析,项目布局符合 Maven 约定,同时保持源代码不变。
用于Azure托管 Redis 的缓存解决方案
应用程序通常依赖于各种缓存解决方案(从内存中库到分布式系统(如 Infinispan、SwarmCache 和 Memcached),这些解决方案缺乏无缝Azure集成和集中式可伸缩性或安全性。 此任务通过将这些实现迁移到Azure托管 Redis(或即将停用的 Azure Cache for Redis),实现云原生可伸缩性、统一管理以及通过无密码Microsoft Entra ID身份验证改进安全性,同时保留现有缓存行为,从而实现缓存层的现代化。