[AWS] localstack

localstack์€ ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ AWS API๋ฅผ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” mocking์šฉ ์‹œ์Šคํ…œ์ด๋‹ค.

๋‹น์—ฐํ•˜์ง€๋งŒ AWS์™€ ์™„์ „ํžˆ ๋™์ž‘์ด ๊ฐ™์ง„ ์•Š๊ณ , ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋„ ์•Š๋Š” ์นดํ”ผ์บฃ์ด๋‹ค. ๊ฐ€๋ฒผ์šด ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
AWS์—์„œ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ, AWS ๊ณต์‹ ๋ฌธ์„œ์—๋„ ์†Œ๊ฐœ๋˜์–ด์žˆ์„ ์ •๋„๋กœ ๋‚˜๋ฆ„ ์ธ์ง€๋„ ์žˆ๋‹ค.




๊ธฐ๋Šฅ ๋ชฉ๋ก

๋ชจ๋“  ๊ฒƒ์ด ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ์ด๋Š” ๊ธฐ๋Šฅ๋“ค์€ ์–ผ์ถ” ์žˆ๋‹ค.

https://docs.localstack.cloud/aws/services/




Docker๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

๋„ค์ดํ‹ฐ๋ธŒ ์„ค์น˜๋„ ์ง€์›์€ ํ•˜๋Š”๋ฐ, ๊ฐ€์žฅ ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•œ๊ฑด ์•„๋ฌด๋ž˜๋„ ์ปจํ…Œ์ด๋„ˆ๋‹ค.

sudo docker run \
  --rm -it \
  -p 4566:4566 \
  -p 4510-4559:4510-4559 \
  localstack/localstack




์‘์šฉ

AWS API์™€ ํ˜ธํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์—, aws cli๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ทผ๋ฐ aws cli๋ฅผ ์“ฐ๋ ค๋ฉด ๋จผ์ € ๋กœ๊ทธ์ธ์„ ์•„๋ฌด๊ฑฐ๋กœ๋ผ๋„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๋กœ๊ทธ์ธ ์ •๋ณด๊ฐ€ ์—†์œผ๋ฉด localstack๊ณผ ์ƒ๊ด€์—†์ด aws cli ์ž์ฒด์—์„œ ์ œํ•œ์„ ๊ฑธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ Docker๋กœ ๋„์šด ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•ด์„œ API๋ฅผ ๋‚ ๋ ค๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋‹ค์Œ ๋ช…๋ น์€ s3์— ๋ฒ„ํ‚ท์„ ๋งŒ๋“ค๊ณ  ๋ฒ„ํ‚ท ๋ชฉ๋ก์„ ์กฐํšŒํ•œ๋‹ค.

aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucket
aws --endpoint-url=http://localhost:4566 s3 ls

๋น„์Šทํ•œ ์›๋ฆฌ๋กœ SQS๋‚˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค๋„ ๋‹ค ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name my-queue
aws --endpoint-url=http://localhost:4566 sqs list-queues

ํŠน๊ธฐํ•  ์ ์€, ๊ณ„์ • ID๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ณ„์ • ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ๋”ฐ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  API ์ˆ˜์ค€์—์„œ ํ˜ธํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์ƒํ™ฉ์—์„œ๋„, ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์—์„œ๋„ ๋‹น์—ฐํžˆ ํ˜ธํ™˜๋œ๋‹ค.
๋‹ค์Œ์€ ํŒŒ์ด์ฌ์˜ aws sdk๋ฅผ ์‚ฌ์šฉํ•ด์„œ SQS์— ๋ฉ”์„ธ์ง€๋ฅผ ๋„ฃ๊ณ , ์ฝ๊ณ  ์ง€์šฐ๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋‹ค.

์—”๋“œํฌ์ธํŠธ๋งŒ localstack์œผ๋กœ ๊ต์ฒดํ•ด์„œ ๋‚ ๋ฆฌ๋ฉด ์ผ๋ฐ˜ AWS์™€ ๊ฑฐ์˜ ๋™๋“ฑํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.



์ฐธ์กฐ
https://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html
https://github.com/localstack/localstack
https://docs.localstack.cloud/aws/tooling/