AWS Emulator, 계정 없이 AWS 연동 시험…서비스별 테스트 통과 수 공개
AWS Emulator는 AWS CLI·SDK 요청을 로컬에서 처리해 실제 AWS 계정이나 클라우드 자원 없이 애플리케이션의 AWS 연동을 시험하는 도구입니다. AWS는 공개 테스트 묶음의 서비스별 통과 수를 제공하고, Rust SDK 테스트는 각 에뮬레이터 인스턴스의 상태를 분리해 프로세스 안에서 실행할 수 있습니다. 통과 수는 정해진 테스트의 결과이며 IAM 정책은 실제 AWS처럼 평가하지 않습니다.

아마존웹서비스(AWS)는 2026년 11월 11일 AWS Emulator를 일반 제공한다고 발표했습니다. AWS CLI나 소프트웨어 개발 키트(SDK)가 보내는 AWS 서비스 요청을 개발자 컴퓨터의 로컬 HTTPS 서버에서 처리하는 도구입니다. 환경변수로 CLI나 SDK의 요청 주소를 에뮬레이터로 바꾸면 애플리케이션 코드와 기존 테스트를 수정하지 않고 AWS 연동을 시험할 수 있습니다. AWS 계정이나 실제 클라우드 자원은 필요하지 않으며, 개인 컴퓨터와 개발 서버, 지속적 통합(CI) 환경에서 실행할 수 있습니다. 에뮬레이터 사용료는 없고 AWS에 배포할 때 쓰는 자원은 별도 과금 대상입니다.
Linux에서는 RPM 또는 Debian 패키지로 설치합니다. macOS와 Windows에서는 문서의 Dockerfile로 이미지를 빌드해 컨테이너에서 실행합니다. 로컬 서버는 AWS CLI와 SDK, 코딩 에이전트가 보내는 API 요청을 받습니다. AWS 블로그의 예시에서는 S3 버킷을 만들고 파일을 올린 뒤 목록에서 확인합니다. Kiro에 DynamoDB 테이블을 만들고 항목을 쓴 다음 다시 읽도록 요청한 사례도 있습니다. 에뮬레이터가 만든 자원은 메모리에 보관되며 프로그램을 종료하면 사라집니다.
서비스별 점수는 공개 테스트의 통과 수
AWS는 에뮬레이터가 실제 AWS와 얼마나 비슷하게 동작하는지 충실도(fidelity) 테스트로 측정합니다. 테스트 하나는 AWS SDK로 실제 작업 흐름을 실행하는 짧은 프로그램입니다. 예를 들어 객체를 저장하고 다시 읽은 뒤 삭제하는 과정을 시험합니다. AWS에서 테스트가 어떤 결과를 내는지 확인한 다음 에뮬레이터가 각 호출의 결과와 부수 효과를 재현하는지 대조합니다. 통과하려면 각 호출의 상태 코드와 응답 본문이 맞아야 합니다. 오류가 발생하면 오류 코드와 메시지도 일치해야 하며, 작업 뒤 만들어진 자원과 데이터 상태도 비교합니다.
AWS는 서비스별로 통과한 테스트 수와 전체 테스트 수를 공개합니다. 40/50은 해당 서비스의 공개 충실도 테스트 50개 가운데 40개를 통과했다는 뜻입니다. 테스트 묶음과 실패 사례도 공개해 어떤 동작을 점검했는지 알 수 있습니다. 이 점수는 정해진 테스트 묶음의 결과로, 해당 서비스의 모든 API를 대상으로 한 호환률을 뜻하지는 않습니다. AWS 문서는 테스트 묶음 버전이 같은 점수끼리 비교하도록 안내합니다. 새 테스트가 추가되면 에뮬레이터가 더 많은 동작을 지원하더라도 통과 비율이 낮아질 수 있습니다.
지원하지 않는 API 작업을 호출하면 에뮬레이터는 HTTP 501 오류를 돌려보냅니다. AWS 문서는 자원을 만들거나 읽고, 수정·삭제·목록화하는 관리 API에서 실제 AWS와 가장 비슷하게 동작한다고 설명합니다. 객체 저장·가져오기처럼 서비스의 핵심 기능을 수행하는 데이터 처리 API는 서비스별 지원 정도가 다릅니다. 따라서 공개 점수와 테스트 항목이 실제 프로젝트에서 쓰는 호출을 얼마나 다루는지가 로컬 시험의 유용성에 영향을 줍니다.
Rust SDK 테스트는 에뮬레이터 상태를 분리
일반 서버 모드에서는 CLI와 SDK가 로컬 주소에 연결됩니다. 별도 서버를 띄우지 않고 테스트 프로세스 안에서 에뮬레이터를 실행하는 내장 모드도 있습니다. AWS SDK for Rust 테스트는 에뮬레이터의 HTTP 클라이언트를 SDK에 연결해 이 방식을 사용합니다. 각 내장 인스턴스가 별도의 상태를 유지하므로 테스트끼리 버킷이나 테이블 같은 자원을 공유하지 않고 병렬로 실행할 수 있습니다. 이 모드는 Rust SDK용으로 제공됩니다.
AWS 시니어 프린시펄 엔지니어 Matthew Goldberg는 AWS API 모델을 구현 규격으로, 실제 AWS를 비교 기준으로 삼았다고 설명했습니다. 초기 실험에서 Kiro는 AWS 명령줄 도구를 이용한 테스트를 실제 AWS에서 통과하도록 다듬은 뒤, 같은 테스트를 통과하는 메모리 기반 SQS 구현을 만들었습니다. 현재 개발 과정에서는 한 에이전트 팀이 실제 AWS에서 검증한 테스트를 만들고, 다른 팀이 이를 에뮬레이터에서 실행해 차이를 찾으며, 세 번째 팀이 수정 작업을 맡습니다. 변경 사항은 빌드, 코딩 기준, 보안, 충실도 회귀 검사를 통과해야 병합됩니다. Goldberg는 자신이 속한 팀이 코드를 직접 작성하거나 검토하지 않았다고 밝혔습니다.
기본 서버는 로컬 컴퓨터에서만 연결됩니다. 요청마다 AWS Signature Version 4(SigV4) 서명이 필요하며, 에뮬레이터가 발급한 자격 증명으로 서명한 요청만 받습니다. AWS는 요청·응답과 자원 데이터를 AWS로 보내지 않는다고 설명합니다. 다만 익명의 사용량·오류 정보는 기본 설정에서 전송하며 설정에서 끌 수 있습니다.
에뮬레이터는 AWS의 IAM 정책과 자원 기반 정책을 실제 AWS처럼 평가하지 않습니다. 실제 AWS에서 거부될 요청이 에뮬레이터에서는 성공할 수 있어 AWS는 보안 테스트나 운영 워크로드에 사용하지 말라고 안내합니다. 한 인스턴스는 계정이나 리전별로 자원을 분리하지 않으므로 한 계정과 한 리전만 사용해야 합니다. AWS와 동작을 대조하는 기준 리전은 미국 서부 오리건(us-west-2)이며, 글로벌 서비스는 미국 동부 버지니아 북부(us-east-1)에서 확인합니다. 리전별 서비스 가용성 차이는 반영하지 않습니다. AWS 문서는 장시간 실행이나 부하 테스트 용도로는 시험하지 않았다고 설명합니다.
참고 자료
- AWS gives developers a free local stand-in for its cloud, built from scratch by AI agents – GeekWire
- AWS Emulator: a local emulator built 100% by autonomous AI agents
- GitHub - aws/aws-emulator: AWS Emulator is a local emulator of the AWS APIs. · GitHub
- What is AWS Emulator? - AWS Emulator
- Fidelity in AWS Emulator - AWS Emulator
- Test your applications against AWS locally with AWS Emulator