任何創建軟體的客戶都不可避免地存在錯誤,但同時,通常必須與產品和功能開發壓力競爭,這常常迫使他們降低解決錯誤的優先順序。這些錯誤可能會分散開發人員的注意力,降低使用者體驗並導致有關使用者體驗的誤導性指標。即使客戶優先考慮修復錯誤,這通常需要以經驗/熟練的工程師的形式進行業務投資,以投入大量時間和精力來理解和修復錯誤。
該儲存庫包含一個端對端系統,該系統結合了 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 與其客戶之間任何協議的一部分,也不會修改任何協議。