사용자 도구

사이트 도구


aws:localstack

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
aws:localstack [2021/09/08 16:24]
kwon37xi [localstack 실행 후 초기화]
aws:localstack [2022/03/29 12:49] (현재)
kwon37xi [LocalStack]
줄 6: 줄 6:
   * Python 기반이지만 [[:docker|Docker]]로 모든 서버를 띄울 수 있다.   * Python 기반이지만 [[:docker|Docker]]로 모든 서버를 띄울 수 있다.
   * Unit Test 시에 JUnit 4/5 를 모두 지원하여 자동으로 컨테이너를 띄웠다 내려줄 수 있다.   * Unit Test 시에 JUnit 4/5 를 모두 지원하여 자동으로 컨테이너를 띄웠다 내려줄 수 있다.
-  * [[https://github.com/localstack/awscli-local|localstack/awscli-local: 💲 "awslocal" - Thin wrapper around the "aws" command line interface for use with LocalStack]]+  * [[aws:java_sdk|AWS Java SDK]] 
 +  * [[aws:goaws|goaws]]
  
 ===== Port ===== ===== Port =====
줄 24: 줄 25:
     ports:     ports:
       - "4566:4566"       - "4566:4566"
-      - "4571:4571" 
     environment:     environment:
       - SERVICES=sns,sqs,s3       - SERVICES=sns,sqs,s3
 +      - USE_SINGLE_REGION=1
       - DEFAULT_REGION=ap-northeast-2       - DEFAULT_REGION=ap-northeast-2
       - HOSTNAME=localhost       - HOSTNAME=localhost
 +      - HOSTNAME_EXTERNAL=loaclhost
       - DATA_DIR=/tmp/localstack/data       - DATA_DIR=/tmp/localstack/data
       - DOCKER_HOST=unix:///var/run/docker.sock       - DOCKER_HOST=unix:///var/run/docker.sock
     volumes:     volumes:
-      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"+      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack" # localstack 이 생성하는 파일을 직접 편집하고 싶을 때
       - "./localstack-init.d:/docker-entrypoint-initaws.d"       - "./localstack-init.d:/docker-entrypoint-initaws.d"
       - "/var/run/docker.sock:/var/run/docker.sock"       - "/var/run/docker.sock:/var/run/docker.sock"
 </code> </code>
-  * ''localstack-init.'' 디렉토리에 ''*.sh'' 파일을 둔다.+  * ''localstack-init.'' 디렉토리에 ''*.sh'' 파일을 둔다. 이 파일은 정렬 순서대로 실행되므로 ''00-init.sh'', ''01-create-xxx.sh'' 형태 등으로 만드는 것이 좋다.
   * 해당 파일 안에서 ''awslocal'' 명령으로 ''aws'' 명령을 실행하면 된다.   * 해당 파일 안에서 ''awslocal'' 명령으로 ''aws'' 명령을 실행하면 된다.
 +  * 본인 PC의 ''/tmp'' 혹은 ''/tmp/localstack'' 에 localstack 의 데이터가 저장된다.
 +  * SQS 에 메시지가 쌓일 경우 뜨는 속도가 매우 느려진다 ''/tmp/localstack/data'' 에 있는 SQS 데이터를 지워준다.
 <code sh> <code sh>
 sleep 30 sleep 30
줄 60: 줄 64:
 </code> </code>
  
-===== Web UI ===== +===== localstack-full ===== 
-  * Web UI 는 기본 ''/localstack/localstack'' 에서는 deprecated 되었으며, +  * [[https://hub.docker.com/r/localstack/localstack-full|localstack/localstack-full]] 
-  * [[https://hub.docker.com/r/localstack/localstack-full|localstack/localstack-full]] Docker Image를 사용해야 뜬다.+  * ElasticSearch 등 잘 안쓰는 기능을 추가한 버전 
 +  * WEB UI는 기존에는 ''localstack-full''에서 지원했으나 deprecated 상태였고 최근 버전에서는 아예 지원을 안 하는 것으로 보임.
  
 ===== arn ===== ===== arn =====
줄 70: 줄 75:
   * ''docker-entrypoint-initaws.d/'' volume 에 ''*.sh'' 파일들을 만들고, ''awslocal'' 명령으로 스크립트를 실행하면 된다.   * ''docker-entrypoint-initaws.d/'' volume 에 ''*.sh'' 파일들을 만들고, ''awslocal'' 명령으로 스크립트를 실행하면 된다.
   * docker-compose 의 서비스 이름에 밑줄(''_'') 이 들어있을 경우 올바로 네트워크 접속이 안됐음.   * docker-compose 의 서비스 이름에 밑줄(''_'') 이 들어있을 경우 올바로 네트워크 접속이 안됐음.
 +  * 이후 ''awslocal'' 명령 실행을 위해 shell 진입
 +
 +<code sh>
 +# localstack 은 컨테이너 이름.
 +docker exec -it localstack /bin/bash
 +
 +# 명령실행
 +awslocal ...
 +</code>
 +
 +===== awslocal =====
 +  * [[https://github.com/localstack/awscli-local|localstack/awscli-local: 💲 "awslocal" - Thin wrapper around the "aws" command line interface for use with LocalStack]]
 +<code sh>
 +# user 계정 영역에 설치
 +pip install --user awscli-local
 +</code>
 +  * 설치 없이 [[linux:alias|Linux Alias]] 만으로도 가능하다.
 +<code>
 +alias awslocal="AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_DEFAULT_REGION=${DEFAULT_REGION:-$AWS_DEFAULT_REGION} aws --endpoint-url=http://${LOCALSTACK_HOST:-localhost}:${LOCALSTACK_PORT:-4566}"
 +
 +# 환경변수 DEFAULT_REGION, LOCALSTACK_HOST, LOCALSTACK_PORT 를 지정한다.
 +</code>
 +
 +===== Java SDK 설정 =====
 +  * [[aws:java_sdk|AWS Java SDK]]와 localstack 설정
 +  * credential 은 아무거나 해도 된다.
 +
 +<code java>
 +AWSStaticCredentialsProvider localstackCrendentialProvider =
 +        new AWSStaticCredentialsProvider(new BasicAWSCredentials("anykey", "anysecret"));
 +AwsClientBuilder.EndpointConfiguration localstackEndpointConfiguration =
 +        new AwsClientBuilder.EndpointConfiguration("http://localhost:4566", Regions.AP_NORTHEAST_2.name());
 +
 +AmazonSNS amazonSNS =  AmazonSNSClient
 +    .standard()
 +    .withEndpointConfiguration(localstackEndpointConfiguration)
 +    .withCredentials(localstackCrendentialProvider)
 +    .build();
 +</code>
 +
 +==== S3 ====
 +  * Java SDK 에서 localstack S3 설정은 **''.withPathStyleAccessEnabled(true)''**가 있어야 한다. 안그러면 S3 접속 주소가 ''<버킷이름>.localhost'' 같은 형태가 되어 매번 hosts 파일에 주소를 등록해줘야 한다.
 +
 +<code java>
 +AmazonS3 amazonS3 = AmazonS3ClientBuilder
 +    .standard()
 +    .withEndpointConfiguration(localstackEndpointConfiguration)
 +    .withCredentials(localstackCrendentialProvider)
 +    .withPathStyleAccessEnabled(true)
 +    .build();
 +</code>
  
 ===== 참조 ===== ===== 참조 =====
줄 77: 줄 133:
   * [[https://medium.com/@agneysh/subscribing-sns-to-sqs-on-docker-using-localstack-e4f661747049|Subscribing SNS to SQS on Docker using Localstack | by agneysh mathura | Medium]]   * [[https://medium.com/@agneysh/subscribing-sns-to-sqs-on-docker-using-localstack-e4f661747049|Subscribing SNS to SQS on Docker using Localstack | by agneysh mathura | Medium]]
   * [[https://medium.com/@dudwls96/localstack-%ED%99%9C%EC%9A%A9%ED%95%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0-9b81ec51749c|LocalStack 활용한 AWS 테스트 환경 구성하기. 요즘 클라우드가 대세이고 다양한 클라우드 서비스에 위에 우리는 개발을… | by Paul | Medium]]   * [[https://medium.com/@dudwls96/localstack-%ED%99%9C%EC%9A%A9%ED%95%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0-9b81ec51749c|LocalStack 활용한 AWS 테스트 환경 구성하기. 요즘 클라우드가 대세이고 다양한 클라우드 서비스에 위에 우리는 개발을… | by Paul | Medium]]
 +  * [[https://dev.to/mrwormhole/localstack-with-terraform-and-docker-for-running-aws-locally-3a6d|Localstack with Terraform and Docker for running AWS locally - DEV Community]]
 +  * [[https://spin.atomicobject.com/2020/02/03/localstack-terraform-circleci/|LocalStack + Terraform + CircleCI for Lambda without AWS]]
aws/localstack.1631085895.txt.gz · 마지막으로 수정됨: 2021/09/08 16:24 저자 kwon37xi