ลูกค้าที่สร้างซอฟต์แวร์ย่อมมีข้อบกพร่องอย่างหลีกเลี่ยงไม่ได้ แต่ในขณะเดียวกัน มักจะต้องแข่งขันกับความกดดันในการพัฒนาผลิตภัณฑ์และฟีเจอร์ ซึ่งมักจะผลักดันให้พวกเขาลดลำดับความสำคัญของการแก้ไขข้อบกพร่อง ข้อบกพร่องเหล่านี้อาจหันเหความสนใจของนักพัฒนา ลดประสบการณ์ผู้ใช้ และทำให้เกิดการวัดผลที่ทำให้เข้าใจผิดเกี่ยวกับประสบการณ์ผู้ใช้ แม้ว่าลูกค้าจะให้ความสำคัญกับการแก้ไขจุดบกพร่อง แต่มักจะต้องใช้การลงทุนทางธุรกิจในรูปแบบของประสบการณ์/วิศวกรผู้มีทักษะเพื่ออุทิศเวลาจำนวนมากและมุ่งเน้นในการทำความเข้าใจและแก้ไขจุดบกพร่อง
การซื้อคืนนี้ประกอบด้วยระบบตั้งแต่ต้นจนจบซึ่งรวม Amazon CloudWatch, AWS Lambda และ Amazon Bedrock เข้าด้วยกันเพื่อสร้างระบบตั้งแต่ต้นจนจบซึ่งจะตรวจจับและแก้ไขข้อบกพร่องโดยอัตโนมัติเพื่อเพิ่มความน่าเชื่อถือของแอปพลิเคชันและประสบการณ์โดยรวมของลูกค้า Log Driven Bug Fixer เชื่อมต่อกับกลุ่มบันทึก Amazon CloudWatch Logs ของแอปพลิเคชันผ่านการสมัครสมาชิก AWS Lambda บันทึกใดๆ ที่มีข้อผิดพลาดของแอปพลิเคชันจะถูกส่งไปเพื่อการประมวลผล โดยที่ฟังก์ชัน Lambda สร้างพรอมต์ รวมถึงการติดตามสแต็กและไฟล์โค้ดที่เกี่ยวข้อง จากนั้นจะส่งไปที่ Amazon Bedrock (Claude v1) เพื่อสร้างการแก้ไขโค้ด จากนั้นโค้ดที่แก้ไขจะถูกส่งไปยัง Source Control (git) และสร้างคำขอดึงเพื่อตรวจสอบและปรับใช้
ตารางต่อไปนี้แสดงรายละเอียดต้นทุนตัวอย่างสำหรับการปรับใช้คำแนะนำนี้กับพารามิเตอร์เริ่มต้นในภูมิภาคสหรัฐอเมริกาฝั่งตะวันออก (เวอร์จิเนียเหนือ) เป็นเวลาหนึ่งเดือน
บริการของ AWS | ขนาด | ค่าใช้จ่ายรายเดือน [USD] |
---|---|---|
อเมซอน ไดนาโมดีบี | ขนาดรายการเฉลี่ย 0.5kb, 0.5 RCU และ 1 WCU ต่อข้อความ | $17.08 |
อเมซอน CloudWatch | บันทึกขนาด 33kb ที่เขียนและจัดเก็บต่อข้อความ | $8.77 |
AWS แลมบ์ดา | เวลาดำเนินการ 45 วินาทีต่อข้อความแสดงข้อผิดพลาดที่ไม่ซ้ำกัน | $2.43 |
อเมซอน SQS | 3 คำขอต่อข้อความ ขนาดข้อความ 1,000 | $0.01 |
อเมซอน ข้อเท็จจริง | โทเค็นอินพุต 1,000 โทเค็นเอาต์พุต 1,000 โทเค็น | $32.00 |
ทั้งหมด | $60.29 |
โซลูชันนี้รองรับสภาพแวดล้อมบิลด์ใน Mac หรือ Linux
การปรับใช้นี้กำหนดให้คุณต้องมีสิทธิ์เข้าถึงบริการของ AWS ต่อไปนี้:
คำแนะนำในการปรับใช้เหล่านี้ได้รับการปรับให้ทำงานได้ดีที่สุดบน Mac หรือ Amazon Linux 2023 การปรับใช้ในระบบปฏิบัติการอื่นอาจต้องมีขั้นตอนเพิ่มเติม
รวบรวมข้อมูลต่อไปนี้เกี่ยวกับแอปพลิเคชันที่มีอยู่ของคุณ เนื่องจากข้อมูลเหล่านี้เป็นอินพุตที่จำเป็นในการกำหนดค่าโซลูชัน
โคลน repo โดยใช้คำสั่ง 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
เรียกใช้สคริปต์ข้างต้นอีกครั้งหากคุณต้องการทำการเปลี่ยนแปลงใดๆ หรือคุณสามารถแก้ไขค่าที่เก็บพารามิเตอร์ 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
เพื่อปรับแต่งการตอบสนองจาก 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}
ลูกค้ามีหน้าที่รับผิดชอบในการประเมินข้อมูลในคำแนะนำนี้โดยอิสระด้วยตนเอง คำแนะนำนี้: (a) มีไว้เพื่อวัตถุประสงค์ในการให้ข้อมูลเท่านั้น (b) แสดงถึงข้อเสนอผลิตภัณฑ์และแนวทางปฏิบัติในปัจจุบันของ AWS ซึ่งอาจเปลี่ยนแปลงได้โดยไม่ต้องแจ้งให้ทราบ และ (c) ไม่ได้สร้างข้อผูกพันหรือการรับรองใดๆ จาก AWS และบริษัทในเครือ ซัพพลายเออร์ หรือ ผู้อนุญาต ผลิตภัณฑ์หรือบริการของ AWS มีให้ "ตามสภาพ" โดยไม่มีการรับประกัน การรับรอง หรือเงื่อนไขใดๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย ความรับผิดชอบและความรับผิดของ AWS ที่มีต่อลูกค้าได้รับการควบคุมโดยข้อตกลงของ AWS และคำแนะนำนี้ไม่ได้เป็นส่วนหนึ่งของหรือแก้ไขข้อตกลงใดๆ ระหว่าง AWS และลูกค้า