Örnek
Şöyle yaparız
version: '3.9'
services:
aws-local:
container_name: aws-local
image: localstack/localstack:1.3
ports:
- "4566:4566"
- "8283:8080"
environment:
- "SERVICES=sqs,sns,secretsmanager"Örnek - volume
Şöyle yaparız
version: "3.8"
services:
localstack:
container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
image: localstack/localstack:0.14.2
network_mode: bridge
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
- "127.0.0.1:53:53" #
- "127.0.0.1:53:53/udp" #
- "127.0.0.1:443:443" #
- "127.0.0.1:4510-4530:4510-4530" # ext services port range
- "127.0.0.1:4571:4571" #
environment:
- DEBUG=${DEBUG-}
- SERVICES=${SERVICES-}
- DATA_DIR=${DATA_DIR-}
- LAMBDA_EXECUTOR=local
- LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY-}
- HOST_TMP_FOLDER=${TMPDIR:-/tmp/}localstack
- DOCKER_HOST=unix:///var/run/docker.sock
- DISABLE_CORS_CHECKS=1
volumes:
- "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"Hangi servislerin çalıştığını görmek için şöyle yaparız
http://localhost:4566/health
Çıktı şöyle. Örneğin S3 çalışıyor
{
"features": {
"initScripts": "initialized"
},
"services": {
"acm": "available",
"apigateway": "available",
"cloudformation": "available",
"cloudwatch": "available",
"config": "available",
"dynamodb": "available",
"dynamodbstreams": "available",
"ec2": "available",
"es": "available",
"events": "available",
"firehose": "available",
"iam": "available",
"kinesis": "available",
"kms": "available",
"lambda": "available",
"logs": "available",
"opensearch": "available",
"redshift": "available",
"resource-groups": "available",
"resourcegroupstaggingapi": "available",
"route53": "available",
"route53resolver": "available",
"s3": "available",
"s3control": "available",
"secretsmanager": "available",
"ses": "available",
"sns": "available",
"sqs": "running",
"ssm": "available",
"stepfunctions": "available",
"sts": "available",
"support": "available",
"swf": "available",
"transcribe": "available"
},
"version": "1.1.1.dev"
}Örnek
Şöyle yaparız. Burada dynamo db için bazı başlangıç scriptleri veriliyor
version: '3.9'
networks:
tasks-network:
driver: bridge
services:
...
tasks-localstack:
image: localstack/localstack:latest
container_name: tasks-localstack
environment:
- DEBUG=0
- SERVICES=dynamodb
- EAGER_SERVICE_LOADING=1
- DYNAMODB_SHARE_DB=1
- AWS_DEFAULT_REGION=ap-southeast-2
- AWS_ACCESS_KEY_ID=DUMMY
- AWS_SECRET_ACCESS_KEY=DUMMY
- DOCKER_HOST=unix:///var/run/docker.sock
ports:
- "4566:4566"
volumes:
- ./utils/docker-volume/localstack:/var/lib/localstack"
- ./utils/docker-volume/dynamodb/items/devices.json:/var/lib/localstack/devices.json
- ./utils/docker-volume/dynamodb/scripts/create-resources.sh:/etc/localstack/init/ready.d/create-resources.sh
- /var/run/docker.sock:/var/run/docker.sock
networks:
- tasks-networkdevices.json şöyle
{
"id": {"S": "123"},
"name": {"S": "Device name"},
"description": {"S": "Device description"},
"status": {"S": "OFF"}
}create-resources.sh şöyle
#!/bin/bash
echo "CREATING DEVICES TABLE..."
awslocal dynamodb create-table \
--table-name Devices \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--billing-mode PAY_PER_REQUEST
echo "DONE!"
echo ""
echo "PUTTING DEVICE ITEM..."
awslocal dynamodb put-item \
--table-name Devices \
--item file:///var/lib/localstack/devices.json
echo "DONE!"init script
Açıklaması şöyle
The volume section specifies a directory on a PC mapped to a directory inside the container. On the container startup the Localstack checks this directory for bash files, and if it finds executes them. It is useful to create resources, configs, etc. This way you write commands once in the bash file and Localstack executes them automatically on a startup, so you don’t need to type the command manually each time you spin up a container.
Örnek
Şöyle yaparız
version: '3.8'
services:
localstack:
image: localstack/localstack
ports:
- '4566:4566' # LocalStack endpoint
environment:
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- ./localstack-script:/etc/localstack/init/ready.d
- '/var/run/docker.sock:/var/run/docker.sock'Örnek
Şöyle yaparız. Burada bir s3 bucket yaratılıyor
version: "3.8"
services:
localstack:
container_name: localstack_main
image: localstack/localstack:latest
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
- "127.0.0.1:4510-4559:4510-4559" # external services port range
environment:
- DEBUG=1
- AWS_ACCESS_KEY_ID=test
- AWS_SECRET_ACCESS_KEY=test
- AWS_DEFAULT_REGION=eu-west-1 # Region where your localstack mocks to be running
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
- ./aws/init-aws.sh:/etc/localstack/init/ready.d/init-aws.shDocker Compose dosyası ile aynı dizinde bulunan aws/init-aws.sh dosyası şöyledir
#!/bin/bash awslocal s3 mb s3://my-test-bucket
Örnek
Şöyle yaparız. Burada init-scripts dizini localstack'e gösteriliyor.
version: '3.8'
services:
localstack:
container_name: localstack
image: localstack/localstack:0.11.6
ports:
- "4566-4599:4566-4599"
environment:
- SERVICES=sqs
volumes:
- ./init-scripts:/docker-entrypoint-initaws.d
init-scripts dizinindeki bir dosya şöyle olsun
#!/bin/bash
echo "########### Setting up localstack profile ###########"
aws configure set aws_access_key_id access_key --profile=localstack
aws configure set aws_secret_access_key secret_key --profile=localstack
aws configure set region sa-east-1 --profile=localstack
echo "########### Setting default profile ###########"
export AWS_DEFAULT_PROFILE=localstack
echo "########### Setting SQS names as env variables ###########"
export SOURCE_SQS=source-sqs
export DLQ_SQS=dlq-sqs
echo "########### Creating DLQ ###########"
aws --endpoint-url=http://localstack:4566 sqs create-queue --queue-name $DLQ_SQS
echo "########### ARN for DLQ ###########"
DLQ_SQS_ARN=$(aws --endpoint-url=http://localstack:4566 sqs get-queue-attributes\
--attribute-name QueueArn --queue-url=http://localhost:4566/000000000000/"$DLQ_SQS"\
| sed 's/"QueueArn"/\n"QueueArn"/g' | grep '"QueueArn"' | awk -F '"QueueArn":' '{print $2}' | tr -d '"' | xargs)
echo "########### Creating Source queue ###########"
aws --profile=localstack --endpoint-url=http://localstack:4566 sqs create-queue --queue-name $SOURCE_SQS \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"'"$DLQ_SQS_ARN"'\",\"maxReceiveCount\":\"2\"}",
"VisibilityTimeout": "10"
}'
echo "########### Listing queues ###########"
aws --endpoint-url=http://localhost:4566 sqs list-queues
echo "########### Listing Source SQS Attributes ###########"
aws --endpoint-url=http://localstack:4566 sqs get-queue-attributes\
--attribute-name All --queue-url=http://localhost:4566/000000000000/"$SOURCE_SQS"
Açıklaması şöyle
This file has a couple of commands, that will be executed sequentially.1. Localstack profile is created2. DLQ is created3. ARN for DLQ is obtained4. Source SQS is created with redrive policy. In the redrive policy ARN for DLQ is specified and maxReciveCount wich tells Source SQS how many times client can receive message before it will be transferred to DLQ. A visibility timeout is set to 10 seconds. More option with explanations can be found here.5. A list of the created queues is returned.6. A list of attributes of a Source queue is returned. It confirms that Source SQS has attributes specified in the creation command.
Hiç yorum yok:
Yorum Gönder