Localstack 사용기

JeongMin·2022년 6월 14일
0

개요

프로젝트를 하다보면 AWS 리소스를 활용해야하는 경우가 항상 발생하는데 처음 사용해보는 리소스라면 실제로 구성해놓고 테스트하는게 항상 부담이였다.
그래서 로컬에 세팅할 순 없을까하고 찾아보다가 알게 된 localstack의 사용기에 대해서 써보려고합니다.

Localstack?

localstack은 개발 단계에서 필요한 AWS 클라우드 리소스 기능들을 로컬환경에서 에뮬레이션하여 제공해준다.
도커를 사용하여 간단하게 에뮬레이션할 수 있기 때문에 테스트에 매우 용이합니다.

환경 세팅

테스트 해본 AWS 리소스는 SQS였고 docker-compose를 이용하여 테스트를 진행했습니다.

  • docker: 20.10.11
  • docker-compose: 1.29.2

docker-compose.yml

version: "3"

services:
  localstack:
    container_name: localstack
    image: localstack/localstack:0.12.11
    ports:
      - "4566-4576:4566-4576"
    environment:
      - SERVICES=sqs
      - DEFAULT_REGION=${DEFAULT_REGION- }
      - DEBUG=0
      - DOCKER_HOST=unix:///var/run/docker.sock
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"

  setup-aws-resources:
    image: amazon/aws-cli:2.2.7
    volumes:
      - ./dev_env:/project/dev_env
      - ./aws:/aws
    environment:
      - AWS_ACCESS_KEY_ID=${ACCESS_KEY_ID- }
      - AWS_SECRET_ACCESS_KEY=${SECRET_ACCESS_KEY- }
      - AWS_DEFAULT_REGION=${DEFAULT_REGION- }
    entrypoint: /bin/sh -c
    command: >
      "
        echo wait for the state of localstack to become ready...
        sleep 10
        aws sqs create-queue --queue-name ${QUEUE_NAME- } --endpoint-url=http://localstack:4566 --attributes file://${QUEUE_FILE_NAME- }
        echo set up aws resources is complete
      "
    depends_on:
      - localstack
  • 참고한 사이트와 동일하게 docker-compose.yml을 구성하였습니다.

run.sh & create_queue.json

#!/bin/bash

# Localstack
export SERVICES=sqs
export TMPDIR=/private$TMPDIR
export DEBUG=0
export DEFAULT_REGION=ap-northeast-2
export ACCESS_KEY_ID=accesskey
export SECRET_ACCESS_KEY=secretkey
export QUEUE_NAME=test-queue
export QUEUE_FILE_NAME=create_queue.json

docker-compose up -d --remove-orphans
{
    "ReceiveMessageWaitTimeSeconds": "20"
}
  • 위와 같이 run.sh 파일과 create_queue.json 파일을 작성하여 실행할 수 있으며 SQS attributes에 관련된 사항은 링크에서 확인 할 수 있습니다.
  • docker-compose.yml에 작성한대로 /aws 폴더 안에 json 파일을 위치시켜놓는다.
  • aws --endpoint-url=https://localhost:4566 sqs list-queues 명령어로 생성된 큐를 확인할 수 있습니다.

Result

  • docker ps -a

  • aws --endpoint-url=http://localhost:4566 sqs list-queues

Reference


profile
안녕하세요 https://ggomi.github.io

0개의 댓글