프로젝트를 하다보면 AWS 리소스를 활용해야하는 경우가 항상 발생하는데 처음 사용해보는 리소스라면 실제로 구성해놓고 테스트하는게 항상 부담이였다.
그래서 로컬에 세팅할 순 없을까하고 찾아보다가 알게 된 localstack의 사용기에 대해서 써보려고합니다.
localstack은 개발 단계에서 필요한 AWS 클라우드 리소스 기능들을 로컬환경에서 에뮬레이션하여 제공해준다.
도커를 사용하여 간단하게 에뮬레이션할 수 있기 때문에 테스트에 매우 용이합니다.
테스트 해본 AWS 리소스는 SQS
였고 docker-compose
를 이용하여 테스트를 진행했습니다.
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
#!/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
명령어로 생성된 큐를 확인할 수 있습니다.docker ps -a
aws --endpoint-url=http://localhost:4566 sqs list-queues