View a markdown version of this page

AWS 实现持续现代化转型 - AWS 转换

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS 实现持续现代化转型

什么是 AWS 实现持续现代化转型?

AWS Transform 持续现代化为您的源代码存储库提供分析和补救措施。您可以连接 GitHub 组织、 GitLab 群组、Bitbucket 工作空间和本地存储库,然后运行自动分析,以确定整个代码库中的技术债务、安全漏洞、现代化机会和代理准备情况。

所有分析和补救都 AWS 账户 使用您的凭证在您中运行。您的源代码仍在您的控制之下。

注意

我们建议从 Kiro Power 或代理插件开始。代理技能负责协调持续现代化的设置、入职和持续使用,包括基础架构配置、源配置、分析执行、调查结果分类和补救。有关安装说明,请参阅开发人员工具

关键功能

AWS Transform 持续现代化提供以下功能:

  • 技术债务分析 — 扫描存储库中是否存在过时的依赖关系、安全漏洞、代码质量问题和现代化机会。对软件包清单进行快速元数据扫描或进行全面的代码级分析。使用为您的环境量身定制的转换定义定义自定义分析标准。

  • 自主修复 — 大规模生成经过验证的拉取请求。可以使用其关联的转换定义自动修复每个发现。补救措施会创建分支并 PRs/MRs 自动在 GitHub GitLab、和 Bitbucket 上打开。

  • 报告 -生成 HTML 报告,按严重性、存储库和分析类型显示调查结果。跟踪修复进度并随时间推移寻找解决方案。

  • 持续监控 — 安排定期分析,持续监控您的投资组合中是否存在新问题。在没有设置的 AWS Transform-managed 基础设施上运行它们,或者使用亚马逊 EventBridge 调度器在预置的 Amazon EC2 或批处理堆栈上运行它们。配置每日、每周或每月的节奏。

分析类型

AWS Transform 持续现代化支持以下分析类型,以满足您的现代化需求。

Type 说明
rapid-techdebt-analysis 对包清单(pom.xml、、requirements.txt)进行仅限元数据的快速扫描package.json,以识别过时的版本和过时的依赖关系。不分析源代码。
tech-debt-comprehensive 使用 T AWS ransform 代理进行深入的代码级技术债务分析。检查源代码以确定债务模式、代码质量问题、架构问题和改进机会。
security 使用安全代理进行安全漏洞和 CVE 检测。 AWS 扫描源代码和依赖项以查找已知漏洞、不安全的编码模式和可利用的漏洞。需要一次性基础架构设置。
agentic-readiness 人工智能和代理集成准备情况评估。对五个类别的 56 个标准进行评分:基础设施和平台、应用程序架构、数据基础以及运营与可观测性。 Identity/Security/Governance
modernization-readiness 云现代化机会评估。评估基础架构、应用程序、数据、安全和运营方面的准备情况。确定容器化、无服务器迁移和平台升级的候选对象。
custom 将任何变换定义 (TD) 作为分析运行。使用此类型定义自己的分析标准或运行内置类型未涵盖的 AWS 托管变换。

了解关键概念

来源

消息来源告诉持续现代化您的存储库在哪里。支持的源类型:

  • GitHub— 拥有个人访问令牌的组织(经典)

  • GitLab— 群组或用户,包括自托管实例

  • Bitbucket — 工作空间(云)或项目(数据中心)

  • 本地 — 包含 git 存储库的父目录

Repositories

存储库由扫描源发现。发现后,您可以按来源、标签或其他条件进行筛选;为组织应用标签(团队、优先级、迁移浪潮);将特定的存储库作为目标进行分析或修复。

分析

分析是使用特定分析类型对一个或多个存储库进行扫描。每项分析都会产生发现结果,以识别代码中的问题。您可以按需运行分析,也可以安排分析自动运行。分析类型包括快速技术债务分析、技术债务综合分析、安全、机构准备情况、现代化准备情况和定制。每项分析都会跟踪其状态(待处理、正在运行、完成、已取消或失败)及其扫描的存储库。

结果

调查结果是分析的结果。每项发现都包括严重性(高、中或低)、状态(打开、已取消或已过时)以及可以对其进行补救的修复转换(如果可自动修复)。新发现一开始是开放的。用户可以有理由驳回调查结果。 Re-analysis 自动将已解决的发现标记为过时。

