[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/