Amazon CodeGuru 常见问题

一般性问题

CodeGuru 具有两个组件:Amazon CodeGuru 安全防御工具和 Amazon CodeGuru Profiler。CodeGuru 安全防御工具是一款基于机器学习(ML)和程序分析的工具,可以发现应用程序代码中的安全漏洞。CodeGuru Security 还会扫描硬编码凭证。CodeGuru Profiler 可优化在生产期间运行的应用程序的性能,识别出最昂贵的代码行,从而显著降低运营成本。

CodeGuru 现已正式发布。您现在就可以在 Amazon CodeGuru 控制台中开始。

要了解支持该服务的 AWS 区域,请访问所有 AWS 全球基础设施的 AWS 区域表。有关更多信息,请参阅 AWS 一般参考中的区域和端点

Amazon CodeGuru Security

CodeGuru 安全防御工具是一款基于机器学习和程序分析的代码扫描工具,可以发现应用程序代码中的安全漏洞。

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

CodeGuru Security 检测开放全球应用程序安全项目(OWASP)十大问题、常见弱点枚举(CWE)前 25 个问题、日志注入、机密以及 AWS API 和 SDK 的安全使用。有关 CodeGuru Security 发现的漏洞的更多详细信息,请参阅 Amazon CodeGuru 探测器库
 

访问 CodeGuru 控制台,将 CodeGuru 安全性集成到您的开发人员生命周期中。您可以集成到持续集成和交付(CI/CD)工具、存储库扫描和集成式开发环境(IDE)中。
 

为了生成建议,CodeGuru Security 需要获得代码的只读访问权限。您的信任、隐私与内容的安全性是我们最重视的问题。我们会采取适当的控制措施(包括传输中加密)来防止他人未经授权访问或披露您的内容,并确保我们依照对您的承诺来使用您的内容。我们还支持客户经理 KMS 密钥(CMCMK)进行加密。有关更多信息,请参阅数据隐私常见问题

不,CodeGuru 安全不会存储您的源代码。
 

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 分钟),每个对象类型(例如,字符串、int、char[])以及自定义类型的内存利用率的整合视图。CodeGuru Profiler 会追踪对象的总大小及其计数。这些指标显示在时间表图形中,您可以轻松地按对象类型描绘内存利用率趋势和峰值。

堆摘要在两种场景中很有用。首先,您可以发现潜在的内存泄漏问题。一个或多个对象类型的内存利用率曲线不断增长,可能指示存在泄漏,这有可能导致内存用尽错误和应用程序崩溃。第二个场景是在您想优化应用程序的内存占用空间时。在这种情况下,每个对象类型的内存利用率细分将可帮助您确定关注点。例如,了解到意外偏高的内存量与特定对象类型有关后,您可以将分析和优化工作的重点放在您的应用程序负责分配和引用该类对象的部分。