Trawling

AWS, 계정 없이 AWS 연동 코드를 로컬 시험하는 에뮬레이터 공개

AWS는 11월 11일 기존 AWS SDK·CLI 요청을 컴퓨터에서 처리하는 AWS Emulator를 공개했습니다. AWS 계정이나 클라우드 배포 없이 AWS 서비스 연동 코드를 로컬이나 CI에서 시험할 수 있습니다. 구현된 API는 AWS와 같은 결과·오류를 돌려주도록 했지만 지원 범위는 서비스별로 다르며, 미지원 작업은 HTTP 501을 반환하고 IAM 정책 시험에는 쓸 수 없습니다.

아마존웹서비스(AWS)는 11월 11일 AWS Emulator를 공개했습니다. 이 도구는 AWS API 요청을 컴퓨터에서 처리해 AWS 계정이나 클라우드 배포 없이 AWS 서비스와 연동하는 코드를 시험하게 해 줍니다. 기존 AWS SDK나 AWS CLI의 요청 주소를 에뮬레이터로 바꾸면 코드의 호출 흐름을 로컬에서 실행할 수 있습니다. AWS는 지원하는 작업에 유효한 요청의 AWS와 같은 결과와 잘못된 요청의 같은 오류를 돌려주며, 아직 지원하지 않는 작업에는 HTTP 501 Not Implemented를 반환한다고 밝혔습니다.

AWS Emulator는 컴퓨터에서 실행하며 AWS API 요청을 처리하는 로컬 프로그램입니다. AWS CLI나 SDK가 요청을 보낼 주소를 환경 변수로 에뮬레이터에 지정하고, 에뮬레이터가 제공하는 자격 증명으로 요청에 서명합니다. AWS는 요청이 밀리초 단위로 처리된다고 설명하며, 노트북뿐 아니라 지속적 통합(CI) 환경에서도 쓸 수 있다고 밝혔습니다.

설치 방식은 운영체제와 시험 환경에 따라 다릅니다. 리눅스에서는 RPM 또는 Debian 패키지를 설치해 실행하고, macOS와 Windows에서는 Docker로 구동합니다. AWS SDK for Rust를 사용하는 테스트는 에뮬레이터를 테스트 프로세스 안에서 실행하는 방식도 지원합니다. 이 내장 방식에서는 SDK에 에뮬레이터의 HTTP 클라이언트를 전달합니다.

에뮬레이터는 API 요청에 답할 뿐 아니라 리소스 상태도 실행 중 메모리에 보관합니다. 예를 들어 S3 버킷을 만든 뒤 목록을 조회하면 같은 에뮬레이터에서 만든 버킷이 결과에 나타납니다. 에뮬레이터를 종료하면 리소스도 삭제돼 다음 실행은 빈 상태에서 시작합니다. 여러 코딩 에이전트나 CI 작업을 동시에 돌릴 때는 인스턴스를 각각 실행할 수 있습니다. 인스턴스마다 포트와 키, 메모리 상태가 따로 있어 서로의 리소스가 섞이지 않습니다.

이 방식으로 개발자는 AWS 계정과 실제 클라우드 리소스를 준비하지 않고도 서비스 호출이 이어지는 흐름을 점검할 수 있습니다. AWS가 든 사례에서는 코딩 에이전트가 로컬에 DynamoDB 테이블을 만들고 애플리케이션을 시험한 뒤, 오류를 고쳐 배포 전에 다시 실행합니다. 에뮬레이터의 서비스와 API는 AWS가 공개하는 API 모델을 바탕으로 생성되며, 동작은 릴리스마다 구현하고 검증한다고 AWS는 설명했습니다. 에뮬레이터에는 별도 서비스 요금이 없고, AWS에 배포해 실제 AWS 리소스를 사용할 때 해당 리소스 요금이 발생합니다.

AWS와의 동작 일치도는 API와 서비스에 따라 다릅니다. AWS는 짧은 프로그램으로 서비스 호출 흐름을 시험해 응답, 생성된 리소스 상태, 잘못된 요청의 오류가 실제 AWS와 맞는지 확인합니다. 서비스별 점수는 해당 시험에서 통과한 항목 수를 전체 시험 수와 비교한 값이며, AWS는 릴리스마다 이를 공개합니다. 지원되지 않는 작업은 성공이나 AWS의 오류 대신 HTTP 501을 반환합니다.

AWS 설명에 따르면 리소스를 만들고 조회·수정·삭제하는 제어 영역 API는 실제 AWS와 가장 가깝게 동작합니다. S3 객체를 가져오거나 넣는 등 서비스의 주된 작업을 수행하는 데이터 영역 API와 CloudFormation·Terraform·AWS CDK 같은 인프라 코드 도구의 지원은 서비스별로 다릅니다. AWS는 에뮬레이터를 오리건 리전에서 검증하고 글로벌 서비스는 버지니아 리전에서 확인합니다. 따라서 한 리전에서의 시험 결과에는 다른 리전의 기능 차이가 반영되지 않습니다.

요청에 적힌 계정 ID나 리전별로 리소스가 자동 분리되지는 않습니다. AWS는 한 인스턴스에서 한 계정과 한 리전을 사용하도록 안내하며, 여러 리전을 시험하려면 리전별로 별도 인스턴스를 실행해야 합니다. 또 AWS Identity and Access Management(IAM) 정책과 리소스 기반 정책을 실제처럼 평가하지 않으므로 보안 정책 시험에는 쓸 수 없습니다. AWS는 개발·테스트용으로 제공하며 운영 워크로드에 사용하지 말라고 안내합니다. 장시간 실행이나 부하 시험도 검증하지 않았습니다.

애플리케이션의 요청·응답과 리소스 데이터는 AWS로 전송되지 않습니다. 다만 기본 설정에서는 사용량, 오류 범주, 성능과 실행 환경 정보를 담은 익명 텔레메트리가 AWS로 전송됩니다. 요청 내용과 코드, 자격 증명, 개인 데이터는 수집하지 않으며, 사용자는 설정을 바꿔 텔레메트리를 끌 수 있습니다.

참고 자료

오류 제보