Amazon CodeGuru 常見問答集

一般問題

CodeGuru 有兩個元件:Amazon CodeGuru 安全工具和 Amazon CodeGuru Profiler。CodeGuru Security 是基於機器學習 (ML) 和程式分析的工具,可找出應用程式的程式碼中的安全漏洞。CodeGuru Security 也會掃描硬編碼的憑證。CodeGuru Profiler 可最佳化生產環境中執行的應用程式效能,並識別最昂貴的程式碼行,從而顯著降低營運成本。

CodeGuru 現在已正式上市。您可以在 Amazon CodeGuru 主控台立即開始使用。

若要查看支援的 AWS 區域,請瀏覽所有 AWS 全球基礎架構的 AWS 區域表。如需詳細資訊,請參閱 AWS 一般參考資料中的區域和端點

Amazon CodeGuru Security

CodeGuru Security 是基於機器學習和程式分析的程式碼掃描工具,可找出應用程式的程式碼中的安全漏洞。

CodeGuru Security 目前支援掃描 Java、Python、JavaScript、TypeScript、C#、CloudFormation、Terraform、Go 和 Ruby。

CodeGuru Security 可偵測開放全球應用程式安全專案 (OWASP) 十大問題、常見弱點列舉 (CWE) 前 25 大問題、日誌注入、機密,以及 AWS API 和 SDK 的安全使用。如需 CodeGuru Security 可發現之漏洞的詳細資訊,請參閱 Amazon CodeGuru Detector 程式庫
 

造訪 CodeGuru 主控台,在您的開發人員生命週期中整合 CodeGuru Security。您可以整合至持續整合與交付 (CI/CD) 工具、儲存庫掃描,以及整合式開發環境 (IDE)。
 

CodeGuru Security 需要唯讀存取您的程式碼,以便產生建議。您的信任、隱私權和內容安全是我們最關切的事項。我們實作適當的控制 (包括傳輸加密),以避免未授權人員存取或公開您的內容,同時確保對內容的使用絕對遵守我們對您所做的承諾。我們也支援客戶管理員 KMS 金鑰 (CMCMK) 進行加密。如需詳細資訊,請參閱資料隱私權常見問答集

否,CodeGuru Security 不會儲存您的原始程式碼。
 

CodeGuru Security 使用規則探勘和受監督的機器學習模型進行訓練,這些模型採用邏輯迴歸和神經網路的組合。例如,在訓練敏感資料洩漏期間,它將對所有使用資源或敏感資料的程式碼路徑進行完整的程式碼分析,建立代表這些功能或敏感資料的功能集,然後將其用作邏輯迴歸模型和卷積神經網路 (CNN) 的輸入。

CodeGuru Security 與適用於 Lambda 的 Amazon Inspector 程式碼掃描整合。即將推出與儲存庫和 CI/CD 工具的其他整合。
 

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler 可協助開發人員和 IT 操作人員輕鬆了解其應用程式的執行階段行為,提高效能並降低基礎架構成本。Amazon CodeGuru Profiler 將分析應用程式執行時間描述檔,並提供智慧建議和視覺化,指導開發人員如何提高其程式碼中最相關部分的效能。

分析群組是您建立的邏輯分組。它代表一個應用程式的邊界。例如,在微型服務架構中,描述檔將彙集您指派給微型服務的描述檔,並為所有微型服務產生一個描述檔。

日誌記錄執行時間僅適用於有限的案例集,因為日誌記錄只能監控延遲 (而不是 CPU 使用率),並且由於開發人員必須記錄應用程式中的每項功能 (而不影響應用程式效能),讓開發人員在沒有必要工具的情況下,監控生產中的應用程式並進行疑難排解,因此實作起來很耗時。這是需要分析的情況:Amazon CodeGuru Profiler 旨在收集有關該應用程式行為中發生的所有事件資料,而不管情況如何。CodeGuru Profiler 使用常見的效能低下的知識庫,來自動發現即時應用程式中影響其效能的代碼模式。開發人員隨後則可按照提供的建議修正問題。