补救措施

补救措施应用转换定义来修复结果。三种模式:基于查找结果(每个查找结果使用自己的修复转换)、TD 覆盖(覆盖指定发现的转换定义)和直接 TD(针对没有发现的存储库运行转换)。输出取决于来源提供商(GitHub PR、 GitLab MR、Bitbucket PR 或本地分支机构)。

变换定义

转换定义包含执行特定代码转换所需的指令和知识。持续现代化使用转换定义进行自定义分析 (--type custom --transformation-name name) 和修复 (--transformation-name name)。使用列出可用的转换定义atx custom def list

操作方法 AWS 改造持续现代化工作

AWS Transform 持续现代化通常用于需要持续分析和修复多个代码库的大型项目。团队通常遵循以下工作流程:

  1. 连接来源 — 添加 GitHub 组织、 GitLab群组、Bitbucket 工作空间或本地目录作为来源。提供具有适当范围的身份验证令牌。

  2. 发现存储库 -运行发现扫描以枚举源中的所有存储库。使用标签按团队、优先级或迁移浪潮来组织仓库。

  3. 运行分析 — 对您的投资组合进行分析。选择快速扫描以快速获得结果,或选择全面分析以获得详细结果。安全分析需要一次性基础架构设置。

  4. 对调查结果进行分类 -按严重性、存储库或分析类型查看调查结果。以有据可查的理由驳回误报。 Re-run分析将已解决的问题标记为过时。

  5. 修复 -创建补救措施以修复调查结果。持续现代化会自动创建分支并使用修复程序打开 pull/merge 请求。跟踪补救状态和重试失败次数。

  6. 设置持续分析 — 使用使用 Amazon EventBridge Scheduler 的atx ct schedule命令安排定期分析。配置分析节奏(每天、每周或每月),持续监控您的投资组合中是否存在新问题。与自动修复相结合,可随着时间的推移保持代码的运行状况。

计算选项

持续现代化支持多种计算选项,用于运行分析和修复。分析可以在本地、在您的 AWS 账户 (Amazon EC2 或 B AWS atch)中预置和管理的 AWS Transform-managed 基础设施上运行,也可以在无需设置的基础设施上运行。Kiro Power 和代理插件中的代理技能可帮助您设置每个选项。

注意

无论采用哪种计算选项,您都可以 AWS 账户 使用凭证创建和拥有自己的所有资源,并且源代码仍在您的控制之下。运行分析和补救的基础架构要么由客户管理(您在账户中预置的堆栈) AWS Transform-managed,要么由客户管理,无需预置 AWS 任何资源。

本地(默认)

默认情况下,分析在本地计算机上运行。此选项不需要额外的基础架构。服务器在本地运行并使用本地计算资源执行分析。非常适合试用该工具、小型存储库或个人使用。

AWS Transform-managed (无需提供基础设施)

无需预置或管理堆栈即可对 AWS Transform-managed 基础架构进行分析。使用--mode aws-managed,您可以将分析提交给 T AWS ransform,Transform 将在 AWS运营的基础设施上运行分析。没有 Amazon EC2 实例,没有 AWS 批量堆栈,也没有 VPC 或子网可供配置。没有什么可以预置或拆除的——提交就是跑步了。当你不想管理任何基础设施时,这是远程运行的最快方式。

此选项要求源代码托管在支持的 SCM 提供商(GitHubGitLab、或Bitbucket)上。 AWS Transform-managed 基础架构不支持本地来源,因为它无法访问您计算机上的存储库。您可以使用该--region选项选择工作负载运行的 AWS 区域。

AWS Transform-managed 基础设施仅运行分析。要进行补救或运行自定义转换定义 (--type custom),请使用 AWS Batch 或 Amazon EC2。

要在 AWS Transform-managed 基础架构上运行,请使用atx ct remote analysis --mode aws-managed命令(参见远程执行),或者安装 Kiro Power 或代理插件(参见开发人员工具),然后询问代理:“在 AWS 没有基础架构的情况下运行我的分析” 。对 AWS Transform-managed 基础架构的反复分析需要执行角色(参见安排定期分析)。

