任何创建软件的客户都不可避免地存在错误,但同时,通常必须与产品和功能开发压力竞争,这常常迫使他们降低解决错误的优先级。这些错误可能会分散开发人员的注意力,降低用户体验并导致有关用户体验的误导性指标。即使客户优先考虑修复错误,这通常也需要以经验/熟练的工程师的形式进行业务投资,以投入大量时间和精力来理解和修复错误。
该存储库包含一个端到端系统,该系统结合了 Amazon CloudWatch、AWS Lambda 和 Amazon Bedrock,创建了一个端到端系统,可自动检测和修复错误,以增强应用程序可靠性和整体客户体验。日志驱动的错误修复程序通过 AWS Lambda 订阅挂钩到应用程序的 Amazon CloudWatch Logs 日志组。发送包含应用程序错误的任何日志进行处理;其中 Lambda 函数创建提示,包括堆栈跟踪和相关代码文件,然后将其发送到 Amazon Bedrock (Claude v1) 以生成代码修复。然后,修改后的代码将被推送到源代码管理 (git) 中,并创建拉取请求以供审查和部署。
下表提供了在美国东部(弗吉尼亚北部)区域使用默认参数部署本指南一个月的成本明细示例。
AWS服务 | 方面 | 每月费用 [美元] |
---|---|---|
亚马逊动态数据库 | 每条消息的平均项目大小为 0.5kb、0.5 RCU 和 1 WCU | $17.08 |
亚马逊云观察 | 每条消息写入和存储 33kb 日志 | 8.77 美元 |
AWS Lambda | 每条唯一错误消息的执行时间为 45 秒 | 2.43 美元 |
亚马逊SQS | 每条消息 3 个请求,1k 消息大小 | 0.01 美元 |
亚马逊基岩 | 1,000 个输入令牌,1,000 个输出令牌 | $ 32.00 |
全部的 | 60.29 美元 |
该解决方案支持 Mac 或 Linux 中的构建环境。
此部署要求您有权访问以下 AWS 服务:
这些部署说明经过优化,最适合在 Mac 或 Amazon Linux 2023 上运行。在其他操作系统中部署可能需要额外的步骤。
收集有关现有应用程序的以下信息,因为这些是配置解决方案所需的输入
使用命令git clone https://github.com/aws-solutions-library-samples/guidance-for-self-healing-code-on-aws.git
克隆存储库
cd 到 repo 文件夹cd guidance-for-self-healing-code-on-aws
使用命令pip install -r requirement.txt
安装需求中的软件包
导出所需的环境变量:
# CloudFormation stack name.
export STACK_NAME=self-healing-code
# S3 bucket to store zipped Lambda function code for deployments.
# Note: the S3 bucket must be in the same region as the CloudFormation stack deployment region.
export DEPLOYMENT_S3_BUCKET=<NAME OF YOUR S3 BUCKET>
# All variables and secrets for this project will be stored under this prefix.
# You can define a different value if it's already in use.
export PARAMETER_STORE_PREFIX=/${STACK_NAME}/
pip3 install -r requirements.txt
# Follow the resulting series of prompts to store configuration details in SSM Parameter Store. This steps will use information gathered during Step 1
python3 bin/configure.py
如果需要进行任何更改,请重新运行上述脚本。或者,您可以直接修改存储在 ${PARAMETER_STORE_PREFIX} 前缀下的 SSM 参数存储值。
# Create a deployment package (Lambda function source code)
cloudformation/package.sh
# Deploy the CloudFormation template
cloudformation/deploy.sh
打开 CloudFormation 控制台并使用部署步骤第 4 步中指定的堆栈名称验证模板的状态。
在步骤 6 中配置的应用程序的 Amazon CloudWatch 日志组中收到 Python 堆栈跟踪后,将在源代码控制系统中创建拉取请求。请注意,处理可能需要几分钟才能完成。如果您想快速验证解决方案,可以将错误注入现有应用程序,这可能会导致应用程序日志中出现 python 堆栈跟踪
Github 中的输出拉取请求示例:
本指南是一个面向 Python 3.9+ 代码库的示例项目。还有进一步扩展和增强该系统的机会。一些建议的后续步骤:
src/handlers/providers
中特定于提供商的提示,以优化 LLM 的响应src/handlers/source_code.py
)src/providers/source_code.py
) aws cloudformation delete-stack --stack-name ${STACK_NAME}
aws ssm delete-parameters-by-path --path ${PARAMETER_STORE_PREFIX}
客户有责任对本指南中的信息进行独立评估。本指南:(a) 仅供参考,(b) 代表 AWS 当前的产品和实践,如有更改,恕不另行通知,并且 (c) 不构成 AWS 及其附属公司、供应商或许可人。 AWS 产品或服务按“原样”提供,不提供任何类型的保证、陈述或条件(无论是明示的还是暗示的)。 AWS 对客户的责任和义务由 AWS 协议控制,本指南不是 AWS 与其客户之间任何协议的一部分,也不会修改任何协议。