A fully functional local cloud stack
Profile settings for CLI/SDK access to localstack
config
1 2
| [profile localstack] region = ap-southeast-2
|
credentials
1 2 3
| [localstack] aws_access_key_id = test aws_secret_access_key = test
|
Persistence Mechanism
Set the DATA_DIR=${TMPDIR}/localstack/data
environment variable.
1 2 3 4 5 6 7 8 9 10 11 12 13
| version: "3.8" services: localstack: container_name: pky_localstack image: localstack/localstack ports: - "5007:4566" environment: - SERVICES=dynamodb - DATA_DIR=${TMPDIR}/localstack/data - HOST_TMP_FOLDER=${TMPDIR} volumes: - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
|
Dynamodb
- From compose bring up
image: localstack/localstack
. Note that environment:SERVICES
can be comma delimited. Example SERVICES=dynamodb,secretsmanager
1 2 3 4 5 6 7 8 9 10
| localstack: container_name: localstack image: localstack/localstack ports: - "5007:4566" environment: - SERVICES=dynamodb - DEBUG=1 volumes: - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
|
- Use an ephemeral container to provision resources using
image: amazon/aws-cli
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| localstack_resources: container_name: localstack_resources image: amazon/aws-cli environment: - AWS_ACCESS_KEY_ID=test - AWS_SECRET_ACCESS_KEY=test - AWS_DEFAULT_REGION=ap-southeast-2 entrypoint: /bin/sh -c command: > " # Give localstack a chance to sort out its life sleep 15;
echo Provision dynamo db tables Porky-Audits aws dynamodb create-table \ --table-name Porky-Audits \ --attribute-definitions AttributeName=AuditId,AttributeType=S \ --key-schema AttributeName=AuditId,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --endpoint-url=http://localstack:4566; " depends_on: - localstack
|
S3
1 2
| environment: - SERVICES=s3
|
1 2 3 4 5 6
| command: > " echo Provision simple storage aws s3 mb s3://localstack-porky-bucket \ --endpoint-url=http://localstack:4566; "
|
Secrets Manager
1 2
| environment: - SERVICES=secretsmanager
|
1 2 3 4 5 6 7 8
| command: > " echo Provision Secrets manager aws secretsmanager create-secret \ --endpoint-url=http://localstack:4566 \ --name PorkyEncryptionMasterKey \ --secret-string bXlzZWNyZXQ= "
|
SQS
1 2
| environment: - SERVICES=sqs
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| command: > " echo Creating dead letter queue aws sqs create-queue \ --queue-name foo_queue_dlq \ --endpoint-url=http://localstack:4566;
echo Creating simple queue aws sqs create-queue \ --queue-name foo_queue \ --attributes ReceiveMessageWaitTimeSeconds=30 \ --endpoint-url=http://localstack:4566; aws sqs set-queue-attributes \ --queue-url http://localstack:4566/000000000000/foo_queue \ --attributes '{\"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"arn:aws:sqs:ap-southeast-2:000000000000:foo_queue_dlq\\\",\\\"maxReceiveCount\\\":\\\"5\\\"}\"}' \ --endpoint-url=http://localstack:4566; "
|