傳統的 APM 提供有關監控、追蹤和應用程式效能的實用資料。Amazon CodeGuru Profiler 透過提供應用程式執行階段資料視覺化,以及針對發現的效能問題的可行建議來補充這些 APM 功能。它還使用機器學習來偵測和警示您的應用程式描述檔中的異常,並指出異常的程式碼行。使用 Amazon CodeGuru Profiler,您可以輕鬆檢視最有可能實現效能最佳化以及潛在節省的程式碼部分,並獲得有關如何解決這些問題的指南,而無須具有精深的效能工程背景。Amazon CodeGuru Profiler 可以分析 EC2 執行個體、容器和無伺服器運算平台 (包括 AWS Lambda) 以及內部部署。此外,一些獨立的分析工具被設計為僅在測試環境中執行,而 Amazon CodeGuru Profiler 則被設計為在生產中的生產流量負載下持續執行,且不對應用程式產生影響。在排解生產中的操作問題 (包括在裸機主機上執行時),此功能很實用。

Amazon CodeGuru Profiler 可分析 Amazon EC2 上託管的應用程式、Amazon ECS 和 Amazon EKS 上執行的容器化應用程式,以及 AWS Fargate 和 AWS Lambda 上執行的無伺服器應用程式。 此外,可採用內部部署方式執行 Amazon CodeGuru Profiler

Amazon CodeGuru Profiler 的代理程式使用分配給 AWS Lambda 函數的資源 (CPU、記憶體)。調整為在程序內執行緒執行時對應用程式效能的影響最小。若您的應用程式佔用 AWS Lambda 函數的大部分資源,則請評估增加的資源以使代理程式正常運作。

CodeGuru Profiler 目前支援 Java、Python (預覽版) 和 JVM 語言 (例如 Scala 和 Kotlin)。

Amazon CodeGuru Profiler 由三部分組成:代理程式、分析工具服務和智慧建議。該代理程式透過命令列上的應用程式啟動,並且作為應用程式一部分的程序內執行緒來執行。它從執行代理程式的每個服務執行個體中獲取資料,然後每五分鐘將資料傳送至分析工具服務,然後對其進行匯總。Amazon CodeGuru Profiler 則以互動式火焰圖發佈描述檔資料,讓您可以視覺化應用程式的效能。Amazon CodeGuru Profiler 還會持續掃描分析的資料,並將其與 Amazon 和效能工程最佳實務比較,以及在發現效能問題時主動向您提醒智慧建議。此外,它還使用機器學習來持續分析應用程式執行時間資料,在偵測到應用程式描述檔異常時發出警示並指向異常程式碼行。

CodeGuru Profiler 分析 Java 和其他 JVM 語言的 CPU (作用中 CPU 和真實時鐘時間) 與記憶體 (堆積摘要),以及 Python 應用程式的 CPU (真實時鐘時間)。

可以,啟用記憶體分析并開始執行分析之後,CodeGuru Profiler 就會收集應用程式的 CPU 和記憶體資訊。僅需一個分析群組即可取得給定應用程式的 CPU 和記憶體資料。

CodeGuru Profiler 提供堆積摘要資訊。堆積摘要可在給定的時間範圍內 (通常為 5 分鐘) 提供每種物件類型 (例如 String、int、char[]) 和自訂類型的記憶體使用率的合併檢視。CodeGuru Profiler 追蹤物件的累加大小及其計數。這些指標顯示在時間表圖中,這樣您就可以輕鬆發現每種物件類型的記憶體使用率趨勢和峰值。

堆積摘要可在兩種情形中發揮作用。首先,您可確定可能的內存洩漏。一種或多種物件類型的記憶體使用率曲線不斷增長,這就表明可能存在洩漏,可能引發記憶體用盡錯誤和應用程式當機。第二種情形是您想要優化應用程式的記憶體量。在此情況下,每種物件類型的記憶體使用率明細資料可協助您知悉關注之處。例如,透過了解與特定物件類型相關聯的意外大量記憶體使用情況,您就可以將分析和優化工作集中于應用程式中負責分配和引用此類型物件的程式碼。