Cualquier cliente que crea software inevitablemente tiene errores, pero al mismo tiempo, a menudo debe competir con la presión del desarrollo de productos y funciones, lo que a menudo los empuja a restar prioridad a la solución de errores. Estos errores pueden distraer la atención de los desarrolladores, degradar la experiencia del usuario y provocar métricas engañosas sobre la experiencia del usuario. Incluso si los clientes priorizan la corrección de errores, esto a menudo requiere una inversión empresarial en forma de experiencia/ingenieros capacitados para dedicar una gran cantidad de tiempo y concentrarse en comprender y corregir errores.
Este repositorio contiene un sistema de un extremo a otro que combina Amazon CloudWatch, AWS Lambda y Amazon Bedrock para crear un sistema de un extremo a otro que detecta y corrige errores automáticamente para mejorar la confiabilidad de las aplicaciones y la experiencia general del cliente. El solucionador de errores basado en registros se conecta al grupo de registros de Amazon CloudWatch Logs de una aplicación a través de una suscripción a AWS Lambda. Todos los registros que contienen errores de aplicación se envían para su procesamiento; donde una función Lambda crea un mensaje, incluido el seguimiento de la pila y los archivos de código relevantes, y luego lo envía a Amazon Bedrock (Claude v1) para generar correcciones de código. Luego, el código modificado se envía al control de código fuente (git) y crea una solicitud de extracción para su revisión e implementación.
La siguiente tabla proporciona un desglose de costos de muestra para implementar esta Guía con los parámetros predeterminados en la región Este de EE. UU. (Virginia del Norte) durante un mes.
servicio de AWS | Dimensiones | Costo mensual [USD] |
---|---|---|
AmazonDynamoDB | Tamaño promedio de elemento 0,5 kb, 0,5 RCU y 1 WCU por mensaje | $ 17,08 |
Amazon CloudWatch | 33 kb de registros escritos y almacenados por mensaje | $ 8,77 |
AWS Lambda | Tiempo de ejecución de 45 segundos por mensaje de error único | $ 2,43 |
AmazonSQS | 3 solicitudes por mensaje, tamaño de mensaje de 1k | $0.01 |
Roca Amazónica | 1000 tokens de entrada, 1000 tokens de salida | $32.00 |
Total | $ 60,29 |
Esta solución admite entornos de compilación en Mac o Linux.
Esta implementación requiere que tenga acceso a los siguientes servicios de AWS:
Estas instrucciones de implementación están optimizadas para funcionar mejor en Mac o Amazon Linux 2023. La implementación en otro sistema operativo puede requerir pasos adicionales.
Recopile la siguiente información sobre su aplicación existente, ya que son entradas necesarias para configurar la solución.
Clona el repositorio usando el comando git clone https://github.com/aws-solutions-library-samples/guidance-for-self-healing-code-on-aws.git
cd a la carpeta del repositorio cd guidance-for-self-healing-code-on-aws
Instale paquetes en requisitos usando el comando pip install -r requirement.txt
Exporte las variables de entorno requeridas:
# 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
Vuelva a ejecutar el script anterior si necesita realizar algún cambio. Alternativamente, puede modificar directamente los valores del almacén de parámetros SSM que se almacenan bajo el prefijo ${PARAMETER_STORE_PREFIX}.
# Create a deployment package (Lambda function source code)
cloudformation/package.sh
# Deploy the CloudFormation template
cloudformation/deploy.sh
Abra la consola de CloudFormation y verifique el estado de la plantilla con el nombre de la pila especificada en el paso 4 de los pasos de implementación.
Al recibir un seguimiento de la pila de Python en el grupo de registros de Amazon CloudWatch de su aplicación configurado en el Paso 6, se creará una solicitud de extracción en el sistema de control de código fuente. Tenga en cuenta que el procesamiento puede tardar varios minutos en completarse. Si desea una validación rápida de la solución, puede inyectar un error en su aplicación existente que puede resultar en un seguimiento de la pila de Python en los registros de su aplicación.
Ejemplo de solicitud de extracción de salida en Github:
Esta guía es un proyecto de muestra dirigido a bases de código Python 3.9+. Hay más oportunidades para ampliar y mejorar este sistema. Algunos pasos siguientes sugeridos:
src/handlers/providers
para refinar las respuestas de los LLMsrc/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}
Los clientes son responsables de realizar su propia evaluación independiente de la información contenida en esta Guía. Esta Guía: (a) tiene fines informativos únicamente, (b) representa las ofertas y prácticas de productos actuales de AWS, que están sujetas a cambios sin previo aviso, y (c) no crea ningún compromiso ni garantía por parte de AWS y sus afiliados, proveedores o licenciantes. Los productos o servicios de AWS se proporcionan "tal cual" sin garantías, representaciones ni condiciones de ningún tipo, ya sean expresas o implícitas. Las responsabilidades de AWS y sus clientes están controladas por los acuerdos de AWS, y esta Guía no forma parte de ningún acuerdo entre AWS y sus clientes, ni lo modifica.