피드로 돌아가기
Dev.toBackend
원문 읽기
LocalStack Now Requires an Account — Here's How to Test AWS in Python Without One in 2026
LocalStack의 인증 토큰 의무화로 인한 CI 파이프라인 종속성 문제를 moto와 Floci 도입으로 벤더 게이트 없는 AWS 테스트 환경 구성
AI 요약
Context
LocalStack이 2026년 3월 23일 GitHub 저장소를 아카이빙하고 LOCALSTACK_AUTH_TOKEN 환경 변수를 필수화했으며, Hobby 티어에 비상업적 사용 제한을 추가했다. 이로 인해 기존에 LocalStack을 CI 파이프라인에 통합한 프로젝트들이 벤더 계정 요구사항 변경으로 인해 3AM 배포 전 CI 실패에 노출되는 상황이 발생했다.
Technical Solution
- moto를 순수 Python 기반 in-process 모킹으로 도입: boto3 호출을 가로채 메모리에서 처리하며 Docker 및 외부 서비스 불필요
- pytest 픽스처 패턴으로 S3, DynamoDB, SQS, SNS, Lambda 클라이언트 모킹 구현: @mock_aws 데코레이터로 테스트 함수 단위 자동 설정 및 정리
- 드롭인 conftest.py 제공: AWS_ACCESS_KEY_ID 등 환경 변수 모킹과 서비스별 클라이언트 픽스처를 함께 구성하여 기존 LocalStack 설정 대체
- Floci 및 DynamoDB Local 등 대안 제시: 통합 테스트 및 특정 서비스 요구사항에 따라 도구 선택 기준 제공
- 벤더 게이트 없는 개발 도구 설계 원칙 적용: 네트워크 호출 없이 로컬에서 실행되는 인프라 테스트 구성
Key Takeaway
벤더 정책 변경에 의한 CI 장애를 차단하기 위해 테스트 도구는 외부 인증 게이트웨이가 없는 순수 라이브러리(moto) 또는 자체 제어 가능한 컨테이너(Floci)를 선택해야 한다는 설계 원칙을 학습할 수 있다.
실천 포인트
Python boto3 기반 AWS 테스트를 작성하는 팀에서 moto의 @mock_aws 데코레이터와 conftest.py 픽스처 패턴을 적용하면 외부 인증 토큰 없이 S3, DynamoDB, SQS를 모킹할 수 있으며, 벤더 정책 변경으로 인한 CI 파이프라인 중단을 원천적으로 방지할 수 있다.