개요
기본적으로 개발 환경에서 테스트를 진행할 때 dockerize하여 진행하는 방법을 선호한다. 케이스마다 다르겠지만 실제로 존재하는 서비스에 붙어서 진행하는게 아닌 모든걸 도커화하여 진행하면 아무런 영향을 끼치지 않고 실행 및 종료를 할 수 있기 때문이다. AWS SNS+SQS를 활용하던 중 AWS관련 서비스들은 도커로 테스트할 수 없을까 찾아보다가 localstack이라는걸 발견하여 관련 테스트 진행법에 대해 포스팅한다.
docker-compose.yml
localstack:
image: localstack/localstack:latest
environment:
- AWS_DEFAULT_REGION=ap-northeast-2
- EDGE_PORT=4566
- SERVICES=sqs,sns
ports:
- "4566-4597:4566-4597"
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
networks:
- backend
먼저 docker-compose.yml에 위의 내용을 적어준다. SERVICES에 sqs, sns를 명시함으로써 해당 서비스를 사용할 수 있다. 도커를 실행한 후 http://localhost:4566/health 로 접속해보면 아래와 같은 화면을 확인할 수 있다.
위처럼 정상적으로 출력이 된다면 실행이 됐다고 생각하면 된다.
SQS 생성
aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name 큐이름
위 명령어를 통해 큐를 생성할 수 있다.
위처럼 나오면 정상적으로 SQS가 생성된 것이다.
SNS 생성
aws --endpoint-url=http://localhost:4566 sns create-topic --name 토픽이름
위처럼 나오면 정상적으로 SNS가 생성된 것이다.
생성된 SQS 확인
aws --endpoint-url=http://localhost:4566 sqs list-queues
생성한 모든 큐 목록을 확인할 수 있다.
생성된 SNS 확인
aws --endpoint-url=http://localhost:4566 sns list-topics
생성된 모든 SNS 목록을 확인할 수 있다.
SNS에 SQS 연결
aws --endpoint-url=http://localhost:4566 sns subscribe --topic-arn 생성한TOPIC의ARN --protocol sqs --notification-endpoint 생성한SQS주소
위에서 설명한 생성된 SQS/SNS 확인 명령어로 토픽 ARN과 SQS주소를 채워넣고 연결한다.
위처럼 SQS가 특정 토픽을 구독중인 모습을 확인할 수 있다.
구독 리스트 확인
aws --endpoint-url=http://localhost:4566 sns list-subscriptions
모든 구독 리스트를 확인할 수 있다.
SNS 메시지 발행
aws --endpoint-url=http://localhost:4566 sns publish --topic-arn 토픽ARN --message 'Hi Hide'
토픽ARN과 메시지를 채워넣고 전송한다.
위처럼 나오면 정상적으로 메시지가 publish된 것이다.
SQS 메시지 컨슈밍
aws --endpoint-url=http://localhost:4566 sqs receive-message --queue-url SQS주소
SQS주소를 알맞게 써준다.
위 사진처럼 consume한 메시지를 확인할 수 있다.
'Coding' 카테고리의 다른 글
Block IO/Non-Block IO 개념 정리 (2) | 2022.12.13 |
---|---|
Redlock 알고리즘 (0) | 2022.07.02 |
Git 특정 커밋 수정하는 방법 (0) | 2020.09.02 |
Mac OSX git xcrun error 오류 해결 방법 (0) | 2020.01.31 |
Vue.js AWS S3에 배포 후 도메인 연결하는 방법 (0) | 2020.01.09 |