메인 콘텐츠로 건너뛰기

AWS 기반 AI 이미지 검증 툴 만들기 지식 카드

설탕사과
설탕사과
조회수 60
요약

Amazon Q 도구 설치 및 시작 방법

Amazon Q CLI를 설치하려면 공식 문서를 참고해 환경에 맞게 설치합니다. 설치 후 빌더 ID로 설정을 마치고, q chat 명령어를 입력해 Q 세션을 시작할 수 있습니다.

MCP 서버 연결 설정

이미지 검증 프로젝트에서는 AWS Diagram MCP 서버를 사용했습니다. 아래와 같이 설정 파일(mcp configuration)을 작성해 MCP 서버를 연동합니다.

{
  mcpServers: {
    awslabs.aws-diagram-mcp-server: {
      command: uvx,
      args: [awslabs.aws-diagram-mcp-server],
      env: { FASTMCP_LOG_LEVEL: ERROR },
      autoApprove: [],
      disabled: false
    }
  }
}

프로젝트 주요 기능 요약

AI 기반 이미지 검증 툴은 다음과 같은 흐름으로 동작합니다:

  • 사용자가 이미지를 업로드하면 S3로 저장

  • S3에 저장된 이미지는 GuardDuty Malware Protection으로 스캔

  • API Gateway와 Lambda가 이미지 상태를 점검

  • 안전한 이미지면 Amazon Rekognition으로 추가 분류

  • 부적합 이미지는 S3에서 삭제되고 경고 메시지 표시

  • 정상 이미지는 S3에 저장되며 분류 결과 제공

AWS 서비스 조합

이 프로젝트에 사용된 주요 AWS 서비스는 다음과 같습니다:

  • CloudFront, S3: 프론트엔드 호스팅과 이미지 저장

  • API Gateway, Lambda: 백엔드 요청 처리

  • WAF: API와 CloudFront 보안 강화

  • Cognito: 사용자 인증, 로그인

  • GuardDuty Malware Protection for S3: 이미지 악성코드 검사 자동화

  • Amazon Rekognition: 이미지의 적합성 판단 및 라벨링

아키텍처 설계 흐름

이미지 검증 툴의 전체 구조는 다음과 같습니다:

  • 사용자는 CloudFront를 통해 웹에 접속, Cognito를 이용해 로그인

  • 이미지 업로드 시 S3로 파일 저장

  • GuardDuty가 S3 객체를 자동 검색해서 악성코드 여부 판단

  • 프론트엔드에서 API Gateway로 요청해 Lambda 함수로 처리

  • Rekognition을 활용한 이미지 분석 후 결과에 따라 S3 객체 삭제 또는 유지

개발 및 배포 과정에서 겪는 주요 문제들

프로젝트 생성 시 여러 문제에 직면할 수 있습니다. 예시로,

  • S3 버킷 네이밍 오류, 매개변수 사용 오류

  • CloudFormation에서 GuardDuty Malware Protection 구현의 난점

  • API CORS 설정에서 403 에러 발생

  • aws-sdk 모듈 미설치 에러

  • 배포 실패 시 자원 보존을 위한 롤백 방지 필요

  • 인증 정보와 프론트엔드 연결을 실 서비스 정보로 갱신 필요

이미지 업로드 및 검증 과정

실제 서비스에서는 사용자가 Cognito로 회원가입 후 로그인합니다. 로그인한 사용자는 이미지를 업로드할 수 있고, 시스템은 이미지를 분석하여 부적절하면 자동으로 삭제합니다. 적합한 경우에는 S3에 안전하게 저장됩니다.

보안 강화를 위한 설정 팁

CloudFront와 API Gateway에 각각 WAF(Web Application Firewall)를 적용해 외부 접근을 차단하고, Cognito 인증을 통해 인증되지 않은 사용자의 접근을 막을 수 있습니다. 또, 이미지 키에는 이메일 일부만 노출하고 나머지는 마스킹해 개인정보를 보호합니다.

프론트엔드와 백엔드 연동 방법

프론트엔드 폴더의 모든 파일을 S3 버킷에 업로드하면 CloudFront에서 서빙할 수 있습니다. 로그인은 Cognito Hosted UI를 활용하고, API Gateway와 Lambda를 실제 값으로 연결해야 정상적으로 이미지 업로드 및 상태 체크가 가능합니다.

테스트 및 운영 단계

반복적으로 테스트하여 아키텍처와 코드의 문제점(예: 계정 설정, 버킷 권한, CORS 등)을 수정해야 합니다. 적절한 로그와 메시지를 통해 사용자가 이미지 검증 결과를 쉽게 확인할 수 있도록 합니다.