Любой клиент, создающий программное обеспечение, неизбежно имеет ошибки, но в то же время ему часто приходится конкурировать с давлением со стороны разработчиков продуктов и функций, что часто вынуждает их снижать приоритетность устранения ошибок. Эти ошибки могут отвлекать внимание разработчиков, ухудшать взаимодействие с пользователем и вызывать вводящие в заблуждение показатели пользовательского опыта. Даже если клиенты отдают приоритет исправлению ошибок, это часто требует инвестиций в бизнес в виде опытных/квалифицированных инженеров, которые посвятят много времени и сосредоточатся на понимании и исправлении ошибок.
Этот репозиторий содержит комплексную систему, которая объединяет Amazon CloudWatch, AWS Lambda и Amazon Bedrock для создания комплексной системы, которая автоматически обнаруживает и исправляет ошибки для повышения надежности приложений и общего качества обслуживания клиентов. Log Driven Bug Fixer подключается к группе журналов Amazon CloudWatch Logs приложения через подписку AWS Lambda. Любые журналы, содержащие ошибки приложений, отправляются на обработку; где функция Lambda создает запрос, включая трассировку стека и соответствующие файлы кода, а затем отправляет его в Amazon Bedrock (Claude v1) для генерации исправлений кода. Затем измененный код передается в систему управления версиями (git) и создает запрос на включение для проверки и развертывания.
В следующей таблице приведен пример разбивки затрат на развертывание данного руководства с параметрами по умолчанию в регионе Восток США (Сев. Вирджиния) на один месяц.
Сервис AWS | Размеры | Ежемесячная стоимость [долл. США] |
---|---|---|
Амазон ДинамоБД | Средний размер элемента 0,5 КБ, 0,5 RCU и 1 WCU на сообщение. | $ 17,08 |
Amazon CloudWatch | Для каждого сообщения записывается и хранится 33 КБ журналов. | $8,77 |
AWS Лямбда | Время выполнения 45 секунд на каждое уникальное сообщение об ошибке | $ 2,43 |
Амазонка SQS | 3 запроса на сообщение, размер сообщения 1 тыс. | $ 0,01 |
Амазонка | 1000 входных жетонов, 1000 выходных жетонов | $ 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 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
Повторно запустите приведенный выше сценарий, если вам нужно внести какие-либо изменения. Альтернативно вы можете напрямую изменить значения хранилища параметров SSM, которые хранятся под префиксом ${PARAMETER_STORE_PREFIX}.
# Create a deployment package (Lambda function source code)
cloudformation/package.sh
# Deploy the CloudFormation template
cloudformation/deploy.sh
Откройте консоль CloudFormation и проверьте статус шаблона с именем стека, указанным на шаге 4 шагов развертывания.
После получения трассировки стека Python в группе журналов Amazon CloudWatch вашего приложения, настроенной на шаге 6, в системе управления версиями будет создан запрос на включение. Обратите внимание, что обработка может занять несколько минут. Если вам нужна быстрая проверка решения, вы можете добавить ошибку в существующее приложение, что может привести к появлению трассировки стека 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}
Клиенты несут ответственность за проведение собственной независимой оценки информации, содержащейся в настоящем Руководстве. Настоящее Руководство: (а) предназначено только для информационных целей, (б) представляет текущие предложения и методы работы AWS, которые могут быть изменены без предварительного уведомления, и (в) не создает никаких обязательств или гарантий со стороны AWS и ее дочерних компаний, поставщиков или лицензиары. Продукты и услуги AWS предоставляются «как есть», без каких-либо гарантий, заявлений или условий, явных или подразумеваемых. Ответственность и обязательства AWS перед клиентами регулируются соглашениями AWS, и настоящее Руководство не является частью и не изменяет какое-либо соглашение между AWS и его клиентами.