من المؤكد أن أي عميل يقوم بإنشاء برنامج لديه أخطاء، ولكن في الوقت نفسه، غالبًا ما يتعين عليه التنافس مع ضغط تطوير المنتج والميزات، والذي يدفعه غالبًا إلى إلغاء إعطاء الأولوية لمعالجة الأخطاء. يمكن أن تؤدي هذه الأخطاء إلى تشتيت انتباه المطورين وتقليل تجربة المستخدم والتسبب في مقاييس مضللة حول تجربة المستخدم. حتى لو كان العملاء يمنحون الأولوية لإصلاح الأخطاء، فإن هذا غالبًا ما يتطلب استثمارًا تجاريًا في شكل خبرة/مهندسين ماهرين لتكريس قدر كبير من الوقت والتركيز في فهم الأخطاء وإصلاحها.
يحتوي هذا الريبو على نظام متكامل يجمع بين Amazon CloudWatch وAWS Lambda وAmazon Bedrock لإنشاء نظام شامل يكتشف الأخطاء ويصلحها تلقائيًا لتعزيز موثوقية التطبيق وتجربة العملاء الشاملة. يتم ربط Log Driven Bug Fixer بمجموعة سجلات Amazon CloudWatch Logs الخاصة بالتطبيق عبر اشتراك AWS Lambda. يتم إرسال أية سجلات تحتوي على أخطاء في التطبيق للمعالجة؛ حيث تقوم وظيفة Lambda بإنشاء مطالبة، بما في ذلك تتبع المكدس وملفات التعليمات البرمجية ذات الصلة، ثم ترسلها إلى Amazon Bedrock (Claude v1) لإنشاء إصلاحات التعليمات البرمجية. يتم بعد ذلك دفع التعليمات البرمجية المعدلة إلى التحكم بالمصادر (git) وإنشاء طلب سحب للمراجعة والنشر.
يوفر الجدول التالي نموذجًا لتوزيع التكلفة لنشر هذه الإرشادات باستخدام المعلمات الافتراضية في منطقة شرق الولايات المتحدة (شمال فيرجينيا) لمدة شهر واحد.
خدمة أوس | أبعاد | التكلفة الشهرية [الدولار الأمريكي] |
---|---|---|
أمازون دينامو دي بي | متوسط حجم العنصر 0.5 كيلو بايت و0.5 وحدة RCU و1 WCU لكل رسالة | 17.08 دولار |
أمازون كلاودواتش | 33 كيلو بايت من السجلات المكتوبة والمخزنة لكل رسالة | 8.77 دولار |
أوس لامدا | 45 ثانية من وقت التنفيذ لكل رسالة خطأ فريدة | 2.43 دولار |
أمازون إس كيو إس | 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 إلى مجلد الريبو 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 المخزنة تحت البادئة ${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 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}
يتحمل العملاء مسؤولية إجراء تقييمهم المستقل للمعلومات الواردة في هذه الإرشادات. هذه الإرشادات: (أ) لأغراض إعلامية فقط، (ب) تمثل عروض وممارسات منتجات AWS الحالية، والتي تخضع للتغيير دون إشعار، و(ج) لا تنشئ أي التزامات أو ضمانات من AWS والشركات التابعة لها أو الموردين أو المرخصين. يتم توفير منتجات أو خدمات AWS "كما هي" دون أي ضمانات أو إقرارات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. يتم التحكم في مسؤوليات AWS والتزاماتها تجاه عملائها من خلال اتفاقيات AWS، ولا تعد هذه الإرشادات جزءًا من أي اتفاقية بين AWS وعملائها ولا تعدّلها.