本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Custom
什麼是 AWS 轉換自訂?
AWS 轉換自訂使用代理式 AI 來執行軟體、程式碼、程式庫和架構的大規模現代化,以減少技術負債。它處理各種案例,包括語言版本升級、API 和服務遷移、架構升級和遷移、程式碼重構,以及組織特定的轉換。
透過持續學習,代理程式會從每個執行和開發人員意見回饋中改進,提供高品質、可重複的轉換,而無需專業自動化專業知識。
關鍵功能
AWS 轉換自訂提供下列功能:
自然語言驅動的轉換定義 - 使用自然語言、文件和程式碼範例建立自訂轉換
轉換執行 - 在多個程式碼庫之間一致且可靠地套用轉換
持續學習 - 自動改善每次執行的轉換品質
AWS受管轉換 - 針對常見案例使用ready-to-use AWS、經過審核的轉換
轉換模式
AWS 轉換自訂支援各種轉換模式,以滿足您的現代化需求。根據所需變更的範圍和性質,每個模式都有不同的複雜性特性。
| 模式 | 說明 | 複雜性 | 範例 |
|---|---|---|---|
| API 和服務遷移 | 在 API 版本或同等服務之間遷移,同時維護功能 | 中 | AWS SDK v1→v2 (Java、Python、JavaScript)、Boto2→Boto3、JUnit 4→5、javax→jakarta |
| 語言版本升級 | 升級到相同程式設計語言的較新版本,採用新功能並取代已取代的功能 | 中低 | Java 8→17、Python 3.9→3.13、Node.js 12→22、TypeScript 版本升級 |
| 架構升級 | 升級到相同架構的較新版本,解決重大變更 | 中 | Spring Boot 2.x→3.x、React 17→18、角度升級、Django 升級 |
| 架構遷移 | 遷移至具有類似目的的完全不同架構 | 高 | Angular→React、Redux→Zustand、Vue.js→React |
| 程式庫和相依性升級 | 將第三方程式庫升級至較新版本,同時維護相同的語言和架構 | 中低 | Pandas 1.x→2.x、NumPy 升級、Hadoop/HBase/Hive 程式庫升級、Lodash 升級 |
| 程式碼重構和模式現代化 | 現代化程式碼模式並採用最佳實務,而不變更外部功能 | 中低 | Print→Logging 架構、字串串連→f-strings、類型提示採用、可觀測性檢測 |
| 指令碼和File-by-File轉譯 | 翻譯獨立指令碼或組態檔案,其中檔案大部分是獨立的 | 中低 | AWS CDK→Terraform、Terraform→CloudFormation、Excel→Python 筆記本、Bash→PowerShell |
| 架構遷移 | 以最少的程式碼變更在硬體架構或執行期環境之間遷移 | 中高 | x86→AWS Graviton (ARM)、內部部署→Lambda、傳統伺服器→容器 |
| Language-to-Language遷移 | 將程式碼庫從一種程式設計語言轉譯為另一種程式設計語言 | 非常高 | Java→Python、JavaScript→TypeScript、C→Rust、Python→Go |
| 自訂和組織特定的轉換 | 獨特的組織需求和專業現代化需求 | 各有不同 | 自訂內部程式庫遷移、組織特定的編碼標準、專屬架構遷移 |
注意
對於 COBOL/大型主機語言,請使用適用於大型主機的 AWS Transform。對於升級至 .NET Core 的 .NET Framework,請考慮 AWS Transform for Windows。對於 VMware 遷移到 AWS,請考慮 AWS Transform for VMware。
AWS 轉換自訂的運作方式
AWS 轉換自訂通常用於轉換多個程式碼庫或模組的大規模專案。團隊通常會遵循四階段工作流程:
定義轉換 - 提供自然語言提示、文件和程式碼範例給代理程式,以產生初始轉換定義。此定義可以透過聊天或直接編輯反覆改進。使用 AWS受管轉換時,可以略過此階段。
試行或Proof-of-Concept- 在範例程式碼庫上測試轉換,並根據結果進行精簡。此驗證階段有助於預估完整轉換的成本和工作量。在此階段中,持續學習可改善品質。
擴展執行 - 使用 CLI 設定自動大量執行,讓開發人員檢閱和驗證結果。使用 Web 應用程式監控進度,並追蹤跨多個儲存庫的轉換。
監控和檢閱 - 持續學習會自動改善轉換品質。檢閱從先前執行中擷取的課程,以確保它們符合品質標準,並封存任何沒有用的內容。
了解 的核心概念
本節說明使用 AWS 轉換自訂的重要概念。
轉換定義
轉換定義包含執行特定程式碼轉換所需的指示和知識。它以技能表示,並由以下項目組成:
SKILL.md(必要) - Markdown 中包含核心轉換邏輯和執行指示的 YAML 前綴 (name和description欄位) 的指示references/資料夾 (選用) - 在轉換執行期間視需要載入的文件scripts/資料夾 (選用) - 轉換在執行期間下載和執行的指令碼
AWS 需要執行、檢查或修改時,轉換 CLI 會自動將轉換定義下載到目前的目錄。
重要
發佈轉換時,目錄必須僅包含 SKILL.md,也可以包含 references/ 資料夾、 scripts/ 資料夾或兩者。不允許其他檔案或子目錄。
注意
CLI 2.0 版和更新版本使用技能格式。CLI 會自動處理現有的轉換定義。
轉換定義類別
轉換定義可以有一個類別,指出其使用方式:
analysis– 讀取程式碼並報告問題清單。持續現代化會將這些轉換定義執行為自訂分析。remediation– 變更程式碼。持續現代化使用這些轉換定義來修復問題清單。
使用 atx custom def publish或 --category選項設定 類別atx custom def save-draft:
atx custom def publish -n <transformation-name> --description "Description" --sd <directory> --category analysis atx custom def publish -n <transformation-name> --description "Description" --sd <directory> --category remediation atx custom def list # The Category column shows each transformation definition's category
AWS 轉換會使用 類別來決定可使用轉換定義的位置。
| 使用 | 允許轉換定義 |
|---|---|
自訂分析 (--type custom) |
您自己的轉換定義與 analysis類別 |
使用 修復 --transformation-name |
使用 remediation類別或 AWS 受管轉換的您自己的轉換定義 |
在提交自訂分析、排程或修復之前, AWS Transform 會檢查轉換定義的類別。
若要變更轉換定義的類別,請使用不同的--category值再次發佈。如果您在沒有 的情況下發佈新版本--category,則新版本會保留先前版本的類別。
如需如何執行analysis轉換定義,請參閱 自訂分析。
注意
類別與資源標籤不同。若要管理資源標籤,請參閱 標籤命令。
撰寫轉換定義以供分析
若要取得有用的調查結果,請撰寫轉換定義,以描述要尋找的內容、如何分類每個問題,以及不執行的動作。建議您參閱 中的下列章節SKILL.md。
| 區段 | 要包含的內容 |
|---|---|
| 簡介 | 一或兩個句子,說明分析所尋找的內容。陳述其為唯讀,且不得修改任何檔案。 |
| 進入條件 | 分析套用時,例如「儲存庫包含 pom.xml或 build.gradle 檔案」。 |
| Scope (範圍) | 要檢查的檔案和目錄,以及要略過的檔案和目錄,例如建置輸出和廠商相依性。 |
| 要報告的內容 | 視為問題的特定模式或條件。每個問題要求一個問題清單,其中包含檔案路徑和行號。 |
| 類別 | 一組小型、固定的類別值,以及哪些問題屬於每個類別。 |
| 嚴重性條件 | 造成問題 high、 medium或 的原因low。 |
| 結束條件 | 代理程式如何得知已完成:已檢查每個範圍內的檔案、每個調查結果都有檔案、類別和嚴重性,而且未變更任何檔案。同時說明在找不到任何內容時要報告的內容。 |
下列範例會尋找仍以 17 之前的 Java 版本為目標的 Java 專案。
--- name: java-version-detector description: Report where a repository still targets a Java version earlier than 17, in build files, Dockerfiles, toolchain files, and CI workflows. Analysis only - no code is modified. --- # Java Version Detector Find where the repository targets a Java version earlier than Java 17. This is a read-only analysis: report findings, and do not modify any files. ## Entry Criteria The repository contains a Java build file (`pom.xml`, `build.gradle`, `build.gradle.kts`, or `gradle.properties`), or a file that selects a JDK (`.java-version`, `.tool-versions`, `.sdkmanrc`, a `Dockerfile`, or a file under `.github/workflows/`). ## Scope - Inspect build files, toolchain files, Dockerfiles, and CI workflow files. - Skip build output (`build/`, `target/`) and vendored dependencies. ## What to Report Report one finding for each place that selects a Java version earlier than 17: 1. A compile target, such as `maven.compiler.source`, `maven.compiler.release`, `java.version`, `sourceCompatibility`, or a Gradle toolchain `languageVersion`. 2. A Dockerfile base image that ships a JDK or JRE earlier than 17, such as `openjdk:8` or `amazoncorretto:11`. 3. A CI job or toolchain file that selects a JDK earlier than 17. For each finding, include the file path, the line number, and the version you found. ## Categories - `outdated-compile-target` - a build file compiles for an old Java version - `outdated-runtime-image` - a Dockerfile uses an old JDK or JRE image - `outdated-ci-jdk` - a CI workflow or toolchain file selects an old JDK ## Severity Criteria - **high** - the project compiles for Java 8 or earlier - **medium** - the project compiles for Java 9 through 16 - **low** - only the runtime image or CI uses an old JDK, and the compile target is 17 or later ## Exit Criteria 1. Every in-scope file has been inspected. 2. Every finding has a file path, line number, category, and severity from the lists above. 3. No file in the repository has been modified. 4. If nothing is found, state that the repository targets Java 17 or later.
當此轉換定義針對其 pom.xml集的專案執行時<source>1.8</source>,它會在 outdated-compile-target類別中產生high嚴重性調查結果,並以 AWS/java-version-upgrade做為其修正。
撰寫分析轉換定義的提示
保持唯讀狀態。明確指出分析不得修改檔案。修正問題是修復的任務。
具體說明哪些項目會被視為問題。命名要尋找的檔案、設定和模式。模糊指示會產生不一致的問題清單。
每個問題要求一個問題清單。每個調查結果都應該指向特定的檔案和行,以便個別檢閱和修復。
在轉換定義中定義嚴重性和類別。代理程式會使用您的條件來分類每個問題清單。
保持範圍的重點。自訂分析只會報告其轉換定義描述的內容。若要尋找許多類型的問題,請撰寫個別的轉換定義或使用內建的分析類型。
說明在找不到任何內容時該怎麼做。沒有問題的儲存庫會正確產生零個問題清單。
在轉換定義中包含調查結果指示。如果您在執行分析
--configuration時透過-g或 傳遞組態, AWS Transform 會使用您的組態,而不是其預設指示。在 中保留「要報告的內容」區段SKILL.md可讓轉換定義以任何方式產生問題清單。
在發佈之前,在您已知包含問題的儲存庫上測試轉換定義。使用 將其儲存為草稿atx custom def save-draft,或使用 在本機執行 atx ct analysis run(請參閱 自訂分析)。
轉換登錄檔
轉換登錄檔是您 AWS 帳戶的集中式儲存庫,用於儲存和管理轉換定義。登錄檔中的轉換可以是:
使用 列出
atx custom def list在多個程式碼庫中執行
與您 AWS 帳戶中的其他使用者共用
版本控制
重要
轉換定義是帳戶特定的。如果您想要在不同帳戶中使用轉換 AWS ,則必須在該帳戶中單獨發佈。
草稿與已發佈轉換
AWS 轉換自訂支援 登錄檔中轉換的兩種狀態:
草案轉換是進行中或未測試的轉換定義。它們會儲存為特定版本,並由參考該特定版本的使用者擷取、更新和執行。在準備與您的團隊共用轉換之前,草稿對於反覆開發、測試和改進很有用。草稿也會與特定對話相關聯。如果您重新啟動 CLI,您可以使用 atx --conversation-id {id}還原先前的 CLI。
已發佈的轉換可在您帳戶的轉換登錄檔中使用,以供具有所需 IAM 許可的其他使用者執行。您可以使用 探索已發佈的轉換atx custom def list。
典型的工作流程是:
在本機建立轉換
儲存為草稿以供測試 (
atx custom def save-draft)精簡和驗證
發佈以與您的團隊共用 (
atx custom def publish)
您也可以直接發佈轉換,而無需將其儲存為草稿。
參考與課程
AWS 轉換自訂使用兩種類型的知識來改善轉換品質:
參考是使用者提供的文件,存放在轉換定義的 references/資料夾中。參考僅支援文字檔案 (所有檔案總計最多 10MB),通常包含文件、API 規格、遷移指南和程式碼範例。轉換執行期間會視需要載入參考。在互動式模式下建立或更新轉換定義時,您可以新增參考。
課程會自動從先前的轉換執行中擷取。持續學習系統會從轉換期間遇到的執行軌跡、開發人員意見回饋和程式碼修正產生它們。它會將相關課程分組為類別,以便您一起檢閱。與預先提供的參考不同,當您跨不同程式碼庫執行轉換時,課程會隨著時間累積,系統會自動套用它們來改善未來的執行。您可以使用 以互動方式檢閱和管理課程atx custom def learnings。
組建和驗證命令
組建或驗證命令是選用參數,指定如何在轉換過程中驗證您的程式碼。此命令會在轉換期間的不同時間點執行,以確保程式碼完整性。
提供命令來驗證結果,並在驗證失敗時傳回問題,對於透過持續學習改善轉型品質非常重要。如果不需要建置或驗證,請從輸入中省略 。
如需範例和詳細指引,請參閱工作流程區段中的建置和驗證命令。
持續學習
持續學習是一種系統,可自動擷取每個轉換執行的意見回饋,並隨著時間改善轉換品質。系統會透過下列方式收集資訊:
明確意見回饋 - 互動式模式中提供的評論和程式碼修正
隱含觀察 - 代理程式在轉換和偵錯程式碼時遇到的問題
持續學習系統會處理此資訊,以建立新增至轉換定義的課程,以改善未來的轉換。系統會在轉換完成後自動執行學習程序,您不需要額外的輸入。
重要
課程是轉換特定的,不會在不同轉換或不同的客戶帳戶之間共用。
管理課程
系統會自動產生課程,但您可以控制哪些課程會套用至未來的執行。atx custom def learnings 命令會開啟互動式終端機工作階段,以檢閱和策劃轉換累積的教訓。
在此工作階段中,您可以:
瀏覽分組為類別的課程,並查看每個類別包含多少個作用中課程。
開啟一個課程來閱讀其完整詳細資訊,包括課程內文、其影響,以及之前所參考的執行次數。
封存課程,以防止系統將其套用至未來的執行,並視需要稍後還原。
永久刪除不再有用的封存課程。
如需逐步說明,請參閱 持續學習。
用戶端技能
用戶端技能是在轉換執行期間擴展代理程式的其他功能。與定義要執行哪些轉換的轉換定義不同,用戶端技能提供代理程式可在任何轉換期間與其內建功能搭配使用的補充工具、指令碼和指示。
從專案層級和使用者層級目錄中探索用戶端技能。將技能放在專案層級,當它們強制執行特定於儲存庫的標準時,以及在使用者層級,當它們套用至您的所有專案時。只有在提供程式碼儲存庫路徑時,才能使用專案層級技能。如需詳細的組態和用量,請參閱 用戶端技能。
自訂轉換命令簡介
以下是您可以搭配自訂轉換使用的幾個命令。命令的完整清單位於AWS 轉換自訂轉換命令參考中。
-
atx custom-
執行自訂轉換互動式體驗,允許建立、探索、執行和精簡轉換。
-
這是 的預設命令
atx。 -
--trust-all-tools(-t) 是選用的,並隱含地允許代理程式提出所有請求的工具請求。請謹慎使用,尤其是在生產環境中。您可以使用信任設定檔案,為特定工具和命令設定工具信任。
-
-
atx custom --help|atx custom -h-
顯示說明選單。
-
每個命令也包含說明功能表,例如
atx custom def exec --help。
-
-
atx --version|atx -v-
顯示版本。
-
版本編號會隨每個版本而變更。
-
-
atx custom def list-
列印轉換登錄檔中可用的轉換清單。
-
-
atx custom def exec-
執行轉換
-
-
atx custom def learnings-
開啟互動式工作階段,以檢視和管理轉換從先前執行中學到的經驗教訓
-
-
atx mcp-
用來管理 MCP 伺服器組態
-