ソフトウェアを作成する顧客には必ずバグが存在しますが、同時に製品や機能の開発プレッシャーと戦わなければならないことが多く、そのためバグへの対処の優先順位を下げる必要に迫られることがよくあります。これらのバグは開発者の注意をそらし、ユーザー エクスペリエンスを低下させ、ユーザー エクスペリエンスに関する誤解を招く指標を引き起こす可能性があります。顧客がバグ修正を優先する場合でも、多くの場合、バグの理解と修正に多くの時間を費やし、集中的に取り組む経験や熟練したエンジニアという形でのビジネス投資が必要になります。
このリポジトリには、Amazon CloudWatch、AWS Lambda、Amazon Bedrock を組み合わせてバグを自動的に検出して修正するエンドツーエンド システムを作成し、アプリケーションの信頼性と全体的なカスタマー エクスペリエンスを向上させるエンドツーエンド システムが含まれています。 Log Driven Bug Fixer は、AWS Lambda サブスクリプションを介してアプリケーションの Amazon CloudWatch Logs ログ グループにフックします。アプリケーション エラーを含むログは処理のために送信されます。ここでは、Lambda 関数がスタック トレースや関連コード ファイルを含むプロンプトを作成し、それを Amazon Bedrock (Claude v1) に送信してコード修正を生成します。変更されたコードはソース管理 (git) にプッシュされ、レビューとデプロイのためのプル リクエストが作成されます。
次の表は、デフォルトのパラメーターを使用してこのガイダンスを米国東部 (バージニア北部) リージョンに 1 か月間展開する場合のコストの内訳例を示しています。
AWSサービス | 寸法 | 月額料金 [USD] |
---|---|---|
Amazon DynamoDB | 平均アイテム サイズ 0.5kb、メッセージあたり 0.5 RCU、1 WCU | $17.08 |
Amazon CloudWatch | メッセージごとに 33kb のログが書き込まれ保存される | $8.77 |
AWSラムダ | 固有のエラー メッセージあたりの実行時間は 45 秒 | $2.43 |
アマゾンSQS | メッセージごとに 3 つのリクエスト、メッセージ サイズは 1k | $0.01 |
アマゾンの岩盤 | 1,000 個の入力トークン、1,000 個の出力トークン | $32.00 |
合計 | $60.29 |
このソリューションは、Mac または Linux でのビルド環境をサポートします。
このデプロイメントでは、次の AWS サービスにアクセスできる必要があります。
これらのデプロイ手順は、Mac または Amazon Linux 2023 で最適に動作するように最適化されています。別の OS でのデプロイには追加の手順が必要になる場合があります。
ソリューションを構成するために必要な入力となるため、既存のアプリケーションに関する次の情報を収集します。
コマンド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
変更が必要な場合は、上記のスクリプトを再実行します。あるいは、${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 とその顧客間の契約の一部ではなく、また変更するものでもありません。