HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
LocalStack[AWS 무료!]

LocalStack[AWS 무료!]

progress
Done
Tags
DevOps
WhatWhyHow REFER
 

What


LocalStack이란
  • AWS 클라우드 서비스 에뮬레이터 이다.
  • 실제 AWS를 셋팅하고 웹 애플리케이션을 로컬 환경에서도 실제 연결하는 비용 없이 간단하게 Local환경에서 AWS 클라우드 서비스를 이용하는 환경처럼 사용할 수 있다.
  • LocalStack은 AWS Lambda, S3, Dynamodb, Kinesis, SQS, SNS 등과 같이 점점 더 많은 AWS 서비스를 지원한다(무료)
  • 지속 가능한 코드임을 증명하기 위한 테스트코드에서 손쉽게 통합테스트 환경을 구축할 수 있다.
 
 

Why


  • 가장 큰 것은 비용이다. 개발 환경을 위한 클라우드를 따로 만들면 되지만 그렇지 못한다면 지속적으로 동작가능한 코드임을 증명하지 못한다.
  • S3 의존성이 추가된 가운데 외부 스토리지에 대한 호출용 클라우드가 없다면 웹 애플리케이션 테스트는 불가능하게 된다.
  • 단순히 Mock을 통해 할 수 있지만 실제 기능 동작 여부를 지속적으로 파악할 필요가 있기 때문이다.
  • 그리고 AWS에 대한 환경변수들의 보안 이슈가 될 여지가 있다.
 

How


  • 컨테이너 테스트를 활용한 LocalStack
      1. 해당 코드를 test 디렉토리 하위에 위치시킨다. 그러면 해당 testContainer가 실행하면서 LocalStack도 띄어준다.
          • 그러면 실제 파일 업로드, 가져오기, 삭제 등을 진행할 때 AWS환경이랑 유사하게 테스트가 가능하고 실제 환경에서도 환경의 불일치를 격지 않을 수 있다.
/** * @Document: aws s3 에뮬레이터 */ @TestConfiguration public class LocalStackS3Config { private static final DockerImageName LOCAL_STACK_IMAGE = DockerImageName.parse("localstack/localstack"); @Value("${cloud.aws.s3.bucket}") private String bucket; @Bean(initMethod = "start", destroyMethod = "stop") public LocalStackContainer localStackContainer() { DockerImageName parse = DockerImageName.parse("localstack/localstack"); return new LocalStackContainer(LOCAL_STACK_IMAGE) .withServices(LocalStackContainer.Service.S3); } @Bean public AmazonS3 amazonS3(LocalStackContainer localStackContainer) { AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard() .withEndpointConfiguration(localStackContainer.getEndpointConfiguration(S3)) .withCredentials(localStackContainer.getDefaultCredentialsProvider()) .build(); amazonS3.createBucket(bucket); return amazonS3; } }
  • 실제 개발 환경에서 사용하기 위한 LocalStack
 
  1. Docker로 에뮬레이터를 띄어나야 한다.

     REFER


    localstack
    localstack • Updated May 2, 2025
    LocalStack을 활용한 Integration Test 환경 만들기 | 우아한형제들 기술블로그
    LocalStack을 활용한 Integration Test 환경 만들기 | 우아한형제들 기술블로그
    https://techblog.woowahan.com/2638/
    LocalStack을 활용한 Integration Test 환경 만들기 | 우아한형제들 기술블로그
    S3를 사용하는 환경에서 LocalStack을 통한 통합 테스트
    놀토는 이미지 저장소로 AWS의 S3를 사용한다. 하지만 S3에 대한 쓰기 작업은 우테코 측해에 권한을 부여한 EC2에서만 가능했으며 accesskey와 secretkey도 받을 수 없었기 때문에, 로컬 환경에서는 S3를 사용하는 서비스에 대해서 테스트를 진행할 수 없었다. AWS의 S3를 이용하는 서비스단을 통합 테스트하는 방법으로 LoacalStack을 이용하는 방법을 제시해줬는데, 이를 사용하는 통합테스트를 진행한 과정들을 기록한다. Localstack? LocalStack provides an easy-to-use test/mocking framework for developing Cloud applications. It spins up a testing environment on your loc..
    S3를 사용하는 환경에서 LocalStack을 통한 통합 테스트
    https://newwisdom.tistory.com/87
    S3를 사용하는 환경에서 LocalStack을 통한 통합 테스트
    [Spring] LocalStack과 Testcontainers를 활용하여 AWS S3 통합 테스트 환경 구축하기
    로컬이나 어떠한 운영 환경에서도 쉽게 AWS S3 통합 테스트를 실행하기 위해 LocalStack과 Testcontainers를 사용하여 테스트 환경을 구축해보았다. Testcontainers Testcontainers는 docker 컨테이너를 외부 설정 없이 Java 언어만으로 구축할 수 있는 오픈소스 라이브러리이다. 테스트 실핼시 외부에서 따로 DB를 설정하거나 별도의 프로그램 또는 스크립트를 실행할 필요가 없다. 컨테이너 기술을 사용하기 때문에 임베디드 라이브러리를 사용하는 것보다 훨씬 더 경량화된 방법으로 테스트 환경을 구축할 수 있다. [Spring] TestContainers로 멱등성있는 MySql 테스트 환경 구축하기 [Spring] 어디서든 실행 가능한 Redis 통합 테스트 환경 구축하기..
    [Spring] LocalStack과 Testcontainers를 활용하여 AWS S3 통합 테스트 환경 구축하기
    https://loosie.tistory.com/817
    [Spring] LocalStack과 Testcontainers를 활용하여 AWS S3 통합 테스트 환경 구축하기