Setiap pelanggan yang membuat perangkat lunak pasti memiliki bug, namun pada saat yang sama, sering kali harus bersaing dengan tekanan pengembangan produk dan fitur, yang sering kali mendorong mereka untuk tidak memprioritaskan penanganan bug. Bug ini dapat mengalihkan fokus pengembang, menurunkan pengalaman pengguna, dan menyebabkan metrik yang menyesatkan tentang pengalaman pengguna. Sekalipun pelanggan memprioritaskan perbaikan bug, hal ini sering kali memerlukan investasi bisnis dalam bentuk pengalaman/insinyur yang terampil untuk mendedikasikan banyak waktu dan fokus dalam memahami dan memperbaiki bug.
Repo ini berisi sistem ujung ke ujung yang menggabungkan Amazon CloudWatch, AWS Lambda, dan Amazon Bedrock untuk membuat sistem ujung ke ujung yang secara otomatis mendeteksi dan memperbaiki bug guna meningkatkan keandalan aplikasi dan pengalaman pelanggan secara keseluruhan. Pemecah Bug Berbasis Log terhubung ke grup log Amazon CloudWatch Logs aplikasi melalui langganan AWS Lambda. Setiap log yang berisi kesalahan aplikasi dikirim untuk diproses; di mana fungsi Lambda membuat prompt, termasuk pelacakan tumpukan dan file kode yang relevan, lalu mengirimkannya ke Amazon Bedrock (Claude v1) untuk menghasilkan perbaikan kode. Kode yang dimodifikasi kemudian dimasukkan ke dalam kontrol sumber (git) dan membuat permintaan tarik untuk ditinjau dan diterapkan.
Tabel berikut memberikan contoh perincian biaya untuk menerapkan Panduan ini dengan parameter default di Wilayah AS Timur (Virginia Utara) selama satu bulan.
layanan AWS | Ukuran | Biaya bulanan [USD] |
---|---|---|
Amazon DynamoDB | Ukuran item rata-rata 0,5kb, 0,5 RCU, dan 1 WCU per pesan | $17,08 |
Amazon CloudWatch | 33kb log ditulis dan disimpan per pesan | $8,77 |
AWS Lambda | Waktu eksekusi 45 detik per pesan kesalahan unik | $2,43 |
Amazon SQS | 3 permintaan per pesan, ukuran pesan 1k | $0,01 |
Batuan Dasar Amazon | 1.000 token masukan, 1.000 token keluaran | $32,00 |
Total | $60,29 |
Solusi ini mendukung lingkungan build di Mac atau Linux.
Penerapan ini mengharuskan Anda memiliki akses ke layanan AWS berikut:
Petunjuk penerapan ini dioptimalkan agar berfungsi terbaik di Mac atau Amazon Linux 2023. Penerapan di OS lain mungkin memerlukan langkah tambahan.
Kumpulkan informasi berikut tentang aplikasi Anda yang ada karena ini adalah masukan yang diperlukan untuk mengonfigurasi solusi
Kloning repo menggunakan perintah git clone https://github.com/aws-solutions-library-samples/guidance-for-self-healing-code-on-aws.git
cd ke folder repo cd guidance-for-self-healing-code-on-aws
Instal paket dalam persyaratan menggunakan perintah pip install -r requirement.txt
Ekspor variabel lingkungan yang diperlukan:
# 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
Jalankan kembali skrip di atas jika Anda perlu melakukan perubahan. Alternatifnya, Anda dapat langsung mengubah nilai Penyimpanan Parameter SSM yang disimpan dengan awalan ${PARAMETER_STORE_PREFIX}.
# Create a deployment package (Lambda function source code)
cloudformation/package.sh
# Deploy the CloudFormation template
cloudformation/deploy.sh
Buka konsol CloudFormation dan verifikasi status templat dengan nama tumpukan yang ditentukan pada langkah 4 langkah penerapan.
Setelah menerima pelacakan tumpukan Python di grup log Amazon CloudWatch aplikasi Anda yang dikonfigurasi pada Langkah 6, permintaan penarikan akan dibuat di sistem kontrol sumber. Perhatikan bahwa pemrosesan dapat memakan waktu beberapa menit hingga selesai. Jika Anda menginginkan validasi solusi yang cepat, Anda dapat memasukkan kesalahan ke dalam aplikasi yang ada yang dapat mengakibatkan jejak tumpukan python di log aplikasi Anda
Contoh permintaan penarikan keluaran di Github:
Panduan ini adalah contoh proyek yang menargetkan basis kode Python 3.9+. Ada peluang lebih lanjut untuk memperluas dan meningkatkan sistem ini. Beberapa menyarankan langkah selanjutnya:
src/handlers/providers
untuk menyaring tanggapan dari 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}
Pelanggan bertanggung jawab untuk melakukan penilaian independen terhadap informasi dalam Panduan ini. Panduan ini: (a) hanya untuk tujuan informasi, (b) mewakili penawaran dan praktik produk AWS saat ini, yang dapat berubah tanpa pemberitahuan, dan (c) tidak menimbulkan komitmen atau jaminan apa pun dari AWS dan afiliasinya, pemasok, atau pemberi lisensi. Produk atau layanan AWS disediakan “sebagaimana adanya” tanpa jaminan, pernyataan, atau ketentuan apa pun, baik tersurat maupun tersirat. Tanggung jawab dan kewajiban AWS terhadap pelanggannya dikendalikan oleh perjanjian AWS, dan Panduan ini bukan bagian dari, juga tidak mengubah, perjanjian apa pun antara AWS dan pelanggannya.