您还可以从 T AWS ransform Web 应用程序的持续现代化页面开始对 AWS Transform-managed 基础设施进行分析(参见AWS 改造 Web 应用程序)。

AWS 批处理(Fargate)(推荐)

对于大多数投资组合,你可以使用Fargate进行 AWS 批量分析,这是推荐的计算选项。每项分析都作为独立作业在自己的容器中运行,使用无服务器计算,因此无需管理持久的基础架构,并且任务可以横向扩展,以便对多个来源或分析类型进行并行分析。

Provisioning 可部署所需的基础架构,包括:

  • AWS 批处理任务队列和计算环境

  • 使用持续现代化容器镜像定义任务

  • 用于执行批处理任务的 IAM 角色

  • 用于提交任务的 Lambda 函数

配置基础架构需要管理员权限。要使用最低权限在已配置的批处理堆栈上运行分析和修复,请附加托管策略。 AWS AWSTransformInfrastructureExecutorAccessBatch

要设置批量执行,请直接使用atx ct remote命令(参见远程执行),或者安装 Kiro Power 或代理插件(参见开发人员工具),然后询问代理:“在 Fargate 上运行我的分析” “设置批处理执行以实现持续现代化”。代理部署堆栈,将您的源凭据存储在 Secrets Manager 中,并将分析任务提交给 AWS Batch。

Amazon EC2

在您的永久性 Amazon EC2 实例上运行分析 AWS 账户。此选项可将计算从本地计算机上卸下,支持更大规模的分析,并支持定期分析。该实例在两次提交之间保持运行状态。

配置部署的堆 AWS CloudFormation 栈包括:

  • 带有 Docker 和持续现代化容器的亚马逊 EC2 实例(亚马逊 Linux 2023)

  • 具有 T AWS ransform、Amazon S3、 AWS KMS、密钥管理器和安全代理权限的 IAM 角色

  • AmazonSSMManagedInstanceCore通过 SSM 进行 shell 访问(不需要 SSH 密钥对或入站端口)

  • 没有入站规则的安全组

配置基础设施需要管理员权限才能进行 Amazon EC2 生命周期管理、 AWS CloudFormation 堆栈操作、IAM 角色创建、Amazon S3 存储桶操作、密钥管理器密钥管理和 SSM 命令。要使用最低权限对已配置的 Amazon EC2 堆栈进行分析和修复,请附加托管策略。 AWS AWSTransformInfrastructureExecutorAccessEC2

要设置 Amazon EC2 执行,请直接使用atx ct remote命令(参见远程执行),或者安装 Kiro Power 或代理插件(参见开发人员工具)并询问代理:“设置 EC2 实例以进行持续的现代化分析” 。该代理预置基础架构,验证容器运行状况良好,并通过 SSM 提交您的分析,不需要 SSH。

安全代理设置

security分析类型使用 AWS 安全客户端服务进行漏洞和 CVE 检测。与其他分析类型不同,它需要在您的中进行一次性基础架构设置 AWS 账户。

注意

security分析类型不适用于以下区域:加拿大(中部)(ca-central-1)、欧洲(伦敦)(eu-west-2)和亚太地区(首尔)(ap-northeast-2)。其他分析类型不受影响。

安装命令提供的堆 AWS CloudFormation 栈包括:

  • 用于上传源代码的 Amazon S3 存储桶

  • IAM 角色由以下人员担任 securityagent.amazonaws.com

  • 安全代理角色的管理策略

要在设置后以最低权限运行安全分析,请将 AWS 托管策略附加AWSTransformSecurityAgentExecutorAccess到您的 IAM 用户或角色。

您的 IAM 用户或角色必须具有以下额外权限才能运行设置:

  • cloudformation:CreateStack, cloudformation:UpdateStack, cloudformation:DescribeStacks

  • iam:CreateRole, iam:PutRolePolicy, iam:AttachRolePolicy, iam:CreatePolicy

  • s3:CreateBucket, s3:PutBucketEncryption, s3:PutBucketPublicAccessBlock

使用以下命令管理安全代理基础架构:

# Provision the security agent infrastructure atx ct setup security-agent # Check the status atx ct setup security-agent --status # Delete the infrastructure atx ct setup security-agent --delete

安装完成后,您可以像运行其他分析类型一样运行安全分析。