문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
aws:localstack [2021/02/22 17:56] kwon37xi [docker-compose] |
aws:localstack [2022/03/29 12:43] kwon37xi |
||
---|---|---|---|
줄 6: | 줄 6: | ||
* Python 기반이지만 [[: | * Python 기반이지만 [[: | ||
* Unit Test 시에 JUnit 4/5 를 모두 지원하여 자동으로 컨테이너를 띄웠다 내려줄 수 있다. | * Unit Test 시에 JUnit 4/5 를 모두 지원하여 자동으로 컨테이너를 띄웠다 내려줄 수 있다. | ||
+ | * | ||
+ | * [[aws: | ||
===== Port ===== | ===== Port ===== | ||
줄 12: | 줄 14: | ||
===== docker-compose ===== | ===== docker-compose ===== | ||
+ | * [[docker: | ||
+ | |||
<code yml> | <code yml> | ||
version: " | version: " | ||
줄 21: | 줄 25: | ||
ports: | ports: | ||
- " | - " | ||
- | - " | ||
environment: | environment: | ||
- SERVICES=sns, | - SERVICES=sns, | ||
+ | - USE_SINGLE_REGION=1 | ||
- DEFAULT_REGION=ap-northeast-2 | - DEFAULT_REGION=ap-northeast-2 | ||
- HOSTNAME=localhost | - HOSTNAME=localhost | ||
+ | - HOSTNAME_EXTERNAL=loaclhost | ||
- DATA_DIR=/ | - DATA_DIR=/ | ||
- DOCKER_HOST=unix:/// | - DOCKER_HOST=unix:/// | ||
volumes: | volumes: | ||
- | - " | + | - " |
+ | - " | ||
- "/ | - "/ | ||
- | setup-localstack: | ||
- | image: mesosphere/ | ||
- | environment: | ||
- | - AWS_ACCESS_KEY_ID=EXAMPLE123 | ||
- | - AWS_SECRET_ACCESS_KEY=EXAMPLE123 | ||
- | - AWS_DEFAULT_REGION=ap-northeast-2 | ||
- | entrypoint: /bin/sh / | ||
- | volumes: | ||
- | - ./ | ||
- | depends_on: | ||
- | - localstack | ||
</ | </ | ||
- | + | | |
- | | + | * 해당 |
+ | * 본인 PC의 ''/ | ||
+ | * SQS 에 메시지가 쌓일 경우 뜨는 속도가 매우 느려진다 ''/ | ||
<code sh> | <code sh> | ||
sleep 30 | sleep 30 | ||
+ | # awslocal 호출 --endpoint-url=http:// | ||
+ | # localstack 은 docker-compose service 이름인데, | ||
+ | # regtion 은 DEFAULT_REGION=ap-northeast-2 으로 자동 지정됨. | ||
+ | |||
echo "## creating topics" | echo "## creating topics" | ||
- | aws sns create-topic --name my-sns | + | awslocal |
echo "## creating queues" | echo "## creating queues" | ||
- | aws sqs create-queue --queue-name my-sqs | + | awslocal |
- | aws sns subscribe --topic-arn arn: | + | awslocal |
--protocol sqs --notification-endpoint http:// | --protocol sqs --notification-endpoint http:// | ||
- | --endpoint-url=http:// | ||
</ | </ | ||
+ | |||
===== Mac OS ===== | ===== Mac OS ===== | ||
<code sh> | <code sh> | ||
줄 63: | 줄 64: | ||
</ | </ | ||
- | ===== Web UI ===== | + | ===== localstack-full |
- | * Web UI 는 기본 ''/ | + | * [[https:// |
- | * [[https:// | + | * ElasticSearch 등 잘 안쓰는 기능을 추가한 버전 |
+ | * WEB UI는 기존에는 '' | ||
===== arn ===== | ===== arn ===== | ||
줄 71: | 줄 73: | ||
===== localstack 실행 후 초기화 ===== | ===== localstack 실행 후 초기화 ===== | ||
- | * [[https:// | + | * '' |
+ | * docker-compose 의 서비스 이름에 밑줄('' | ||
+ | * 이후 '' | ||
+ | <code sh> | ||
+ | # localstack 은 컨테이너 이름. | ||
+ | docker exec -it localstack /bin/bash | ||
+ | |||
+ | # 명령실행 | ||
+ | awslocal ... | ||
+ | </ | ||
+ | |||
+ | ===== awslocal ===== | ||
+ | * [[https:// | ||
+ | <code sh> | ||
+ | # user 계정 영역에 설치 | ||
+ | pip install --user awscli-local | ||
+ | </ | ||
+ | * 설치 없이 [[linux: | ||
+ | < | ||
+ | alias awslocal=" | ||
+ | |||
+ | # 환경변수 DEFAULT_REGION, | ||
+ | </ | ||
+ | |||
+ | ===== Java SDK 설정 ===== | ||
+ | * [[aws: | ||
+ | * credential 은 아무거나 해도 된다. | ||
+ | |||
+ | <code java> | ||
+ | AWSStaticCredentialsProvider localstackCrendentialProvider = | ||
+ | new AWSStaticCredentialsProvider(new BasicAWSCredentials(" | ||
+ | AwsClientBuilder.EndpointConfiguration localstackEndpointConfiguration = | ||
+ | new AwsClientBuilder.EndpointConfiguration(" | ||
+ | |||
+ | AmazonSNS amazonSNS = AmazonSNSClient.builder() | ||
+ | .withEndpointConfiguration(localstackEndpointConfiguration) | ||
+ | .withCredentials(localstackCrendentialProvider) | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== S3 ==== | ||
+ | * Java SDK 에서 localstack S3 설정은 **'' | ||
+ | |||
+ | <code java> | ||
+ | AmazonS3 amazonS3 = AmazonS3ClientBuilder | ||
+ | .standard() | ||
+ | .withEndpointConfiguration(null) | ||
+ | .withCredentials(null) | ||
+ | .withPathStyleAccessEnabled(true) | ||
+ | .build(); | ||
+ | </ | ||
===== 참조 ===== | ===== 참조 ===== | ||
* [[http:// | * [[http:// | ||
+ | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |