본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 26. 07:29

AWS CodeCommit에 Amazon Bedrock을 결합하여 AI 코드 리뷰를 자동화 및 수동 실행할 수 있도록 구현해 보았다

요약

AWS CodeCommit과 Amazon Bedrock을 결합하여 PR 생성 시 자동으로 AI 코드 리뷰를 수행하는 시스템 구축 방법을 소개합니다. EventBridge와 Lambda를 활용해 자동 리뷰와 수동 트리거를 모두 지원하는 하이브리드 아키텍처를 구현했습니다.

핵심 포인트

  • AWS 서비스(CodeCommit, EventBridge, Lambda, Bedrock)를 활용한 서버리스 아키텍처
  • S3를 이용한 시스템 프롬프트 외부 관리로 리뷰 유연성 확보
  • PR 감지 자동화 및 특정 커밋 대상 수동 리뷰 기능 구현
  • AI 리뷰를 통한 개발 생산성 향상 및 리뷰 대기 시간 단축

개발 프로세스에서 코드 리뷰는 매우 중요하지만, 리뷰 대기 시간의 발생이나 리뷰어의 부담 증가가 과제가 되는 경우가 있습니다.

그래서 이번에는 AWS CodeCommit, Amazon EventBridge, AWS Lambda, 그리고 Amazon Bedrock을 조합하여, 풀 리퀘스트(Pull Request, PR) 생성 시나 수동 트리거 시에 자동으로 AI가 코드 리뷰를 해주는 메커니즘을 구축했습니다.

자동 리뷰뿐만 아니라, "main 브랜치로의 직접 push 시" 또는 "특정 차분(diff)만을 타겟으로 리뷰하고 싶을 때"에 대응할 수 있도록 수동 발화 메커니즘도 도입했습니다.

본 시스템의 아키텍처는 다음과 같습니다.

  • 트리거 감지: CodeCommit에서의 PR 생성·갱신, 혹은 수동 이벤트(AWS 콘솔이나 테스트 실행 등)를 Amazon EventBridge가 감지하여 AWS Lambda를 기동합니다.

  • 컨텍스트 준비: Lambda 함수는 Amazon S3로부터 리뷰용 프롬프트(지시서)를 가져오고, AWS CodeCommit으로부터 대상 커밋의 코드 차분(diff)을 가져옵니다.

  • AI에 의한 리뷰: 프롬프트와 차분 코드를 조합하여 Amazon Bedrock(Anthropic Claude 등)으로 요청을 보냅니다.

  • 피드백: Bedrock으로부터 돌아온 리뷰 결과를 Lambda가 CodeCommit의 PR(또는 커밋) 코멘트로 직접 작성합니다.

  • Amazon S3 (프롬프트 관리)

리뷰의 품질이나 평가 축을 유연하게 변경할 수 있도록, 시스템 프롬프트는 외부(S3)로 분리했습니다.

배치 파일: s3://[버킷명]/prompts/review_prompt.txt

당신은 우수한 시니어 엔지니어입니다. 제공된 소스 코드의 차분(diff)을 리뷰해 주세요.
# 평가 축
1. 버그나 잠재적인 취약점이 없는지
...

PR의 생성·갱신 이벤트를 감지하기 위한 이벤트 패턴을 설정합니다.

{
"source": ["aws.codecommit"],
"detail-type": ["CodeCommit Pull Request State Change"],
...
}

※ 수동 실행 시에는 이 EventBridge 패턴에 의존하지 않는 형태로, 후술할 Lambda로 특정 JSON 이벤트를 직접 전달함으로써 발화시킵니다.

Python (boto3)를 사용한 Lambda 함수의 샘플 코드입니다.

※ 런타임: Python 3.14 / 타임아웃: 3분 이상으로 설정 (Bedrock의 응답 시간을 고려)

import json
import boto3
import os
...
  • 프롬프트의 외부 관리 (S3)

리뷰 규칙(언어 설정, 보안 중시, 명명 규칙 체크 등)을 변경하고 싶을 때, Lambda 코드를 다시 작성할 필요 없이 S3 상의 텍스트 파일을 수정하는 것만으로 즉시 반영되도록 했습니다.

  • 「자동」과 「수동」의 하이브리드 운용

EventBridge에 의한 PR 감지뿐만 아니라, Lambda 페이로드 내에 manual: true 플래그와 타겟 커밋 ID 군을 전달함으로써, "PR을 만들지 않는 main 브랜치로의 직접 push"나 "특정 두 커밋 사이의 핀포인트 차분 리뷰"에도 유연하게 대응할 수 있는 로직으로 만들었습니다. 이를 통해 개발 단계나 브랜치 전략에 맞춘 유연한 운용이 가능해졌습니다.

이 메커니즘을 도입함으로써, 개발자가 수동으로 AI를 호출하고 싶은 상황에도 대응하면서 리뷰의 초동 대응을 대폭 가속화할 수 있었습니다. 인간에 의한 본 리뷰 전에 경미한 버그나 포맷 지적을 AI가 미리 완료해 주기 때문에, 팀 전체의 생산성 향상을 실감하고 있습니다.

향후에는 파일 사이즈가 너무 큰 경우의 청크(Chunk) 분할 처리나, 특정 파일 확장자(.md 등을 제외하는) 필터링 기능 등을 확장해 나가고 싶습니다.

끝까지 읽어주셔서 감사합니다!

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0