💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!

Overview

Build Status Backers on Open Collective Sponsors on Open Collective Coverage Status Gitter PyPI Version PyPI License Code Climate Twitter

LocalStack - A fully functional local AWS cloud stack

LocalStack

LocalStack provides an easy-to-use test/mocking framework for developing Cloud applications.

Currently, the focus is primarily on supporting the AWS cloud stack.

Announcements

  • 2020-12-28: Check out the LocalStack Pro feature roadmap here: https://roadmap.localstack.cloud - please help us prioritize our backlog by creating and upvoting feature requests. Looking forward to getting your feedback!
  • 2020-09-15: A major (breaking) change has been merged in PR #2905 - starting with releases after v0.11.5, all services are now exposed via the edge service (port 4566) only! Please update your client configurations to use this new endpoint.
  • 2019-10-09: LocalStack Pro is out! We're incredibly excited to announce the launch of LocalStack Pro - the enterprise version of LocalStack with additional APIs and advanced features. Check out the free trial at https://localstack.cloud
  • 2018-01-10: Help wanted! Please fill out this survey to support a research study on the usage of Serverless and Function-as-a-Service (FaaS) services, conducted at the Chalmers University of Technology. The survey only takes 5-10 minutes of your time. Many thanks for your participation!!
    • The result from this study can be found here
  • 2017-08-27: We need your support! LocalStack is growing fast, we now have thousands of developers using the platform regularly. Last month we have recorded a staggering 100k test runs, with 25k+ DynamoDB tables, 20k+ SQS queues, 15k+ Kinesis streams, 13k+ S3 buckets, and 10k+ Lambda functions created locally - for 0$ costs (more details to be published soon). Bug and feature requests are pouring in, and we now need some support from you to keep the open-source version actively maintained. Please check out Open Collective and become a backer or supporter of the project today! Thanks, everybody for contributing.
  • 2017-07-20: Please note: Starting with version 0.7.0, the Docker image will be pushed and kept up to date under the new name localstack/localstack. (This means that you may have to update your CI configurations.) Please refer to the updated End-User License Agreement (EULA) for the new versions. The old Docker image (atlassianlabs/localstack) is still available but will not be maintained any longer.

Overview

LocalStack spins up the following core Cloud APIs on your local machine.

Note: Starting with version 0.11.0, all APIs are exposed via a single edge service, which is accessible on http://localhost:4566 by default (customizable via EDGE_PORT, see further below).

  • ACM
  • API Gateway
  • CloudFormation
  • CloudWatch
  • CloudWatch Logs
  • DynamoDB
  • DynamoDB Streams
  • EC2
  • Elasticsearch Service
  • EventBridge (CloudWatch Events)
  • Firehose
  • IAM
  • Kinesis
  • KMS
  • Lambda
  • Redshift
  • Route53
  • S3
  • SecretsManager
  • SES
  • SNS
  • SQS
  • SSM
  • StepFunctions
  • STS

In addition to the above, the Pro version of LocalStack supports additional APIs and advanced features, including:

  • Amplify
  • API Gateway V2 (WebSockets support)
  • AppSync
  • Athena
  • Batch
  • CloudFront
  • CloudTrail
  • Cognito
  • ECS/ECR/EKS
  • ElastiCache
  • EMR
  • Glacier / S3 Select
  • IAM Security Policy Enforcement
  • IoT
  • Kinesis Data Analytics
  • Lambda Layers & Container Images
  • Managed Streaming for Kafka (MSK)
  • MediaStore
  • Neptune Graph DB
  • QLDB
  • RDS / Aurora Serverless
  • Timestream
  • Transfer
  • XRay
  • Advanced persistence support for most services
  • Interactive UIs to manage resources
  • Test report dashboards
  • ...and much, much more to come! (Check out our feature roadmap here: https://roadmap.localstack.cloud)

Requirements

  • python (both Python 2.x and 3.x supported)
  • pip (python package manager)
  • Docker

Installing

The easiest way to install LocalStack is via pip:

pip install localstack

Note: Please do not use sudo or the root user - LocalStack should be installed and started entirely under a local non-root user. If you have problems with permissions in MacOS X Sierra, install with pip install --user localstack

Running

By default, LocalStack gets started inside a Docker container using this command:

localstack start

(Note that on MacOS you may have to run TMPDIR=/private$TMPDIR localstack start --docker if $TMPDIR contains a symbolic link that cannot be mounted by Docker.)

Note: From 2020-07-11 onwards, the default image localstack/localstack in Docker Hub refers to the "light version", which has some large dependency files like Elasticsearch removed (and lazily downloads them, if required). (Note that the localstack/localstack-light image alias may get removed in the future). In case you need the full set of dependencies, the localstack/localstack-full image can be used instead. Please also refer to the USE_LIGHT_IMAGE configuration below.

Note: By default, LocalStack uses the image tagged latest that is cached on your machine, and will not pull the latest image automatically from Docker Hub (i.e., the image needs to be pulled manually if needed).

(Note: Although it is strongly recommended to use Docker, the infrastructure can also be spun up directly on the host machine using the --host startup flag. Note that this will require additional dependencies, and is not supported on some operating systems, including Windows.)

Using docker

You can also use docker directly and use the following command to get started with localstack

docker run --rm -p 4566:4566 -p 4571:4571 localstack/localstack

to run a throw-away container without any external volumes. To start a subset of services use -e "SERVICES=dynamodb,s3".

Using docker-compose

You can also use the docker-compose.yml file from the repository and use this command (currently requires docker-compose version 1.9.0+):

docker-compose up

(Note that on MacOS you may have to run TMPDIR=/private$TMPDIR docker-compose up if $TMPDIR contains a symbolic link that cannot be mounted by Docker.)

To facilitate interoperability, configuration variables can be prefixed with LOCALSTACK_ in docker. For instance, setting LOCALSTACK_SERVICES=s3 is equivalent to SERVICES=s3.

Using Helm

You can use Helm to install LocalStack in a Kubernetes cluster by running these commands (the Helm charts are maintained in this repo):

helm repo add localstack-repo http://helm.localstack.cloud

helm upgrade --install localstack localstack-repo/localstack

Configurations

You can pass the following environment variables to LocalStack:

  • EDGE_PORT: Port number for the edge service, the main entry point for all API invocations (default: 4566).

  • SERVICES: Comma-separated list of service names (APIs) to start up. Service names basically correspond to the service names of the AWS CLI (kinesis, lambda, sqs, etc), although LocalStack only supports a subset of them. Example value: kinesis,lambda,sqs to start Kinesis, Lambda, and SQS. In addition, the following shorthand values can be specified to run a predefined ensemble of services:

    • serverless: run services often used for Serverless apps (iam, lambda, dynamodb, apigateway, s3, sns)
  • DEFAULT_REGION: AWS region to use when talking to the API (default: us-east-1).

  • HOSTNAME: Name of the host to expose the services internally (default: localhost). Use this to customize the framework-internal communication, e.g., if services are started in different containers using docker-compose.

  • HOSTNAME_EXTERNAL: Name of the host to expose the services externally (default: localhost). This host is used, e.g., when returning queue URLs from the SQS service to the client.

  • <SERVICE>_PORT_EXTERNAL: Port number to expose a specific service externally (defaults to service ports above). SQS_PORT_EXTERNAL, for example, is used when returning queue URLs from the SQS service to the client.

  • IMAGE_NAME: Specific name and tag of LocalStack Docker image to use, e.g., localstack/localstack:0.11.0 (default: localstack/localstack).

  • USE_LIGHT_IMAGE: Whether to use the light-weight Docker image (default: 1). Overwritten by IMAGE_NAME.

  • KINESIS_ERROR_PROBABILITY: Decimal value between 0.0 (default) and 1.0 to randomly inject ProvisionedThroughputExceededException errors into Kinesis API responses.

  • KINESIS_SHARD_LIMIT: Integer value (default: 100) or Infinity (to disable), causing the Kinesis API to start throwing exceptions to mimick the default shard limit.

  • KINESIS_LATENCY: Integer value (default: 500) or 0 (to disable), causing the Kinesis API to delay returning a response in order to mimick latency from a live AWS call.

  • DYNAMODB_ERROR_PROBABILITY: Decimal value between 0.0 (default) and 1.0 to randomly inject ProvisionedThroughputExceededException errors into DynamoDB API responses.

  • DYNAMODB_HEAP_SIZE: Sets the JAVA EE maximum memory size for dynamodb values are (integer)m for MB, (integer)G for GB default(256m), full table scans require more memory

  • STEPFUNCTIONS_LAMBDA_ENDPOINT: URL to use as the Lambda service endpoint in Step Functions. By default this is the LocalStack Lambda endpoint. Use default to select the original AWS Lambda endpoint.

  • LAMBDA_EXECUTOR: Method to use for executing Lambda functions. Possible values are:

    • local: run Lambda functions in a temporary directory on the local machine
    • docker: run each function invocation in a separate Docker container
    • docker-reuse: create one Docker container per function and reuse it across invocations

    For docker and docker-reuse, if LocalStack itself is started inside Docker, then the docker command needs to be available inside the container (usually requires to run the container in privileged mode). Default is docker, fallback to local if Docker is not available.

  • LAMBDA_REMOTE_DOCKER determines whether Lambda code is copied or mounted into containers. Possible values are:

    • true (default): your Lambda function definitions will be passed to the container by copying the zip file (potentially slower). It allows for remote execution, where the host and the client are not on the same machine.
    • false: your Lambda function definitions will be passed to the container by mounting a volume (potentially faster). This requires to have the Docker client and the Docker host on the same machine. Also, HOST_TMP_FOLDER must be set properly, and a volume mount like ${HOST_TMP_FOLDER}:/tmp/localstack needs to be configured if you're using docker-compose.
  • LAMBDA_DOCKER_NETWORK: Optional Docker network for the container running your lambda function.

  • LAMBDA_DOCKER_DNS: Optional DNS server for the container running your lambda function.

  • LAMBDA_CONTAINER_REGISTRY Use an alternative docker registry to pull lambda execution containers (default: lambci/lambda).

  • LAMBDA_REMOVE_CONTAINERS: Whether to remove containers after Lambdas finished executing (default: true).

  • TMPDIR: Temporary folder inside the LocalStack container (default: /tmp).

  • HOST_TMP_FOLDER: Temporary folder on the host that gets mounted as $TMPDIR/localstack into the LocalStack container. Required only for Lambda volume mounts when using LAMBDA_REMOTE_DOCKER=false.

  • DATA_DIR: Local directory for saving persistent data (currently only supported for these services: Kinesis, DynamoDB, Elasticsearch, S3, Secretsmanager, SSM, SQS, SNS). Set it to /tmp/localstack/data to enable persistence (/tmp/localstack is mounted into the Docker container), leave blank to disable persistence (default).

  • PORT_WEB_UI: Port for the Web user interface / dashboard (default: 8080). Note that the Web UI is now deprecated (needs to be activated with START_WEB=1), and requires to use the localstack/localstack-full Docker image.

  • <SERVICE>_BACKEND: Custom endpoint URL to use for a specific service, where <SERVICE> is the uppercase service name (currently works for: APIGATEWAY, CLOUDFORMATION, DYNAMODB, ELASTICSEARCH, KINESIS, S3, SNS, SQS). This allows to easily integrate third-party services into LocalStack.

  • FORCE_NONINTERACTIVE: when running with Docker, disables the --interactive and --tty flags. Useful when running headless.

  • DOCKER_FLAGS: Allows to pass custom flags (e.g., volume mounts) to "docker run" when running LocalStack in Docker.

  • DOCKER_CMD: Shell command used to run Docker containers, e.g., set to "sudo docker" to run as sudo (default: docker).

  • SKIP_INFRA_DOWNLOADS: Whether to skip downloading additional infrastructure components (e.g., specific Elasticsearch versions).

  • START_WEB: Flag to control whether the Web UI should be started in Docker (default: false; deprecated).

  • LAMBDA_FALLBACK_URL: Fallback URL to use when a non-existing Lambda is invoked. Either records invocations in DynamoDB (value dynamodb://<table_name>) or forwards invocations as a POST request (value http(s)://...).

  • LAMBDA_FORWARD_URL: URL used to forward all Lambda invocations (useful to run Lambdas via an external service).

  • EXTRA_CORS_ALLOWED_HEADERS: Comma-separated list of header names to be be added to Access-Control-Allow-Headers CORS header

  • EXTRA_CORS_EXPOSE_HEADERS: Comma-separated list of header names to be be added to Access-Control-Expose-Headers CORS header

  • LAMBDA_JAVA_OPTS: Allow passing custom JVM options (e.g., -Xmx512M) to Java Lambdas executed in Docker. Use _debug_port_ placeholder to configure the debug port (e.g., -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=_debug_port_).

  • MAIN_CONTAINER_NAME: Specify the main docker container name (default: localstack_main).

  • INIT_SCRIPTS_PATH: Specify the path to the initializing files with extensions .sh that are found default in /docker-entrypoint-initaws.d.

  • DEBUG: For troubleshooting LocalStack start issues

  • LS_LOG: Specify the log level('trace', 'debug', 'info', 'warn', 'error', 'warning') currently overrides the DEBUG configuration. Enable LS_LOG=trace to print detailed request/response messages.

The following environment configurations are deprecated:

  • USE_SSL: Whether to use https://... URLs with SSL encryption (default: false). Deprecated as of version 0.11.3 - each service endpoint now supports multiplexing HTTP/HTTPS traffic over the same port.

Additionally, the following read-only environment variables are available:

  • LOCALSTACK_HOSTNAME: Name of the host where LocalStack services are available. Use this hostname as endpoint (e.g., http://${LOCALSTACK_HOSTNAME}:4566) in order to access the services from within your Lambda functions (e.g., to store an item to DynamoDB or S3 from a Lambda).

An example passing the above environment variables to LocalStack to start Kinesis, Lambda, Dynamodb and SQS:

SERVICES=kinesis,lambda,sqs,dynamodb localstack start

Verifying your docker-compose configuration using the command line

You can use the localstack config validate command to check for common mis-configurations.

By default it validates docker-compose.yml, the target file can be specified using the --file argument, e.g.,:

localstack config validate --file=localstack-docker-compose.yml

Dynamically updating configuration at runtime

Each of the service APIs listed above defines a backdoor API under the path /?_config_ which allows to dynamically update configuration variables defined in config.py.

For example, to dynamically set KINESIS_ERROR_PROBABILITY=1 at runtime, use the following command:

curl -v -d '{"variable":"KINESIS_ERROR_PROBABILITY","value":1}' 'http://localhost:4566/?_config_'

Service health checks

The service /health check endpoint on the edge port (http://localhost:4566/health by default) provides basic information about the status of each service (e.g., {"s3":"running","es":"starting"}). By default, the endpoint returns cached values that are determined during startup - the status values can be refreshed by adding the reload query parameter: http://localhost:4566/health?reload.

Initializing a fresh instance

When a container is started for the first time, it will execute files with extensions .sh that are found in /docker-entrypoint-initaws.d or an alternate path defined in INIT_SCRIPTS_PATH. Files will be executed in alphabetical order. You can easily create aws resources on localstack using awslocal (or aws) cli tool in the initialization scripts.

Using custom SSL certificates

To use your own SSL certificate instead of the randomly generated certificate, you can place a file server.test.pem into the LocalStack temporary directory ($TMPDIR/localstack, or /tmp/localstack by default). The file server.test.pem must contain the key file, as well as the certificate file content:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Using custom SSL certificates with docker-compose

Typically with docker-compose you can add into docker-compose.yml this volume to the LocalStack services :

  volumes:
    - "${PWD}/ls_tmp:/tmp/localstack"
    - "/var/run/docker.sock:/var/run/docker.sock"

The local directory /ls_tmp must contains the three files (server.test.pem, server.test.pem.crt, server.test.pem.key)

Accessing the infrastructure via CLI or code

You can point your aws CLI to use the local infrastructure, for example:

aws --endpoint-url=http://localhost:4566 kinesis list-streams
{
    "StreamNames": []
}

Use the below command to install aws CLI, if not installed already.

pip install awscli

Setting up local region and credentials to run LocalStack

aws requires the region and the credentials to be set in order to run the aws commands. Create the default configuration & the credentials. Below key will ask for the Access key id, secret Access Key, region & output format.

aws configure --profile default

# Config & credential file will be created under ~/.aws folder

NOTE: Please use test as Access key id and secret Access Key to make S3 presign url work. We have added presign url signature verification algorithm to validate the presign url and its expiration. You can configure credentials into the system environment using export command in the linux/Mac system. You also can add credentials in ~/.aws/credentials file directly.

export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test

NEW: Check out awslocal, a thin CLI wrapper that runs commands directly against LocalStack (no need to specify --endpoint-url anymore). Install it via pip install awscli-local, and then use it as follows:

awslocal kinesis list-streams
{
    "StreamNames": []
}

UPDATE: Use the environment variable $LOCALSTACK_HOSTNAME to determine the target host inside your Lambda function. See Configurations section for more details.

Using the official AWS CLI version 2 Docker image with Localstack Docker container

By default the container running amazon/aws-cli is isolated from 0.0.0.0:4566 on the host machine, that means that aws-cli cannot reach localstack through your shell.

To ensure that the two docker containers can communicate create a network on the docker engine:

$ ▶ docker network create localstack
0c9cb3d37b0ea1bfeb6b77ade0ce5525e33c7929d69f49c3e5ed0af457bdf123

Then modify the docker-compose.yml specifying the network to use:

networks:
  default:
    external:
      name: "localstack"

Run AWS Cli v2 docker container using this network (example):

$ ▶ docker run --network localstack --rm -it amazon/aws-cli --endpoint-url=http://localstack:4566 lambda list-functions
{
    "Functions": []
}

If you use AWS CLI v2 from a docker container often, create an alias:

$ ▶ alias laws='docker run --network localstack --rm -it amazon/aws-cli --endpoint-url=http://localstack:4566'

So you can type:

$ ▶ laws lambda list-functions
{
    "Functions": []
}

Client Libraries

Invoking API Gateway

While API Gateway endpoints on AWS use a custom DNS name to identify the API ID (e.g., https://nmafetnwf6.execute-api.us-east-1.amazonaws.com/prod/my/path), LocalStack uses the special URL path indicator .../_user_request_/... to indicate the execution of a REST API method.

The URL pattern for API Gateway executions is http://localhost:4566/restapis/<apiId>/<stage>/_user_request_/<methodPath>. The example URL above would map to the following localhost URL:

$ curl http://localhost:4566/restapis/nmafetnwf6/prod/_user_request_/my/path

Integration with nosetests

If you want to use LocalStack in your integration tests (e.g., nosetests), simply fire up the infrastructure in your test setup method and then clean up everything in your teardown method:

from localstack.services import infra

def setup():
    infra.start_infra(asynchronous=True)

def teardown():
    infra.stop_infra()

def my_app_test():
    # here goes your test logic

See the example test file tests/integration/test_integration.py for more details.

Integration with Serverless

You can use the serverless-localstack plugin to easily run Serverless applications on LocalStack. For more information, please check out the plugin repository here: https://github.com/localstack/serverless-localstack

Integration with Terraform

You can use Terraform to provision your resources locally. Please refer to the Terraform AWS Provider docs here on how to configure the API endpoints on localhost.

Using local code with Lambda

In order to mount a local folder, ensure that LAMBDA_REMOTE_DOCKER is set to false then set the S3 bucket name to __local__ and the S3 key to your local path:

awslocal lambda create-function --function-name myLambda \
    --code S3Bucket="__local__",S3Key="/my/local/lambda/folder" \
    --handler index.myHandler \
    --runtime nodejs8.10 \
    --role whatever

Note: When using LAMBDA_REMOTE_DOCKER=false, make sure to properly set the HOST_TMP_FOLDER environment variable for the LocalStack container (see Configuration section above).

Integration with Java/JUnit

In order to use LocalStack with Java, the project ships with a simple JUnit runner, see sample below.

...
import cloud.localstack.LocalstackTestRunner;
import cloud.localstack.TestUtils;
import cloud.localstack.docker.annotation.LocalstackDockerProperties;

@RunWith(LocalstackTestRunner.class)
@LocalstackDockerProperties(services = { "s3", "sqs", "kinesis:77077" })
public class MyCloudAppTest {

  @Test
  public void testLocalS3API() {
    AmazonS3 s3 = TestUtils.getClientS3()
    List<Bucket> buckets = s3.listBuckets();
    ...
  }
}

For more details and a complete list of configuration parameters, please refer to the LocalStack Java Utils repository.

Troubleshooting

  • If you're using AWS Java libraries with Kinesis, please, refer to CBOR protocol issues with the Java SDK guide how to disable CBOR protocol which is not supported by kinesalite.

  • Accessing local S3: To avoid domain name resolution issues, you need to enable path style access on your S3 SDK client. Most AWS SDKs provide a config to achieve that, e.g., for Java:

s3.setS3ClientOptions(S3ClientOptions.builder().setPathStyleAccess(true).build());
// There is also an option to do this if you're using any of the client builder classes:
AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
builder.withPathStyleAccessEnabled(true);
...
  • Mounting the temp. directory: Note that on MacOS you may have to run TMPDIR=/private$TMPDIR docker-compose up if $TMPDIR contains a symbolic link that cannot be mounted by Docker. (See details here: https://bitbucket.org/atlassian/localstack/issues/40/getting-mounts-failed-on-docker-compose-up)

  • If you're seeing Lambda errors like Cannot find module ... when using LAMBDA_REMOTE_DOCKER=false, make sure to properly set the HOST_TMP_FOLDER environment variable and mount the temporary folder from the host into the LocalStack container.

  • If you run into file permission issues on pip install under Mac OS (e.g., Permission denied: '/Library/Python/2.7/site-packages/six.py'), then you may have to re-install pip via Homebrew (see this discussion thread). Alternatively, try installing with the --user flag: pip install --user localstack

  • If you are deploying within OpenShift, please be aware: the pod must run as root, and the user must have capabilities added to the running pod, in order to allow Elasticsearch to be run as the non-root localstack user.

  • If you are experiencing slow performance with Lambdas in Mac OS, you could either (1) try mounting local code directly into the Lambda container, or (2) disable mounting the temporary directory into the LocalStack container in docker-compose. (See also https://github.com/localstack/localstack/issues/2515)

  • The environment variable no_proxy is rewritten by LocalStack. (Internal requests will go straight via localhost, bypassing any proxy configuration).

  • For troubleshooting LocalStack start issues, you can check debug logs by running DEBUG=1 localstack start

  • In case you get errors related to node/nodejs, you may find (this issue comment: https://github.com/localstack/localstack/issues/227#issuecomment-319938530) helpful.

  • If you are using AWS Java libraries and need to disable SSL certificate checking, add -Dcom.amazonaws.sdk.disableCertChecking to the java invocation.

Developing

Requirements for developing or starting locally

To develop new features, or to start the stack locally (outside of Docker), the following additional tools are required:

  • make
  • npm (node.js package manager)
  • java/javac (Java 8 runtime environment and compiler)
  • mvn (Maven, the build system for Java)
  • moto(for testing)
  • docker-compose (for running the localstack using docker-compose)
  • mock (for unit testing)
  • pytest (for unit testing)
  • pytest-cov (to check the unit-testing coverage)

Development Environment

If you pull the repo in order to extend/modify LocalStack, run this command to install all the dependencies:

make install

This will install the required pip dependencies in a local Python virtualenv directory .venv (your global python packages will remain untouched), as well as some node modules in ./localstack/node_modules/. Depending on your system, some pip/npm modules may require additional native libs installed.

The Makefile contains a target to conveniently run the local infrastructure for development:

make infra

Starting LocalStack using Vagrant (Centos 8)

This is similar to make docker-mount-run, but instead of docker centos VM will be started and source code will be mounted inside.

Pre-requirements
  • Vagrant
  • vagrant plugin install vagrant-vbguest
Starting Vagrant
  • make vagrant-start (be ready to provide system password)
Using Vagrant
  • vagrant ssh
  • sudo -s
  • cd /localstack
  • SERVICES=dynamodb DEBUG=1 make docker-mount-run
Stopping Vagrant
  • make vagrant-stop or vagrant halt
Deleting Vagrant VM
  • vagrant destroy

Check out the developer guide which contains a few instructions on how to get started with developing (and debugging) features for LocalStack.

Testing

The project contains a set of unit and integration tests that can be kicked off via a make target:

make test

To check the Code Coverage

Once the new feature / bug fix is done, run the unit testing and check for the coverage.

# To run the particular test file (sample)
pytest --cov=localstack tests/unit/test_common.py

# To check the coverage in the console
coverage report

# To check the coverage as html (output will be redirected to the html folder)
coverage html

Web Dashboard (deprecated)

The projects also comes with a simple Web dashboard that allows to view the deployed AWS components and the relationship between them.

localstack web

Please note that the Web UI requires using the extended version of the Docker image (localstack/localstack-full).

Note: The Web dashboard is not actively maintained anymore and may get removed in an upcoming release.

Other UI Clients

Change Log

Please refer to CHANGELOG.md to see the complete list of changes for each release.

Contributing

We welcome feedback, bug reports, and pull requests!

For pull requests, please stick to the following guidelines:

  • Add tests for any new features and bug fixes. Ideally, each PR should increase the test coverage.
  • Follow the existing code style (e.g., indents). A PEP8 code linting target is included in the Makefile.
  • Put a reasonable amount of comments into the code.
  • Fork localstack on your github user account, do your changes there and then create a PR against main localstack repository.
  • Separate unrelated changes into multiple pull requests.
  • 1 commit per PR: Please squash/rebase multiple commits into one single commit (to keep the history clean).

Please note that by contributing any code or documentation to this repository (by raising pull requests, or otherwise) you explicitly agree to the Contributor License Agreement.

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Stargazers over time

Stargazers over time

License

Copyright (c) 2017-2020 LocalStack maintainers and contributors.

Copyright (c) 2016 Atlassian and others.

This version of LocalStack is released under the Apache License, Version 2.0 (see LICENSE.txt). By downloading and using this software you agree to the End-User License Agreement (EULA).

We build on a number of third-party software tools, including the following:

Third-Party software License
Python/pip modules:
airspeed BSD License
amazon_kclpy Amazon Software License
boto3 Apache License 2.0
coverage Apache License 2.0
docopt MIT License
elasticsearch Apache License 2.0
flask BSD License
flask_swagger MIT License
jsonpath-rw Apache License 2.0
moto Apache License 2.0
requests Apache License 2.0
subprocess32 PSF License
Node.js/npm modules:
kinesalite MIT License
Other tools:
Elasticsearch Apache License 2.0
local-kms MIT License
Comments
  • Support for aarch64/ARMv8/ARM64 architecture with Docker

    Support for aarch64/ARMv8/ARM64 architecture with Docker

    Type of request: This is a ...

    [ ] bug report [X ] feature request

    Detailed description

    Currently, on docker hub the only architecture supported is linux/amd64. I think ARM architecture will be more implemented in the next future, both in consumer and business environment. Nowadays, we can see most of the open-source software have ARM binaries and cloud computing companies like AWS are investing in this architecture.

    Expected behavior

    I'll be glad if it would be possibile to have the Docker image compatible with ARM architecture.

    Actual behavior

    No docker image for ARM architecture.

    Thank you

    ┆Issue is synchronized with this Jira Bug by Unito

    type: enhancement area: docker 
    opened by mirobertod 49
  • implement new HTTP request handling framework

    implement new HTTP request handling framework

    Summary

    This PR adds an HTTP request handling framework based on the chain of responsibility pattern, where requests are processed by Handlers that are part of a Handler Chain. This framework replaces the edge proxy, generic proxy, and http2_server. It provides a clean interface for serving a Gateway (a request -response interface) through ASGI or WSGI.

    The behavior of LocalStack is implemented in the LocalstackGateway, and can be served directly through hypercorn (try python -m localstack.aws.app for serving it directly without bootstrapping)

    It can be enabled by setting LEGACY_EDGE_PROXY=0.

    The current version only works for community. Pro integration will be done in a second iteration (pro test failures are expected). A proper developer documentation will be provided then.

    PRs

    The following PRs were the result of the changes developed in this PR.

    • #5478
    • #5734
    • #5876
    • #5970
    • #6040
    • #6006
    • #6012
    • #6190
    • #6191
    • #6192
    • ... and many other fixes and extensions in the asf code, many of which @alexrashed has contributed

    Tasks

    • [x] Implement new HTTP request handling (while not breaking the previous functionality).
    • [x] Migrate current features of the edge proxy (service detection,...) into separate handlers.
    • [x] Fix all community integration tests with the new request handling enabled.
    • [x] Hide the new functionality behind a feature flag (opt-in).
    • [x] Make the PR smaller by pulling out sub-PRs for dependent changes in master
    • [x] Add documentation for the handler chain framework
    • [x] Final polishing iteration
    • [x] PR review
    • [x] change default value of LEGACY_EDGE_PROXY back to 1 and run one last test
    aws:apigateway aws:sns 
    opened by thrau 43
  • Failure to restart docker container with DATA_DIR defined and sqs

    Failure to restart docker container with DATA_DIR defined and sqs

    Type of request: This is a ...

    [x] bug report [ ] feature request

    Detailed description

    I am running localstack container using docker-compose with a volume mounted and DATA_DIR defined. I can get the multiple containers up and running from a clean configuration, but encounter problems after restarting. I encountered the problems when using services sqs+dynamodb.

    Reproduced with localstack/localstack 0.12.5 and latest. macOS Catalina 10.15.7 Docker Engine v20.10.2

    Please let me know if there is some additional logging I can supply, or if I should try for a minimal reproduction with a manual copy of a problematic recorded_api_calls.json file.

    Expected behavior

    Consistently able to launch services, multiple times.

    Actual behavior

    On the second launch, so the persistent data volume has contents, localstack does not come up and displays:

    Waiting for all LocalStack services to be ready
    Waiting for all LocalStack services to be ready
    Waiting for all LocalStack services to be ready
    ...
    

    Steps to reproduce

    After the failure occurs (when I also had dynamodb enabled), the problem can be reproduced with just sqs and launching using a simple docker-compose.yml file:

    version: '2.4'
    services:
      localstack:
        image: localstack/localstack:latest
        environment:
          - SERVICES=sqs
          - DATA_DIR=/mnt/data
        ports:
          - '4566:4566'
        volumes:
          # Persistent data
          - type: volume
            source: localstack-data
            target: /mnt/data
    volumes:
      localstack-data:
    

    Launch with docker-compose up localstack loops indefinitely waiting for services to be ready.

    Connecting to the container and deleting recorded_api_calls.json from DATA_DIR fixes the problem for the next launch.

    Command used to start LocalStack

    docker-compose up 
    
    opened by shadowspawn 40
  • Service

    Service "s3" not yet available, retrying...

    Hello there

    After installing localstack and trying to start several services on my machine, s3 always failed to start The command I am using to start them up is

    SERVICES=sqs,sns,s3,lambda DEBUG=1 localstack start (With DEBUG=1 in place already for debugging)

    First few lines of the output are:

    2018-06-19T10:05:57:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:00:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:05:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:08:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:12:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:15:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:19:WARNING:infra.py: Service "s3" not yet available, retrying...
    2018-06-19T10:06:22:ERROR:localstack.services.s3.s3_starter: S3 health check failed: An error occurred (ExpiredToken) when calling the AssumeRole operation: The security token included in the request is expired Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/localstack/services/infra.py", line 344, in check_infra
        raise e
      File "/usr/local/lib/python3.6/site-packages/localstack/services/infra.py", line 341, in check_infra
        plugin.check(expect_shutdown=expect_shutdown, print_error=print_error)
      File "/usr/local/lib/python3.6/site-packages/localstack/services/infra.py", line 80, in check
        return self.check_function(expect_shutdown=expect_shutdown, print_error=print_error)
      File "/usr/local/lib/python3.6/site-packages/localstack/services/s3/s3_starter.py", line 23, in check_s3
        assert isinstance(out['Buckets'], list)
    TypeError: 'NoneType' object is not subscriptable
    
    During handling of the above exception, another exception occurred:
    ...
    

    I have been trying to tackle this problem for a few hours already, without any success, I tried the latest verion of localstack as well as 0.8.6.1 which works on another machine

    I am installing it trough pip (pip install localstack)

    Thanks for any help in advance!

    ┆Issue is synchronized with this Jira Bug by Unito

    priority: high status: triage needed area: configuration status: resolved/fixed area: networking aws:s3 
    opened by virpo 39
  • Cloudformation create-stack fails

    Cloudformation create-stack fails

    When attempting to create a cloudformation stack with the following aws cli command

    $ aws cloudformation create-stack --stack-name foo --template-body file://s3.json --endpoint-url http://localhost:4581
    

    I receive the following error

    2017-11-02T15:45:03:ERROR:localstack.services.generic_proxy: Error forwarding request: An error occurred (ValidationError) when calling the DescribeStackResources operation: Stack with id foo does not exist Traceback (most recent call last):
      File "/opt/code/localstack/localstack/services/generic_proxy.py", line 185, in forward
        path=path, data=data, headers=forward_headers, response=response)
      File "/opt/code/localstack/localstack/services/cloudformation/cloudformation_listener.py", line 181, in return_response
        template_deployer.deploy_template(template, req_data.get('StackName')[0])
      File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 484, in deploy_template
        stack_resources = describe_stack_resources(stack_name, resource_id)
      File "/opt/code/localstack/localstack/utils/cloudformation/template_deployer.py", line 218, in describe_stack_resources
        resources = client.describe_stack_resources(StackName=stack_name, LogicalResourceId=logical_resource_id)
      File "/opt/code/localstack/.venv/lib/python2.7/site-packages/botocore/client.py", line 310, in _api_call
        return self._make_api_call(operation_name, kwargs)
      File "/opt/code/localstack/.venv/lib/python2.7/site-packages/botocore/client.py", line 599, in _make_api_call
        raise error_class(parsed_response, operation_name)
    ClientError: An error occurred (ValidationError) when calling the DescribeStackResources operation: Stack with id foo does not exist
    

    After inspecting the code in the return_response function, it appears that this block

    elif action == 'CreateStack' or action == 'UpdateStack':
                    # run the actual deployment
                    template = template_deployer.template_to_json(req_data.get('TemplateBody')[0])
                    template_deployer.deploy_template(template, req_data.get('StackName')[0])
                    if response.status_code >= 400:
                        return make_response(action)
    

    calls the deploy_template function regardless whether action == 'CreateStack' or action == 'UpdateStack'. So if the action is 'CreateStack', the following block

    for resource_id, resource in iteritems(next):
                stack_resources = describe_stack_resources(stack_name, resource_id)
                resource['__details__'] = stack_resources[0]
    

    in the deploy_template function attempts to describe_stack_resources of a nonexistent stack which appears to be the cause of the error.

    type: bug priority: high status: triage needed 
    opened by mathewmarcus 36
  • Dashboard does not work

    Dashboard does not work

    Run localstack through docker.

    sudo docker run -it -p 4567-4578:4567-4578 -p 8080:8080 localstack/localstack
    

    I have put some objects into s3.

    $ aws s3 ls foo.bucket
    2019-06-22 15:15:02         11 bar.key
    

    But the dashboard is still empty. The dashboard keeps empty even if I add lambda functions and more objects.

    type: question priority: high status: triage needed 
    opened by FighterNan 35
  • Cannot install localstack on Windows 10

    Cannot install localstack on Windows 10

    I got error when installing localstack by pip install localstack. Here is error: Command "e:\project\aaa\venv\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\nthienan\\AppData\\Local\\Temp\\pip-build-_md5tdbz\\pycryptodome\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\nthienan\AppData\Local\Temp\pip-flf4lgb2-record\install-record.txt --single-version-externally-managed --compile --install-headers e:\project\aaa\venv\include\site\python3.6\pycryptodome" failed with error code 1 in C:\Users\nthienan\AppData\Local\Temp\pip-build-_md5tdbz\pycryptodome\

    type: bug priority: high platform: Windows 
    opened by nthienan 35
  • Cognito emulation

    Cognito emulation

    Hi,

    In our tests we use a large number of made-up users. It would be nice if we could have a local user pool (to which we could add these users programmatically) and authentication service.

    Best regards, Csaba

    ┆Issue is synchronized with this Jira Bug by Unito

    opened by csabakoncz 34
  • bug: Presigned S3 upload issues

    bug: Presigned S3 upload issues

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Current Behavior

    I have no idea if I'm doing something wrong, before it worked fine (unfortunately I don't have any idea about the version), but all I get is meaningless error.

    I'm unable to upload file to a S3 presigned URL (URL is created via Ruby). The file is then uploaded via Dropzone.js. It is working fine against AWS.

    Expected Behavior

    No response

    How are you starting LocalStack?

    With a docker-compose file

    Steps To Reproduce

    Here is the cURL:

    curl 'http://localstack.localhost.localstack.cloud:4566/' \
      -H 'Accept: application/json' \
      -H 'Accept-Language: cs,en;q=0.9' \
      -H 'Connection: keep-alive' \
      -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryy88aMIk453wF82qw' \
      -H 'Origin: http://localhost:3000' \
      -H 'Referer: http://localhost:3000/' \
      -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' \
      --data-raw $'------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="policy"\r\n\r\neyJleHBpcmF0aW9uIjoiMjAyMi0wOC0wM1QxODoyOToyNloiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJsb2NhbHN0YWNrIn0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJyb29tLXRlc3QtODQ3Mjc1NTQ3L3RtcC91cGxvYWQvMjAyMi8wOC8wMy9kMTZiZDZkMi1lMzVhLTRlMDYtYjUxYy1iMGE4NmVkMGYzNDcvIl0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCwyNTAwMDAwMDBdLFsic3RhcnRzLXdpdGgiLCIkdXRmOCIsIiJdLFsic3RhcnRzLXdpdGgiLCIkYXV0aGVudGljaXR5X3Rva2VuIiwiIl0seyJ4LWFtei1jcmVkZW50aWFsIjoidGVzdC8yMDIyMDgwMy9ldS1jZW50cmFsLTEvczMvYXdzNF9yZXF1ZXN0In0seyJ4LWFtei1hbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJ4LWFtei1kYXRlIjoiMjAyMjA4MDNUMTcyOTI2WiJ9XX0=\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="x-amz-credential"\r\n\r\ntest/20220803/eu-central-1/s3/aws4_request\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="x-amz-algorithm"\r\n\r\nAWS4-HMAC-SHA256\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="x-amz-date"\r\n\r\n20220803T172926Z\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="x-amz-signature"\r\n\r\nc4c407840936a3c5293899010d259a8ce662a2429247d2beac8142b36e005285\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="key"\r\n\r\nroom-test-847275547/tmp/upload/2022/08/03/d16bd6d2-e35a-4e06-b51c-b0a86ed0f347/sni_mek_obrazovky_2022_08_01_v_18_01_32_png\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="utf8"\r\n\r\n✓\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="authenticity_token"\r\n\r\n0JVk7R/FRnfXFCT1k1RllpZ2BFjaWh9+6bNLYgn8iAiB7tZ7hjS6ZTx22Jl4iEqcw0y1G8oAkU+RF1cQbLKmuQ==\r\n------WebKitFormBoundaryy88aMIk453wF82qw\r\nContent-Disposition: form-data; name="file"; filename="Snímek obrazovky 2022-08-01 v 18.01.32.png"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundaryy88aMIk453wF82qw--\r\n' \
      --compressed \
      --insecure
    

    All I get is error 500 with this payload

    {"message": "Unexpected exception", "error": "400 Bad Request: The browser (or proxy) sent a request that this server could not understand.", "type": "ClientDisconnected"}
    

    This is in the LocalStack console:

    2022-08-03T17:29:26.445 ERROR --- [   asgi_gw_0] l.aws.handlers.logging     : exception during call chain
    Traceback (most recent call last):
      File "/opt/code/localstack/localstack/aws/chain.py", line 57, in handle
        handler(self, self.context, response)
      File "/opt/code/localstack/localstack/aws/handlers/service.py", line 31, in __call__
        service = determine_aws_service_name(context.request)
      File "/opt/code/localstack/localstack/aws/protocol/service_router.py", line 314, in determine_aws_service_name
        values = request.values
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/utils.py", line 107, in __get__
        value = self.fget(obj)  # type: ignore
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 448, in values
        sources.append(self.form)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/utils.py", line 107, in __get__
        value = self.fget(obj)  # type: ignore
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 428, in form
        self._load_form_data()
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 266, in _load_form_data
        data = parser.parse(
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 263, in parse
        return parse_func(self, stream, mimetype, content_length, options)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 140, in wrapper
        return f(self, stream, *args, **kwargs)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 290, in _parse_multipart
        form, files = parser.parse(stream, boundary, content_length)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 418, in parse
        for data in iterator:
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 653, in _make_chunk_iter
        item = _read(buffer_size)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 925, in read
        return self.on_disconnect()
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 893, in on_disconnect
        raise ClientDisconnected()
    werkzeug.exceptions.ClientDisconnected: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
    2022-08-03T17:29:26.447 DEBUG --- [   asgi_gw_0] l.aws.handlers.fallback    : setting internal failure response for 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
    2022-08-03T17:29:26.449 ERROR --- [   asgi_gw_0] localstack.aws.chain       : exception while running response handler
    Traceback (most recent call last):
      File "/opt/code/localstack/localstack/aws/chain.py", line 122, in _call_response_handlers
        handler(self, self.context, response)
      File "/opt/code/localstack/localstack/aws/handlers/logging.py", line 47, in __call__
        self._log(context, response)
      File "/opt/code/localstack/localstack/aws/handlers/logging.py", line 142, in _log
        "input": restore_payload(context.request),
      File "/opt/code/localstack/localstack/http/request.py", line 220, in restore_payload
        data = request.data
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/utils.py", line 107, in __get__
        value = self.fget(obj)  # type: ignore
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 354, in data
        return self.get_data(parse_form_data=True)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 404, in get_data
        self._load_form_data()
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 266, in _load_form_data
        data = parser.parse(
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 263, in parse
        return parse_func(self, stream, mimetype, content_length, options)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 140, in wrapper
        return f(self, stream, *args, **kwargs)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 290, in _parse_multipart
        form, files = parser.parse(stream, boundary, content_length)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/formparser.py", line 418, in parse
        for data in iterator:
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 653, in _make_chunk_iter
        item = _read(buffer_size)
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 925, in read
        return self.on_disconnect()
      File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 893, in on_disconnect
        raise ClientDisconnected()
    werkzeug.exceptions.ClientDisconnected: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
    

    Environment

    - OS: macOS Monterey 12.5 (21G72)
    - LocalStack: 1.0.4.dev
    

    Anything else?

    No response

    type: bug aws:s3 status: confirmed 
    opened by krystof-k 33
  • bug: pre-signed POST to s3 does not trigger s3 object created event for lambda trigger

    bug: pre-signed POST to s3 does not trigger s3 object created event for lambda trigger

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Current Behavior

    Using pre-signed POST to s3 does not trigger s3 object created event for lambda trigger.

    Expected Behavior

    Using pre-signed POST to s3 should trigger s3 object created event for lambda trigger.

    How are you starting LocalStack?

    With a docker-compose file

    Steps To Reproduce

    How are you starting localstack (e.g., bin/localstack command, arguments, or docker-compose.yml)

    docker compose up -d
    

    Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

    Pulumi typescript:

    export const uploadObjectCreateEvent = bucket.onObjectCreated( 'uploadObjectCreateEvent', fuelUploadLambda, { event: '*', filterPrefix: 'uploads/' }, { provider: PulumiUtil.awsProvider } );

    Environment

    - OS: OSX and Windows 11
    - LocalStack: latest
    

    Anything else?

    Event does trigger if I use cli s3 cp. Maybe related to https://github.com/localstack/localstack/pull/4809 ?

    type: bug status: triage needed type: usage aws:s3 aws:lambda area: integration/pulumi 
    opened by paulrobello 29
  • question: How to run LocalStack without internet connection?

    question: How to run LocalStack without internet connection?

    Is there an existing issue for this?

    • [X] I have searched the existing issues and read the documentation

    Question

    I need to be able to run LocalStack (simple, not pro) without internet connection. Is there a way I can do it?

    I'm running it using Docker and receive this output:

    Waiting for all LocalStack services to be ready
    2021-11-02 15:31:59,405 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
    2021-11-02 15:31:59,407 INFO supervisord started with pid 14
    2021-11-02 15:32:00,411 INFO spawned: 'infra' with pid 20
    (. .venv/bin/activate; exec bin/localstack start --host --no-banner)
    2021-11-02 15:32:01,435 INFO success: infra entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    Waiting for all LocalStack services to be ready
    
    LocalStack version: 0.12.19.1
    LocalStack build date: 2021-11-01
    LocalStack build git hash: c49f2b0a
    
    Starting edge router (https port 4566)...
    2021-11-02 15:32:11,987 INFO exited: infra (exit status 2; not expected)
    2021-11-02 15:32:11,988 INFO spawned: 'infra' with pid 144
    Error starting infrastructure: gave up waiting for edge server on 0.0.0.0:4566 Traceback (most recent call last):
      File "/opt/code/localstack/localstack/services/infra.py", line 396, in start_infra
        thread = do_start_infra(asynchronous, apis, is_in_docker)
      File "/opt/code/localstack/localstack/services/infra.py", line 505, in do_start_infra
        thread = start_runtime_components()
      File "/opt/code/localstack/localstack/utils/bootstrap.py", line 91, in wrapped
        return f(*args, **kwargs)
      File "/opt/code/localstack/localstack/services/infra.py", line 498, in start_runtime_components
        f"gave up waiting for edge server on {config.EDGE_BIND_HOST}:{config.EDGE_PORT}"
    TimeoutError: gave up waiting for edge server on 0.0.0.0:4566
    
    (. .venv/bin/activate; exec bin/localstack start --host --no-banner)
    2021-11-02T15:32:11:INFO:bootstrap.py: Execution of "start_runtime_components" took 5033.95ms
    Traceback (most recent call last):
      File "bin/localstack", line 23, in <module>
        main()
      File "bin/localstack", line 19, in main
        main.main()
      File "/opt/code/localstack/localstack/cli/main.py", line 6, in main
        cli()
      File "/opt/code/localstack/localstack/cli/plugin.py", line 15, in __call__
        self.group(*args, **kwargs)
      File "/opt/code/localstack/.venv/lib/python3.7/site-packages/click/core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "/opt/code/localstack/.venv/lib/python3.7/site-packages/click/core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "/opt/code/localstack/.venv/lib/python3.7/site-packages/click/core.py", line 1659, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/opt/code/localstack/.venv/lib/python3.7/site-packages/click/core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/opt/code/localstack/.venv/lib/python3.7/site-packages/click/core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "/opt/code/localstack/localstack/cli/localstack.py", line 111, in cmd_start
        bootstrap.start_infra_locally()
      File "/opt/code/localstack/localstack/utils/bootstrap.py", line 405, in start_infra_locally
        return infra.start_infra()
      File "/opt/code/localstack/localstack/services/infra.py", line 410, in start_infra
        raise e
      File "/opt/code/localstack/localstack/services/infra.py", line 396, in start_infra
        thread = do_start_infra(asynchronous, apis, is_in_docker)
      File "/opt/code/localstack/localstack/services/infra.py", line 505, in do_start_infra
        thread = start_runtime_components()
      File "/opt/code/localstack/localstack/utils/bootstrap.py", line 91, in wrapped
        return f(*args, **kwargs)
      File "/opt/code/localstack/localstack/services/infra.py", line 498, in start_runtime_components
        f"gave up waiting for edge server on {config.EDGE_BIND_HOST}:{config.EDGE_PORT}"
    TimeoutError: gave up waiting for edge server on 0.0.0.0:4566
    make: *** [Makefile:233: infra] Error 1
    ^C2021-11-02 15:32:12,993 INFO success: infra entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    Waiting for all LocalStack services to be ready
    

    Anything else?

    No response

    type: question 
    opened by phildunphytoo 29
  • Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/common/introspection/provided/src

    Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/common/introspection/provided/src

    Bumps tokio from 1.18.1 to 1.18.4.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.18.3

    1.18.3 (September 27, 2022)

    This release removes the dependency on the once_cell crate to restore the MSRV of the 1.18.x LTS release. (#5048)

    #5048: tokio-rs/tokio#5048

    Tokio v1.18.2

    1.18.2 (May 5, 2022)

    Add missing features for the winapi dependency. (#4663)

    #4663: tokio-rs/tokio#4663

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies rust 
    opened by dependabot[bot] 2
  • Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/common/uncaughtexception/provided/src

    Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/common/uncaughtexception/provided/src

    Bumps tokio from 1.18.1 to 1.18.4.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.18.3

    1.18.3 (September 27, 2022)

    This release removes the dependency on the once_cell crate to restore the MSRV of the 1.18.x LTS release. (#5048)

    #5048: tokio-rs/tokio#5048

    Tokio v1.18.2

    1.18.2 (May 5, 2022)

    Add missing features for the winapi dependency. (#4663)

    #4663: tokio-rs/tokio#4663

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies rust 
    opened by dependabot[bot] 1
  • Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/rust-lambda

    Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/rust-lambda

    Bumps tokio from 1.18.1 to 1.18.4.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.18.3

    1.18.3 (September 27, 2022)

    This release removes the dependency on the once_cell crate to restore the MSRV of the 1.18.x LTS release. (#5048)

    #5048: tokio-rs/tokio#5048

    Tokio v1.18.2

    1.18.2 (May 5, 2022)

    Add missing features for the winapi dependency. (#4663)

    #4663: tokio-rs/tokio#4663

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies rust 
    opened by dependabot[bot] 2
  • bug: S3 ASF Provider does not appear to support virtual-host style requests

    bug: S3 ASF Provider does not appear to support virtual-host style requests

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Current Behavior

    Using the S3 ASF provider, trying to fetch an object using S3 virtual-host style requests like

    curl -H "Host: test-bucket.localhost.localstack.cloud" http://localhost.localstack.cloud:4566/testfile.txt

    results in an error

    <?xml version='1.0' encoding='utf-8'?>
    <Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><RequestId>CC1D26J86EMA9PP8UJY4AMKUBPS0E188KTPMO8HQVECZ58J04LKF</RequestId><BucketName>testfile.txt</BucketName></Error>
    

    Path style requests like curl http://localhost.localstack.cloud:4566/test-bucket/testfile.txt work fine, and so does the legacy S3 provider.

    Expected Behavior

    Path and Virtual Host requests work the same in both providers

    How are you starting LocalStack?

    With a docker-compose file

    Steps To Reproduce

    How are you starting localstack (e.g., bin/localstack command, arguments, or docker-compose.yml)

    docker compose up

    Using docker-compose.yaml

    services:
      ###
      # AWS services
      # localstack home: https://github.com/localstack/localstack
      ###
      localstack:
        image: local/localstack:1.3.2.dev0
        ports:
          - 4566:4566
        expose:
          - 4566
        networks:
          curl:
        environment:
          PROVIDER_OVERRIDE_S3: asf
          EAGER_SERVICE_LOADING: 1
          SERVICES: s3
          DEBUG: ${DEBUG_LOCALSTACK:-0}
    networks:
      curl:
    

    Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

    $ aws --endpoint http://localhost.localstack.cloud:4566 s3api list-buckets \
         && aws --endpoint http://localhost.localstack.cloud:4566 s3api create-bucket --bucket test-bucket
    $ echo "Text file body" >> testfile.txt
    $ curl -T testfile.txt http://localhost.localstack.cloud:4566/test-bucket/testfile.txt
    <?xml version='1.0' encoding='utf-8'?>
    <PutObjectOutput />
    $ aws --endpoint http://localhost.localstack.cloud:4566 s3api list-objects --bucket test-bucket
    {
        "Contents": [
            {
                "Key": "testfile.txt",
                "LastModified": "2023-01-06T16:44:57+00:00",
                "ETag": "\"05e863e3ae1d9452c450d9f43333d3fe\"",
                "Size": 15,
                "StorageClass": "STANDARD",
                "Owner": {
                    "DisplayName": "webfile",
                    "ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
                }
            }
        ]
    }
    
    $ curl http://localhost.localstack.cloud:4566/test-bucket/testfile.txt
    Text file body
    $ curl -H "Host: test-bucket.localhost.localstack.cloud" http://localhost.localstack.cloud:4566/testfile.txt
    <?xml version='1.0' encoding='utf-8'?>
    <Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><RequestId>CC1D26J86EMA9PP8UJY4AMKUBPS0E188KTPMO8HQVECZ58J04LKF</RequestId><BucketName>testfile.txt</BucketName></Error>
    

    Environment

    - OS: Slackware-current (5.19.17)
    - LocalStack: latest (d3f51d516af88ab56b06f29ca30bb4142595c8d4)
    

    Anything else?

    Comment out PROVIDER_OVERRIDE_S3: asf in the docker-compose.yaml file and everything works fine.

    type: bug status: response required aws:s3 
    opened by poconnor-lab49 2
  • add kms key validation in ASF S3 with feature flag

    add kms key validation in ASF S3 with feature flag

    This PR introduces a validation issue reported in #7177 However, I'll introduce this feature behind a feature flag to not slow down users not creating KMS key while testing. It will need an entry in the docs once merged.

    This PR will check the existence of the KMS key provided in PutObject, CopyObject and CreateMultipartUpload operations. A next step in a following PR would be to also validate it in PutBucketEncryption if it is done in AWS.

    fixes #7177

    aws:s3 
    opened by bentsku 2
Releases(v1.3.1)
  • v1.3.1(Dec 17, 2022)

    What's Changed

    • Add Tests for CFn update stack operation by @pinzon in https://github.com/localstack/localstack/pull/7185
    • fix/missing parameters for sam by @simonrw in https://github.com/localstack/localstack/pull/7264
    • Implement Lambda ASF container image CRUD and docker runtime executor hooks by @dfangl in https://github.com/localstack/localstack/pull/7266
    • fix: correct status when updating an updated stack by @simonrw in https://github.com/localstack/localstack/pull/7272
    • fix cloudwatch tests by filtering alarm names by @dfangl in https://github.com/localstack/localstack/pull/7277
    • Added after inject hook by @giograno in https://github.com/localstack/localstack/pull/7250
    • switch docs links to update ones by @HarshCasper in https://github.com/localstack/localstack/pull/7271
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7281
    • fix cfn apigw account and implement update for some models by @pinzon in https://github.com/localstack/localstack/pull/7260
    • support creation of integration responses for apigw method by @pinzon in https://github.com/localstack/localstack/pull/7269
    • APIGW2 special module naming by @giograno in https://github.com/localstack/localstack/pull/7286
    • fix opensearch / elasticsearch cf tempalte type conversions by @alexrashed in https://github.com/localstack/localstack/pull/7293
    • fix release banner link by @alexrashed in https://github.com/localstack/localstack/pull/7294
    • Fix lambda account settings by @joe4dev in https://github.com/localstack/localstack/pull/7284
    • Modify partition rewrite proxy listener to handler by @dfangl in https://github.com/localstack/localstack/pull/7222
    • Kinesis: Add multi-accounts support by @viren-nadkarni in https://github.com/localstack/localstack/pull/7230
    • #7128 cleanup by @simonrw in https://github.com/localstack/localstack/pull/7254
    • Add error handling to SES configuration set SNS event destinations by @simonrw in https://github.com/localstack/localstack/pull/7251
    • clean up bad logs file by @pinzon in https://github.com/localstack/localstack/pull/7299
    • Fix stage model patch operations by @calvernaz in https://github.com/localstack/localstack/pull/7283
    • fix DDBstreams encoding after update by @ackdav in https://github.com/localstack/localstack/pull/7302
    • remove unused DynamoDB-specific AwsApiListener by @alexrashed in https://github.com/localstack/localstack/pull/7296
    • create a docker-compose pro for licensed users by @HarshCasper in https://github.com/localstack/localstack/pull/7290
    • remove localstack changelog to keep focus on release announcements by @HarshCasper in https://github.com/localstack/localstack/pull/7303
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7307
    • update Docker base image (python:3.10.8-slim-buster) digest to 6f0a933 by @renovate in https://github.com/localstack/localstack/pull/7306
    • hide reading time for coverage docs by @HarshCasper in https://github.com/localstack/localstack/pull/7309
    • add some basic tests for localstack.aws.mocking by @thrau in https://github.com/localstack/localstack/pull/7301
    • SQS - Added check for invalid batch entry id by @giograno in https://github.com/localstack/localstack/pull/7313
    • Add option to customize images used for lambda execution by @dominikschubert in https://github.com/localstack/localstack/pull/7317
    • Bump moto-ext by @viren-nadkarni in https://github.com/localstack/localstack/pull/7291
    • fix --profile flag of CLI so config profiles are loaded correctly by @thrau in https://github.com/localstack/localstack/pull/7329
    • Remove pytz by @viren-nadkarni in https://github.com/localstack/localstack/pull/7318
    • Fix deploy of DDB with ContributorInsightsSpecification by @giograno in https://github.com/localstack/localstack/pull/7322
    • Transcribe: support input media amr/flac/mp3/mp4/ogg/webm by @janofsun in https://github.com/localstack/localstack/pull/6852
    • Lambda: remove duplicate code for account usage by @joe4dev in https://github.com/localstack/localstack/pull/7325
    • only set HOST_TMP_FOLDER (deprecated) for legacy directories by @alexrashed in https://github.com/localstack/localstack/pull/7343
    • WIP: fix s3 pre-signed issues + clarify tests by @bentsku in https://github.com/localstack/localstack/pull/7333
    • return all messages for sqs queue in case max_number_of_message equals -1 by @lukqw in https://github.com/localstack/localstack/pull/7331
    • prevent DEFAULT_REGION's deprecation message to always show by @potyl in https://github.com/localstack/localstack/pull/7327
    • Add hot reloading for new lambda provider by @dfangl in https://github.com/localstack/localstack/pull/7321

    New Contributors

    • @joe4dev made their first contribution in https://github.com/localstack/localstack/pull/7284
    • @janofsun made their first contribution in https://github.com/localstack/localstack/pull/6852
    • @potyl made their first contribution in https://github.com/localstack/localstack/pull/7327

    Full Changelog: https://github.com/localstack/localstack/compare/v1.3.0...v1.3.1

    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Dec 1, 2022)

    Summary

    AWS features

    Enhancements

    • Migration of S3 to our new and more stable ASF provider. It can be activated with a feature flag and will be the default starting with the next major version 2.0.
    • Migration of Lambda to our new and more stable ASF provider. It can be activated with a feature flag and will be the default starting with the next major version 2.0.
    • Multi-accounts support has been improved with 1.3 with various bug fixes.
    • Improved namespacing in DynamoDB with multi-account and multi-region support for all database operations.

    LocalStack features

    Deprecations

    • Deprecating localstack-lightand localstack-full images
    • Removal of legacy SQS, API Gateway, and Kinesis provider
    • Deprecating Legacy IAM Enforcement (⭐ Pro)
    • Deprecating SYNCHRONOUS_*_EVENTS
    • Deprecating USE_SINGLE_REGION and DEFAULT_REGION
    • Deprecating MOCK_UNIMPLEMENTED
    • Deprecating SKIP_INFRA_DOWNLOADS
    • Deprecating legacy Init scripts
    • Deprecating root-level non-AWS endpoints

    Refer to our extended deprecation notice to know about the specifics of each deprecation.

    What's Changed

    • Avoid import rest api from openapi skipping 'parameters' by @calvernaz in https://github.com/localstack/localstack/pull/6769
    • fix S3 terraform test timeout by @alexrashed in https://github.com/localstack/localstack/pull/6996
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6994
    • S3 ASF test fixes by @bentsku in https://github.com/localstack/localstack/pull/6987
    • move S3 ASF virtual host proxy and refactor by @bentsku in https://github.com/localstack/localstack/pull/7001
    • update Docker base image (python:3.10.7-slim-buster) digest to 06d5be9 by @renovate in https://github.com/localstack/localstack/pull/6993
    • add default converters to Router by @thrau in https://github.com/localstack/localstack/pull/7003
    • implement SES CloneReceiptRuleSet by @wonhyeongseo in https://github.com/localstack/localstack/pull/6992
    • fix offline GitHub package presence check by @alexrashed in https://github.com/localstack/localstack/pull/7006
    • Add debugging options for terraform tests in CI by @dominikschubert in https://github.com/localstack/localstack/pull/6954
    • Add debug information to check CI failures by @dfangl in https://github.com/localstack/localstack/pull/6986
    • Pin lambda image digests and make common test builds reproducible by @dominikschubert in https://github.com/localstack/localstack/pull/7011
    • Add tags to GatewayRestApi resource creation by @silv-io in https://github.com/localstack/localstack/pull/7008
    • Add infra shutdown handler / improve cleanup of processes and threads by @dfangl in https://github.com/localstack/localstack/pull/7010
    • Add semantic names to threads to simplify detection of thread leaks by @dominikschubert in https://github.com/localstack/localstack/pull/6781
    • migrate installer routines to new architecture by @baermat in https://github.com/localstack/localstack/pull/6916
    • Add error message for invalid SQS batch message IDs by @whummer in https://github.com/localstack/localstack/pull/7015
    • Remove bson dependency and use pymongo by @calvernaz in https://github.com/localstack/localstack/pull/7022
    • [KMS] Adding digests for KMS sign/verify. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/6941
    • update Docker base image (python) tag to v3.10.8 by @renovate in https://github.com/localstack/localstack/pull/7030
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7031
    • move OSPackages by @baermat in https://github.com/localstack/localstack/pull/7023
    • CFn test plan implementation by @pinzon in https://github.com/localstack/localstack/pull/6973
    • [KMS] Enabling Terraform tests for KMS. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/7026
    • Remove RegionBackend and related code by @viren-nadkarni in https://github.com/localstack/localstack/pull/6998
    • fix static infrastructure installer target by @alexrashed in https://github.com/localstack/localstack/pull/7033
    • Discover lambda runtime executor using plugins by @dfangl in https://github.com/localstack/localstack/pull/7034
    • Support for removing active services from service pool by @MEPalma in https://github.com/localstack/localstack/pull/6946
    • Update patch for IAM backend by @giograno in https://github.com/localstack/localstack/pull/7042
    • Manage Lambda code in code objects / share code between identical versions by @dfangl in https://github.com/localstack/localstack/pull/7019
    • Migrate lambda executor endpoints from flask to router by @dfangl in https://github.com/localstack/localstack/pull/7039
    • Extract account id from access key id for each request by @dfangl in https://github.com/localstack/localstack/pull/7045
    • Migrate debugpy installer by @baermat in https://github.com/localstack/localstack/pull/7044
    • Fix test_s3_lambda_integration test by @dominikschubert in https://github.com/localstack/localstack/pull/7051
    • Revert "Extract account id from access key id for each request (#7045)" by @dominikschubert in https://github.com/localstack/localstack/pull/7056
    • update RedHat example Dockerfile by @alexrashed in https://github.com/localstack/localstack/pull/7047
    • Add mutex locks to installers by @viren-nadkarni in https://github.com/localstack/localstack/pull/7053
    • S3 asf fixes detected by Terraform test suite by @steffyP in https://github.com/localstack/localstack/pull/7027
    • Migrate testlibs installer by @baermat in https://github.com/localstack/localstack/pull/7052
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7079
    • Add SQS integration support for new Lambda provider by @dominikschubert in https://github.com/localstack/localstack/pull/7032
    • pin boto3 and botocore versions by @alexrashed in https://github.com/localstack/localstack/pull/7088
    • add patch to parse VariableExpression by @calvernaz in https://github.com/localstack/localstack/pull/7091
    • fix pipeline by disabling CircleCI Docker Layer Cache by @alexrashed in https://github.com/localstack/localstack/pull/7100
    • Update lambda runtime init version, add config option for timeouts by @dfangl in https://github.com/localstack/localstack/pull/7087
    • refactor lpm plugin mechanism by @alexrashed in https://github.com/localstack/localstack/pull/7063
    • [KMS] Add support for generate random by @demonno in https://github.com/localstack/localstack/pull/7055
    • Extend CFn AWS::Lambda resources and corresponding tests by @dominikschubert in https://github.com/localstack/localstack/pull/7082
    • add config variable to define custom SSL cert path by @alexrashed in https://github.com/localstack/localstack/pull/7102
    • add SQS check for maximum number of batch entries by @giograno in https://github.com/localstack/localstack/pull/7107
    • DynamoDB Table CFn-model proper default table name by @pinzon in https://github.com/localstack/localstack/pull/7067
    • fix S3 CORS allowing all by default by @bentsku in https://github.com/localstack/localstack/pull/7038
    • Cfn tests addition by @pinzon in https://github.com/localstack/localstack/pull/7020
    • fix skip snapshot for s3 test by @bentsku in https://github.com/localstack/localstack/pull/7111
    • [KMS] Small comment fix, reusing stores.create_alias(). by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/7066
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7112
    • Implement single directory extraction for archive installer by @viren-nadkarni in https://github.com/localstack/localstack/pull/7062
    • allow package installers to define custom locks by @alexrashed in https://github.com/localstack/localstack/pull/7121
    • update Docker base image (python:3.10.8-slim-buster) digest to c2b2fbf by @renovate in https://github.com/localstack/localstack/pull/7138
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7139
    • Add test for the newest generated cdk sample-app by @dominikschubert in https://github.com/localstack/localstack/pull/7128
    • Prevent inconsistent persistence states for DynamoDB by @viren-nadkarni in https://github.com/localstack/localstack/pull/7123
    • fix not-implemented evaluation for s3 by @steffyP in https://github.com/localstack/localstack/pull/7150
    • check provider is asf_pro for S3 legacy config by @steffyP in https://github.com/localstack/localstack/pull/7116
    • Add test cases and fix bugs for route53 resolver and secret manager by @sannya-singal in https://github.com/localstack/localstack/pull/7099
    • deactivate VirtualHostRewriter for s3 ASF by @steffyP in https://github.com/localstack/localstack/pull/7065
    • migrate S3 presign tests by @steffyP in https://github.com/localstack/localstack/pull/7070
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7171
    • DDB - clean DB path when persistence is not set by @giograno in https://github.com/localstack/localstack/pull/7174
    • More CFn features tests by @pinzon in https://github.com/localstack/localstack/pull/7097
    • Fix override for cleaning DynamoDB state file by @whummer in https://github.com/localstack/localstack/pull/7176
    • add OpenSearch 1.2 and 1.3, change default to OpenSearch 1.3 by @alexrashed in https://github.com/localstack/localstack/pull/7179
    • Add support for lambda timeouts by @dfangl in https://github.com/localstack/localstack/pull/7180
    • fix python init script execution by @simonrw in https://github.com/localstack/localstack/pull/7175
    • package installation cleanup by @alexrashed in https://github.com/localstack/localstack/pull/7129
    • Allow use of arbitrary account IDs by @viren-nadkarni in https://github.com/localstack/localstack/pull/7093
    • Taking into account msg attributes for total size by @sinecode in https://github.com/localstack/localstack/pull/7168
    • implement ASF S3 CORS by @bentsku in https://github.com/localstack/localstack/pull/7081
    • add S3 ASF test job to CircleCI workflow by @alexrashed in https://github.com/localstack/localstack/pull/7173
    • send SQS metrics to cloudwatch by @steffyP in https://github.com/localstack/localstack/pull/7182
    • Fix parsing optional parts when resolving a secret by @cr3 in https://github.com/localstack/localstack/pull/7195
    • Add JRE java.security modules to enable bigdata libs by @whummer in https://github.com/localstack/localstack/pull/7189
    • update rebase action to consider all release/* branches by @alexrashed in https://github.com/localstack/localstack/pull/7202
    • allow SNS message attributes data type with dot suffixes by @bentsku in https://github.com/localstack/localstack/pull/7181
    • S3 ASF fix pre-signed ports permutation by @bentsku in https://github.com/localstack/localstack/pull/7152
    • fix: update flake8 git url by @simonrw in https://github.com/localstack/localstack/pull/7206
    • pin flake8 dependencies by @thrau in https://github.com/localstack/localstack/pull/7208
    • update Docker base image (python:3.10.8-slim-buster) digest to 95f2dd6 by @renovate in https://github.com/localstack/localstack/pull/7212
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7213
    • DynamoDB: Implement multi-accounts/multi-region by @viren-nadkarni in https://github.com/localstack/localstack/pull/7157
    • refactor: SQS message fixtures by @simonrw in https://github.com/localstack/localstack/pull/7214
    • Dynamodb: Fix context region not being used by @viren-nadkarni in https://github.com/localstack/localstack/pull/7215
    • Adapt stream event source listeners for ASF lambda provider by @dominikschubert in https://github.com/localstack/localstack/pull/7110
    • remove requests version pin by @dfangl in https://github.com/localstack/localstack/pull/7220
    • Port Lambda URL invocation support to ASF provider by @dominikschubert in https://github.com/localstack/localstack/pull/7225
    • Fix error logging in companion ref detection by @dominikschubert in https://github.com/localstack/localstack/pull/7232
    • Add parity between old and new lambda provider for destinations by @dominikschubert in https://github.com/localstack/localstack/pull/7231
    • Fix flaky s3/dynamodb test by @dominikschubert in https://github.com/localstack/localstack/pull/7235
    • Add support for nodejs 18.x runtime to ASF lambda provider by @dfangl in https://github.com/localstack/localstack/pull/7234
    • Add CRUD support for lambda layers by @dominikschubert in https://github.com/localstack/localstack/pull/7204
    • Fix: SES not emitting SNS messages by @simonrw in https://github.com/localstack/localstack/pull/7207
    • fix opensearch multiregion support by @alexrashed in https://github.com/localstack/localstack/pull/7237
    • Fix custom id lookup by @calvernaz in https://github.com/localstack/localstack/pull/7221
    • fix elasticsearch bind host and firehose connectivity by @alexrashed in https://github.com/localstack/localstack/pull/7243
    • fix #7184: include message id in SNS payload by @simonrw in https://github.com/localstack/localstack/pull/7244
    • Visitor pattern to collect service backends by @giograno in https://github.com/localstack/localstack/pull/7071
    • Clean up aws_stack by @dominikschubert in https://github.com/localstack/localstack/pull/7239
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/7248
    • Test for CFN stack policies by @pinzon in https://github.com/localstack/localstack/pull/7159
    • feat: support deletion of configuration set and configuration set event destinations by @simonrw in https://github.com/localstack/localstack/pull/7229
    • Update KINESIS_MOCK_VERSION to 0.2.6 by @etspaceman in https://github.com/localstack/localstack/pull/7224
    • Bugfix: Fix S3 internalError when try to get an object by @vladyslavkurovskyi in https://github.com/localstack/localstack/pull/7246
    • Fix cfn stack leak in test fixture by @dominikschubert in https://github.com/localstack/localstack/pull/7258
    • add snapshot test for cloudwatch put-metric-data with values list by @steffyP in https://github.com/localstack/localstack/pull/7166
    • Lambda provider parity by @dominikschubert in https://github.com/localstack/localstack/pull/7165
    • Bugfix: DynamoDB BatchWriteItems in multi-accounts by @viren-nadkarni in https://github.com/localstack/localstack/pull/7242
    • v1.3 release PR by @alexrashed in https://github.com/localstack/localstack/pull/7197
    • Fix internal usage of deprecations by @silv-io in https://github.com/localstack/localstack/pull/7261
    • update coverage template for docs creation by @steffyP in https://github.com/localstack/localstack/pull/7265

    New Contributors

    • @wonhyeongseo made their first contribution in https://github.com/localstack/localstack/pull/6992
    • @demonno made their first contribution in https://github.com/localstack/localstack/pull/7055
    • @sannya-singal made their first contribution in https://github.com/localstack/localstack/pull/7099
    • @sinecode made their first contribution in https://github.com/localstack/localstack/pull/7168
    • @cr3 made their first contribution in https://github.com/localstack/localstack/pull/7195
    • @vladyslavkurovskyi made their first contribution in https://github.com/localstack/localstack/pull/7246

    Full Changelog: https://github.com/localstack/localstack/compare/v1.2.0...v1.3.0

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Oct 7, 2022)

    Summary

    AWS features

    Enhancements

    LocalStack features

    • Cloud Pods - revised push/pull/inject workflows; configurable override, merge, and deep-merge merge strategies (🌟 Pro)
    • Cloud Pods - introduced public cloud pods that are sharable across organizations (🌟 Pro)
    • Internal SNS endpoint to access platform messages
    • Enhanced EKS ingress config for routing traffic to different services (🌟 Pro)
    • Persistence support for organizations (🌟 Pro)
    • Multi-accounts fully supported with persistence and cloud pods (🌟 Pro)

    What's Changed

    • fixed basic route table test cases by @macnev2013 in https://github.com/localstack/localstack/pull/6761
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6817
    • Add ability to set custom expiry for reserved ports in PortRange TTL cache by @whummer in https://github.com/localstack/localstack/pull/6813
    • increase max number of http request threads by @thrau in https://github.com/localstack/localstack/pull/6814
    • add ability to patch botocore specs by @thrau in https://github.com/localstack/localstack/pull/6812
    • CFN support for Iam Access key model by @pinzon in https://github.com/localstack/localstack/pull/6488
    • Fix CFN:Kinesis:Stream reference and attributes values. by @pinzon in https://github.com/localstack/localstack/pull/6752
    • Add custom config to boto test clients by @dominikschubert in https://github.com/localstack/localstack/pull/6824
    • test dynamic evaluation of services by @steffyP in https://github.com/localstack/localstack/pull/6821
    • Add sorting transformer for snapshots by @dominikschubert in https://github.com/localstack/localstack/pull/6822
    • Potential band-aid fix for issue 6808… by @bsmedberg-xometry in https://github.com/localstack/localstack/pull/6809
    • add new s3 ASF provider by @bentsku in https://github.com/localstack/localstack/pull/6829
    • Fix CFN Cloudwatch Alarm outputs by @pinzon in https://github.com/localstack/localstack/pull/6760
    • refactor s3 tests by @bentsku in https://github.com/localstack/localstack/pull/6629
    • Extract region from function arn for inter service invokes by @dfangl in https://github.com/localstack/localstack/pull/6828
    • fix coverage exclusions by @alexrashed in https://github.com/localstack/localstack/pull/6833
    • Fix region in DynamoDB store lookup to enable access from NoSQL Workbench by @whummer in https://github.com/localstack/localstack/pull/6834
    • Add snapshot test for lambda proxy integration by @dfangl in https://github.com/localstack/localstack/pull/6647
    • Correctly extract auth info context from authorizer payload by @dfangl in https://github.com/localstack/localstack/pull/6838
    • Increase AWS Transcribe test timeout by @viren-nadkarni in https://github.com/localstack/localstack/pull/6823
    • fix create-bucket: exclude LocationConstraint for us-east-1 by @steffyP in https://github.com/localstack/localstack/pull/6836
    • upgrade hypercorn to 0.14.2 by @thrau in https://github.com/localstack/localstack/pull/6778
    • fix terraform AWS provider patch for terraform tests by @alexrashed in https://github.com/localstack/localstack/pull/6853
    • update Docker base image (python) tag to v3.10.7 by @renovate in https://github.com/localstack/localstack/pull/6850
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6854
    • Extend CLI to run container from within Docker using SDK client by @whummer in https://github.com/localstack/localstack/pull/6841
    • Clean up deprecated Java libs for STS integration with Kinesis client by @whummer in https://github.com/localstack/localstack/pull/6856
    • Lambda tests rework by @dominikschubert in https://github.com/localstack/localstack/pull/6790
    • Kinesis Stream Resource physical id must be the name by @pinzon in https://github.com/localstack/localstack/pull/6860
    • fix pipeline failure on terraform test failure by @alexrashed in https://github.com/localstack/localstack/pull/6855
    • Fix client warnings in logs for custom resources by @dominikschubert in https://github.com/localstack/localstack/pull/6866
    • Remove snapshot paths after the transformations have been applied by @dominikschubert in https://github.com/localstack/localstack/pull/6870
    • set env DISABLE_EVENTS for the not-implemented-steps in CircleCI by @steffyP in https://github.com/localstack/localstack/pull/6871
    • Implement ASF S3 operations in provider by @bentsku in https://github.com/localstack/localstack/pull/6859
    • add package abstraction and plugins by @baermat in https://github.com/localstack/localstack/pull/6783
    • Add generic hint support for store bundles by @viren-nadkarni in https://github.com/localstack/localstack/pull/6843
    • Feat/enforce lambda envar size limit by @mindriot101 in https://github.com/localstack/localstack/pull/6862
    • Introduce multiruntime lambda tests by @dominikschubert in https://github.com/localstack/localstack/pull/6858
    • fix opensearch cold-start domain creation by @alexrashed in https://github.com/localstack/localstack/pull/6883
    • mark dynamodb tests and add snapshots by @ackdav in https://github.com/localstack/localstack/pull/6878
    • Fix logging in local python lambdas by @dominikschubert in https://github.com/localstack/localstack/pull/6880
    • Fix handle authorization header by @calvernaz in https://github.com/localstack/localstack/pull/6895
    • Fix prerelease smoke tests for RDS by @dfangl in https://github.com/localstack/localstack/pull/6900
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6894
    • update Docker base image (python:3.10.7-slim-buster) digest to 7bb70ac by @renovate in https://github.com/localstack/localstack/pull/6893
    • add more api doc for public facing APIs by @thrau in https://github.com/localstack/localstack/pull/6901
    • add rules for ASF S3 virtual host urls by @steffyP in https://github.com/localstack/localstack/pull/6846
    • Fix SES email retrospective KeyError by @silv-io in https://github.com/localstack/localstack/pull/6896
    • Dissolve legacy cloudformation tests by @dominikschubert in https://github.com/localstack/localstack/pull/6885
    • refactor kinesis installers by @alexrashed in https://github.com/localstack/localstack/pull/6879
    • Add rule for execute-api and extend test coverage for API GW custom CORS by @whummer in https://github.com/localstack/localstack/pull/6904
    • Add filter in select_from_typed_dict by @giograno in https://github.com/localstack/localstack/pull/6902
    • Migrate kms to LocalStack. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/6819
    • disable generic local_api_checker for new gateway by @thrau in https://github.com/localstack/localstack/pull/6911
    • Implement more ASF S3 operations in provider by @bentsku in https://github.com/localstack/localstack/pull/6868
    • Add dependency in Dockerfile for MQ by @ackdav in https://github.com/localstack/localstack/pull/6919
    • Small fix to handle empty init dir with legacy directories in non-Docker mode by @whummer in https://github.com/localstack/localstack/pull/6924
    • Implement Bucket ACL operations in S3 provider by @bentsku in https://github.com/localstack/localstack/pull/6875
    • Add utilities to check availability and reserve Docker container ports by @whummer in https://github.com/localstack/localstack/pull/6922
    • [KMS] Adding key state constraints for operations. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/6913
    • fix performance issue with ResponseStream wrapper by @thrau in https://github.com/localstack/localstack/pull/6937
    • S3 ASF fix VersionId and Expires, implement ResponseHeaders override by @bentsku in https://github.com/localstack/localstack/pull/6906
    • Pin pyOpenSSL to 21.0.0 by @viren-nadkarni in https://github.com/localstack/localstack/pull/6936
    • pin pyOpenSSL to 22.0.0 by @viren-nadkarni in https://github.com/localstack/localstack/pull/6940
    • Refactorizaition of CFN test by @pinzon in https://github.com/localstack/localstack/pull/6898
    • correct the link for CLA.md by @lionas32 in https://github.com/localstack/localstack/pull/6890
    • Minor fix for Lambda layer response parsing by @whummer in https://github.com/localstack/localstack/pull/6935
    • [SecretsManager] Fixes, Enhancements, Snapshot tests by @MEPalma in https://github.com/localstack/localstack/pull/6630
    • add message attributes validation for SNS by @bentsku in https://github.com/localstack/localstack/pull/6938
    • Update docker-maven ref by @viren-nadkarni in https://github.com/localstack/localstack/pull/6951
    • upgrade moto-ext to 4.0.5.post1 by @thrau in https://github.com/localstack/localstack/pull/6949
    • add caching to package installers by @thrau in https://github.com/localstack/localstack/pull/6953
    • fix response parsing for s3 website requests by @thrau in https://github.com/localstack/localstack/pull/6947
    • Display helpful message if --host fails by @tresni in https://github.com/localstack/localstack/pull/6945
    • Fix the supervisord.conf file using a full path by @mh4ckt3mh4ckt1c4s in https://github.com/localstack/localstack/pull/6952
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6933
    • Store migrations by @viren-nadkarni in https://github.com/localstack/localstack/pull/6832
    • disable verify_ssl for downloading vosk language models by @thrau in https://github.com/localstack/localstack/pull/6957
    • migrate S3 notifications to ASF by @steffyP in https://github.com/localstack/localstack/pull/6903
    • S3 ASF Presigned URL by @bentsku in https://github.com/localstack/localstack/pull/6908
    • pin terraform version to 1.2.9 for terraform-tests by @thrau in https://github.com/localstack/localstack/pull/6962
    • Unable to build localstack with make docker-build by @sha-shrestha in https://github.com/localstack/localstack/pull/6899
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6965
    • Fix typo in variable name by @ChandanChainani in https://github.com/localstack/localstack/pull/6966
    • clean up and remove dead code by @thrau in https://github.com/localstack/localstack/pull/6958
    • Pin importlib-metadata dependency to maintain CLI compatibility for python 3.7 by @dfangl in https://github.com/localstack/localstack/pull/6969
    • upgrade moto to 4.0.6.post1 by @thrau in https://github.com/localstack/localstack/pull/6964
    • refactor test_integration.py to be more resilient towards reruns by @thrau in https://github.com/localstack/localstack/pull/6972
    • implement S3 ASF website hosting support by @bentsku in https://github.com/localstack/localstack/pull/6959
    • Test added for CFn-Opensearch:Domain by @pinzon in https://github.com/localstack/localstack/pull/6943
    • fix s3 asf website moto import by @bentsku in https://github.com/localstack/localstack/pull/6978
    • Tie Lambda backend lookup to resource ARNs to avoid region mismatches by @whummer in https://github.com/localstack/localstack/pull/6975
    • fix http router to correctly add method constraints for route by @thrau in https://github.com/localstack/localstack/pull/6977
    • add sagemaker-runtime to service router by @thrau in https://github.com/localstack/localstack/pull/6976
    • Fix DynamodbStreams binary data consistency by @ackdav in https://github.com/localstack/localstack/pull/6918
    • expose internal SNS data platform_endpoint_messages by @bentsku in https://github.com/localstack/localstack/pull/6661
    • deploy_cfn_template fixture should stop waiting on ROLLBACK status by @pinzon in https://github.com/localstack/localstack/pull/6888
    • implement S3 ASF pre-signed POST support by @bentsku in https://github.com/localstack/localstack/pull/6980
    • Template logic for updates and attrs moved to resource classes by @pinzon in https://github.com/localstack/localstack/pull/6944
    • Lambda refactoring/CRUD ASF provider implementation by @dominikschubert in https://github.com/localstack/localstack/pull/6865

    New Contributors

    • @bsmedberg-xometry made their first contribution in https://github.com/localstack/localstack/pull/6809
    • @mindriot101 made their first contribution in https://github.com/localstack/localstack/pull/6862
    • @lionas32 made their first contribution in https://github.com/localstack/localstack/pull/6890
    • @tresni made their first contribution in https://github.com/localstack/localstack/pull/6945
    • @mh4ckt3mh4ckt1c4s made their first contribution in https://github.com/localstack/localstack/pull/6952
    • @sha-shrestha made their first contribution in https://github.com/localstack/localstack/pull/6899
    • @ChandanChainani made their first contribution in https://github.com/localstack/localstack/pull/6966

    Full Changelog: https://github.com/localstack/localstack/compare/v1.1.0...v1.2.0

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Sep 3, 2022)

    Summary

    LocalStack v1.1 is here! We have been working hard to iron out kinks with v1, fixing issues, and have added support for several AWS features, including Lambda Function URLs and two new services: Transcribe and Fault Injection Simulator.

    AWS features

    LocalStack features

    • Pluggable initialization hooks in /etc/localhost/init/<stage>.d which will replace /docker-entrypoint-initaws.d
    • Force DynamoDBLocal in-memory mode with DYNAMODB_IN_MEMORY=1 for improved performance
    • Persistence support for CloudWatch Logs (🌟 Pro)
    • Developer mode for LocalStack extensions (🌟 Pro)
    • Several enhancements and optimizations for persistence and cloud pods (incl. multi-account support, state merge scenarios) (🌟 Pro)

    LocalStack changes

    • Upgrade to Moto v4.0 which will enable robust multi-account support in the near future.
    • The Kinesalite Kinesis provider is now deprecated
    • Overall bug fixing efforts: we have closed over 150 issues across all our repos since the release of v1
    • The Node.js runtime inside the LocalStack Docker image has been upgraded from v14 to v18 (to resolve some security vulnerabilities reported by CVE scanners). This may potentially affect nodejs* Lambdas executed with LAMBDA_EXECUTOR=local - please make sure your Lambdas are not using deprecated Node.js APIs.

    What's Changed

    • fix message retry in lambda SQS event source mapping by @thrau in https://github.com/localstack/localstack/pull/6603
    • update Docker base image (python) tag to v3.10.6 by @renovate in https://github.com/localstack/localstack/pull/6608
    • order input for snapshot-match to fix reference-replacement by @steffyP in https://github.com/localstack/localstack/pull/6598
    • re-create snapshot-json to fix ordering by @steffyP in https://github.com/localstack/localstack/pull/6624
    • Fix fifo queue creation with attribute validation by @baermat in https://github.com/localstack/localstack/pull/6622
    • use snapshots for SNS tests by @bentsku in https://github.com/localstack/localstack/pull/6601
    • Reduce docker desktop lambda creation times by @dfangl in https://github.com/localstack/localstack/pull/6595
    • Adding a KMS test for encryption with different key formats. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/6500
    • added passing tests by @macnev2013 in https://github.com/localstack/localstack/pull/6617
    • Support for new S3 checksum checks by @pinzon in https://github.com/localstack/localstack/pull/6619
    • fix KeyValueBasedTransformer by @steffyP in https://github.com/localstack/localstack/pull/6623
    • fix error in deleting lambda configuration keys by @dfangl in https://github.com/localstack/localstack/pull/6627
    • removed databind patch for dynamodb by @steffyP in https://github.com/localstack/localstack/pull/6637
    • fix delay seconds=0 for fifo queues by @baermat in https://github.com/localstack/localstack/pull/6633
    • fix SNS subscription deleted when SQS endpoint was deleted by @bentsku in https://github.com/localstack/localstack/pull/6645
    • Add default logging configuration for state machine by @giograno in https://github.com/localstack/localstack/pull/6628
    • Introduce colored output format for snapshot diffs in integration tests by @dominikschubert in https://github.com/localstack/localstack/pull/6456
    • fix SNS msg attrs when sending to SQS DLQ by @bentsku in https://github.com/localstack/localstack/pull/6640
    • fix format of message to SNS and SQS from lambda DLQ by @bentsku in https://github.com/localstack/localstack/pull/6625
    • Fix resolving CFn intrinsic functions passed as list rather than dict by @whummer in https://github.com/localstack/localstack/pull/6658
    • Fixing BatchWriteItem with key element not matching the schema by @giograno in https://github.com/localstack/localstack/pull/6641
    • Validate a bunch of DynamoDB tests against AWS by @giograno in https://github.com/localstack/localstack/pull/6653
    • remove old event logging code by @thrau in https://github.com/localstack/localstack/pull/6632
    • fix lambda_sqs_integration region resolution to avoid CI failures by @thrau in https://github.com/localstack/localstack/pull/6666
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6670
    • update Docker base image (python:3.10.6-slim-buster) digest to 4bb7026 by @renovate in https://github.com/localstack/localstack/pull/6669
    • Fix Error when Destinations are not specified (AWS SES) by @sreeo in https://github.com/localstack/localstack/pull/6665
    • Fix linting by @viren-nadkarni in https://github.com/localstack/localstack/pull/6677
    • add caching for service catalog indexes by @thrau in https://github.com/localstack/localstack/pull/6672
    • Use repr conversion when printing values in diff report by @dominikschubert in https://github.com/localstack/localstack/pull/6664
    • fix pipeline by disabling flaky TF S3 tests by @alexrashed in https://github.com/localstack/localstack/pull/6679
    • Generalize parameter conversion fallback for SDK calls in CloudFormation by @dominikschubert in https://github.com/localstack/localstack/pull/6662
    • fix failing circle-ci step by @steffyP in https://github.com/localstack/localstack/pull/6685
    • Added test for S3 notification with a presigned request by @pinzon in https://github.com/localstack/localstack/pull/6498
    • fix parity coverage scripts (add FIS, allow non-indexed services) by @alexrashed in https://github.com/localstack/localstack/pull/6693
    • add support for ReportBatchItemFailures in Lambda SQS event source mappings by @thrau in https://github.com/localstack/localstack/pull/6606
    • Making it possible for KMS GetPublicKey to get ENCRYPT_DECRYPT keys. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/6675
    • Fix CloudFormation GetTemplate response and multiple cdk deployments by @dominikschubert in https://github.com/localstack/localstack/pull/6635
    • Feature: Lambda URL support by @pinzon in https://github.com/localstack/localstack/pull/6342
    • fix patch deployment model by @calvernaz in https://github.com/localstack/localstack/pull/6699
    • set CONFIG_PROFILE correctly into config variable with localstack CLI by @thrau in https://github.com/localstack/localstack/pull/6636
    • Add response for cors preflight requests by @dfangl in https://github.com/localstack/localstack/pull/6646
    • Fix Lambda URL building by @dominikschubert in https://github.com/localstack/localstack/pull/6703
    • Feature: SNS msg delivery to Firehose endpoint by @pinzon in https://github.com/localstack/localstack/pull/6426
    • fix SNS publish_batch passing MessageDeduplicationId to SQS queue by @bentsku in https://github.com/localstack/localstack/pull/6660
    • Update CLA Github action to not lock PR threads after merge by @whummer in https://github.com/localstack/localstack/pull/6708
    • Prevent race condition for Store write operations by @viren-nadkarni in https://github.com/localstack/localstack/pull/6689
    • added apis for route53resovler by @macnev2013 in https://github.com/localstack/localstack/pull/6673
    • fix CORS response enriching for service-managed CORS by @alexrashed in https://github.com/localstack/localstack/pull/6723
    • fix sqs fifo message sequence number generation by @thrau in https://github.com/localstack/localstack/pull/6713
    • fix sqs purge queue operation to match AWS behavior by @thrau in https://github.com/localstack/localstack/pull/6710
    • remove extensions api from coverage collection by @thrau in https://github.com/localstack/localstack/pull/6715
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6719
    • Feature: Lambda Event Filtering for DynamoDB Streams, SQS by @merowinger92 in https://github.com/localstack/localstack/pull/6212
    • make dynamodblocal inMemory option configurable by @thrau in https://github.com/localstack/localstack/pull/6730
    • improve performance of dynamodb forward_request operations by @thrau in https://github.com/localstack/localstack/pull/6733
    • Correctly shutdown kinesis listener once firehose deliverystream is deleted by @dfangl in https://github.com/localstack/localstack/pull/6729
    • fix apigateway aws lambda integration invocation by @calvernaz in https://github.com/localstack/localstack/pull/6667
    • Allow conditional skip with skip_snapshot_verify by @dominikschubert in https://github.com/localstack/localstack/pull/6731
    • SES: Extract and save the source address for raw email messages by @viren-nadkarni in https://github.com/localstack/localstack/pull/6728
    • add capture_not_implemented to CircleCI by @steffyP in https://github.com/localstack/localstack/pull/6694
    • Fix OpenSearch port strategy when running inside Docker by @silv-io in https://github.com/localstack/localstack/pull/6638
    • fix for coverage_docs_utility by @steffyP in https://github.com/localstack/localstack/pull/6741
    • StepFunctions patch for LoggingConfigurations by @giograno in https://github.com/localstack/localstack/pull/6735
    • Extend valid regions for Stores to include extended AWS partitions by @whummer in https://github.com/localstack/localstack/pull/6745
    • fix scaffold by handling Union as special keyword by @alexrashed in https://github.com/localstack/localstack/pull/6746
    • Add support stepfunctions integration by @calvernaz in https://github.com/localstack/localstack/pull/6513
    • fix: parity subnet tests by @macnev2013 in https://github.com/localstack/localstack/pull/6711
    • Fix returning CIDR IP range for Redshift cluster security groups by @whummer in https://github.com/localstack/localstack/pull/6749
    • update CODEOWNERS, set default reviewer for ASF Update PRs by @alexrashed in https://github.com/localstack/localstack/pull/6751
    • Fix IAM policy validation and MaxSessionDuration of roles, remove obsolete patches by @whummer in https://github.com/localstack/localstack/pull/6754
    • add service-specific response handler for dynamodb by @thrau in https://github.com/localstack/localstack/pull/6736
    • A valid skip condition without paths should skip the whole snapshot by @dominikschubert in https://github.com/localstack/localstack/pull/6758
    • remove dead utility code by @thrau in https://github.com/localstack/localstack/pull/6717
    • fix ext compatibility for mergable sqs queue by @thrau in https://github.com/localstack/localstack/pull/6768
    • fine-grained service locks by @calvernaz in https://github.com/localstack/localstack/pull/6763
    • Add support for S3 notifications to EventBridge by @pinzon in https://github.com/localstack/localstack/pull/6555
    • remove unused dashboard code by @thrau in https://github.com/localstack/localstack/pull/6714
    • add new pluggable initialization hooks by @thrau in https://github.com/localstack/localstack/pull/6716
    • Kinesis: SubscribeToShard session cut after 5min by @ackdav in https://github.com/localstack/localstack/pull/6732
    • improve fixtures by @calvernaz in https://github.com/localstack/localstack/pull/6770
    • update Docker base image (python:3.10.6-slim-buster) digest to f17c949 by @renovate in https://github.com/localstack/localstack/pull/6773
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6774
    • refactor stepfunctions installer by @baermat in https://github.com/localstack/localstack/pull/6755
    • Add support for AWS::Lambda::Url by @dominikschubert in https://github.com/localstack/localstack/pull/6765
    • pin hypercorn to 0.13.2 by @thrau in https://github.com/localstack/localstack/pull/6779
    • Add parity tests and refactor logic for CFn stack resource updates by @whummer in https://github.com/localstack/localstack/pull/6780
    • migrate Kinesis to ASF by @alexrashed in https://github.com/localstack/localstack/pull/6166
    • Result Handler for Kms Key by @pinzon in https://github.com/localstack/localstack/pull/6776
    • fix issue #6740 max message size by @rjmcginness in https://github.com/localstack/localstack/pull/6767
    • Moto v4 by @viren-nadkarni in https://github.com/localstack/localstack/pull/6430
    • fix CBOR datetime encoding by @alexrashed in https://github.com/localstack/localstack/pull/6791
    • POC of global tables version 2019 by @giograno in https://github.com/localstack/localstack/pull/6744
    • fix service detection for internal service routes by @dfangl in https://github.com/localstack/localstack/pull/6793
    • Bump Node.js binary to version 18 by @whummer in https://github.com/localstack/localstack/pull/6795
    • Fix idempotence of DDB/SFN installer logic to enable running as non-root by @whummer in https://github.com/localstack/localstack/pull/6785
    • AWS Transcribe by @viren-nadkarni in https://github.com/localstack/localstack/pull/6688
    • Remove direct imports of lambda provider by @dfangl in https://github.com/localstack/localstack/pull/6737
    • SNS - fix publish_batch to invalid topic by @bentsku in https://github.com/localstack/localstack/pull/6803
    • Remove xfail flag for test to run container as non-root by @whummer in https://github.com/localstack/localstack/pull/6801
    • Fix dot in field name in skip_verification_path for snapshots by @bentsku in https://github.com/localstack/localstack/pull/6802
    • upgrade moto-ext to 4.0.1.post2 by @thrau in https://github.com/localstack/localstack/pull/6810

    New Contributors

    • @sreeo made their first contribution in https://github.com/localstack/localstack/pull/6665
    • @ackdav made their first contribution in https://github.com/localstack/localstack/pull/6732
    • @rjmcginness made their first contribution in https://github.com/localstack/localstack/pull/6767

    Full Changelog: https://github.com/localstack/localstack/compare/v1.0.4...v1.1.0

    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Aug 8, 2022)

    What's Changed

    • move tests out to community by @calvernaz in https://github.com/localstack/localstack/pull/6542
    • remove region lookup by @calvernaz in https://github.com/localstack/localstack/pull/6560
    • update Docker base image (python:3.10.5-slim-buster) digest to e7fce98 by @renovate in https://github.com/localstack/localstack/pull/6561
    • use multiprocessing for scaffold.upgrade by @thrau in https://github.com/localstack/localstack/pull/6559
    • add gateway response handler to set connection close header by @thrau in https://github.com/localstack/localstack/pull/6558
    • add snapshot examples by @steffyP in https://github.com/localstack/localstack/pull/6569
    • fix sns duplicated tags + validate against AWS by @bentsku in https://github.com/localstack/localstack/pull/6571
    • Enhance parity for SSM logic and integration tests by @whummer in https://github.com/localstack/localstack/pull/6564
    • add sqs snapshot tests for queue attributes and SSE by @thrau in https://github.com/localstack/localstack/pull/6572
    • Parity metrics report by @steffyP in https://github.com/localstack/localstack/pull/6441
    • Minor: add unit test for Velocity map.put function inside $util.qr by @whummer in https://github.com/localstack/localstack/pull/6581
    • Make lambda states reflect internal state by @dfangl in https://github.com/localstack/localstack/pull/6575
    • mark sqs test for issue #4287 as working by @thrau in https://github.com/localstack/localstack/pull/6578
    • fix error serialization for default error members by @alexrashed in https://github.com/localstack/localstack/pull/6583
    • refactored LogsAwsApiListener for subclassing by @steffyP in https://github.com/localstack/localstack/pull/6582
    • add streaming types to ASF scaffold and APIs by @thrau in https://github.com/localstack/localstack/pull/6552
    • Enhance parity for basic CloudFormation stack attributes by @whummer in https://github.com/localstack/localstack/pull/6584
    • refactor sns tests and fifo topic validations by @bentsku in https://github.com/localstack/localstack/pull/6586
    • Pin flask to 2.1.3 for compatibility with werkzeug version pin by @whummer in https://github.com/localstack/localstack/pull/6593
    • rework SQS message delaying to calculate approximate number of messages delayed by @thrau in https://github.com/localstack/localstack/pull/6591
    • fix SQS ChangeVisibilityTimeout operation by @thrau in https://github.com/localstack/localstack/pull/6573
    • Resetting store bundles must clear all keys by @viren-nadkarni in https://github.com/localstack/localstack/pull/6594
    • [SecretsManager] Fixed raising of incorrect error message when creating a secret staged for deletion. by @MEPalma in https://github.com/localstack/localstack/pull/6547
    • Change error message for missing endpoints to reference PRO by @silv-io in https://github.com/localstack/localstack/pull/6579
    • Using Stores in DynamoDB by @giograno in https://github.com/localstack/localstack/pull/6554
    • Return stream name for CFn Firehose stream Ref, add snapshot test by @whummer in https://github.com/localstack/localstack/pull/6580
    • fix create_queue to raise QueueAlreadyExists correctly by @thrau in https://github.com/localstack/localstack/pull/6117
    • added subnet test cases by @macnev2013 in https://github.com/localstack/localstack/pull/6541
    • Bump moto-ext to latest upstream changes by @whummer in https://github.com/localstack/localstack/pull/6517
    • Fix idempotent calls for transaction writes by @giograno in https://github.com/localstack/localstack/pull/6596
    • remove publish_invocation decorator from localstack status commands by @thrau in https://github.com/localstack/localstack/pull/6616
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6609
    • update Docker base image (python:3.10.5-slim-buster) digest to e72f92b by @renovate in https://github.com/localstack/localstack/pull/6607

    Full Changelog: https://github.com/localstack/localstack/compare/v1.0.3...v1.0.4

    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Jul 30, 2022)

    What's Changed

    • fix pypi release of localstack not including entrypoints
    • fix Kinesis CreateStream without shardCount by @alexrashed in https://github.com/localstack/localstack/pull/6543
    • fix MixedCase Boolean conversion when tranforming to XML by @merowinger92 in https://github.com/localstack/localstack/pull/6525
    • fix structure of S3 ASF serialized errors by @alexrashed in https://github.com/localstack/localstack/pull/6548

    Full Changelog: https://github.com/localstack/localstack/compare/v1.0.2...v1.0.3

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Jul 30, 2022)

    What's Changed

    • Moving zip utilities by @giograno in https://github.com/localstack/localstack/pull/6490
    • Changing ACM certificate fixture to handle regions as input parameters. by @taras-kobernyk-localstack in https://github.com/localstack/localstack/pull/6479
    • docs: change v1 banner by @HarshCasper in https://github.com/localstack/localstack/pull/6483
    • fix: print conserved docker logs if container is not running by @HarshCasper in https://github.com/localstack/localstack/pull/6477
    • fix ASF / botocore CBOR decoding by @alexrashed in https://github.com/localstack/localstack/pull/6494
    • Rework RegionBackend by @viren-nadkarni in https://github.com/localstack/localstack/pull/6444
    • Upgrade JAR files to resolve some recent security vulnerabilities by @whummer in https://github.com/localstack/localstack/pull/6496
    • Migrate to amazon_kclpy v2, remove obsolete custom patches by @whummer in https://github.com/localstack/localstack/pull/6502
    • fix podman compatibility for list_containers in container utils by @hans-d in https://github.com/localstack/localstack/pull/6508
    • Avoid shell expansion for zip utils by @giograno in https://github.com/localstack/localstack/pull/6497
    • Pin quart and werkzeug versions to fix recent changes in req ctx stack, URL Map by @whummer in https://github.com/localstack/localstack/pull/6514
    • Update README.md by @bish0polis in https://github.com/localstack/localstack/pull/6510
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6515
    • fix Kinesis GetRecords on empty streams by @alexrashed in https://github.com/localstack/localstack/pull/6516
    • fix type hint compatibility in aws_stack.py by @thrau in https://github.com/localstack/localstack/pull/6512
    • Fix pytest log capture for integration tests by @dfangl in https://github.com/localstack/localstack/pull/6519
    • Utility to restart Docker containers by @viren-nadkarni in https://github.com/localstack/localstack/pull/6489
    • Fix Swagger spec imports of REST APIs with base paths by @whummer in https://github.com/localstack/localstack/pull/6520
    • bump moto-ext version to 3.1.13 by @steffyP in https://github.com/localstack/localstack/pull/6524
    • Minor: Skip upgrading JAR file if local version already matches by @whummer in https://github.com/localstack/localstack/pull/6534
    • fix EC2 ASF error serialization and botocore parsing by @alexrashed in https://github.com/localstack/localstack/pull/6535
    • added cloudwatch enable/disable actions by @steffyP in https://github.com/localstack/localstack/pull/6491
    • Add timestamp to SES retrospection messages by @viren-nadkarni in https://github.com/localstack/localstack/pull/6526
    • run tests with snapshot verify by default by @steffyP in https://github.com/localstack/localstack/pull/6518

    New Contributors

    • @taras-kobernyk-localstack made their first contribution in https://github.com/localstack/localstack/pull/6479
    • @hans-d made their first contribution in https://github.com/localstack/localstack/pull/6508
    • @bish0polis made their first contribution in https://github.com/localstack/localstack/pull/6510

    Full Changelog: https://github.com/localstack/localstack/compare/v1.0.1...v1.0.2

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Jul 20, 2022)

    What's Changed

    • Remove python 3.6 compatibility mention from README, minor readme updates by @dfangl in https://github.com/localstack/localstack/pull/6452
    • fix moto fallback dispatching on 404 errors by @alexrashed in https://github.com/localstack/localstack/pull/6449
    • fix content based message deduplication with sqs fifo queues by @thrau in https://github.com/localstack/localstack/pull/6460
    • fix integration tests against pro by @alexrashed in https://github.com/localstack/localstack/pull/6461
    • remove fix_return_consumed_capacity, fixes #6437 by @brandonstubbs in https://github.com/localstack/localstack/pull/6439
    • fix authorizer object for rest api by @calvernaz in https://github.com/localstack/localstack/pull/6436
    • update Docker base image (python:3.10.5-slim-buster) digest to 1839c4f by @renovate in https://github.com/localstack/localstack/pull/6469
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6470
    • added support for route53resolver group association by @macnev2013 in https://github.com/localstack/localstack/pull/6423
    • fix CLA allowlist (renamve renovate-bot to renovate) by @alexrashed in https://github.com/localstack/localstack/pull/6472
    • Fix volume dir path replacement for windows paths, use docker cmd client if not in docker by @dfangl in https://github.com/localstack/localstack/pull/6474
    • add ec2 vpc terraform test cases by @macnev2013 in https://github.com/localstack/localstack/pull/6478
    • Fix windows volume mount path for CLI localstack start by @dfangl in https://github.com/localstack/localstack/pull/6482
    • Remove API_REGIONS cache, replace with in-memory lookup by @whummer in https://github.com/localstack/localstack/pull/6487
    • Canonicalize Lambda policy name, initialize service provider in run_lambda(..) by @whummer in https://github.com/localstack/localstack/pull/6485
    • fix ASF error serialization for shapes w/ members by @alexrashed in https://github.com/localstack/localstack/pull/6246

    New Contributors

    • @brandonstubbs made their first contribution in https://github.com/localstack/localstack/pull/6439

    Full Changelog: https://github.com/localstack/localstack/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jul 13, 2022)

    This major release of LocalStack marks the first milestone of LocalStack's mission to become the standard platform for local cloud development. We have spent the last year significantly re-shaping the codebase to make it easier to introduce and extend AWS services, improving parity with AWS and introducing mechanisms to monitor parity, as well as adding new pro features.

    Several of these changes require a migration, and we have done our best to make the migration as smooth as possible. Please find more in the How to Migrate section.

    Summary

    Community Features and Major Changes

    • New filesystem hierarchy with simplified configuration
    • Full rollout of the AWS Server Framework (ASF)
    • A framework for testing and reporting parity with AWS
    • All new logging output and error reporting
    • Remove deprecated persistence provider

    Pro Features

    • Cloud Pods experience
    • Revamp of multi-account setups (experimental)
    • Introducing Extensions (experimental)
    • IAM enforcement for all services
    • Detailed stack analytics

    Further Reading

    For more details of how things are changing, feel free to continue reading:

    • Our v1 release blog article (link will follow)
    • https://discuss.localstack.cloud/

    How to Migrate

    • Update your startup configurations to the new LocalStack volume directory. Find out more about the concept in our docs.
      • Starting with docker-compose: Update your volumes mounts from

             volumes:
              - "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
        

        to

             volumes:
              - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
        
      • Starting with docker directly: Update your volume mounts from docker run -p 4566:4566 -v /tmp/localstack:/tmp/localstack ... to docker run -p 4566:4566 -v /path/to/volume:/var/lib/localstack ... where /path/to/volume should be something outside your host’s temp folder. We encourage the cache directory of your system, which is what the LocalStack CLI does.

      • Starting with the CLI: Just update to the latest version of the CLI with pip install --upgrade localstack. The latest version of the CLI already uses the new LocalStack volume directory. *The volume directory can be configured via the LOCALSTACK_VOLUME_DIR, which defaults to:

        • Mac: ~/Library/Caches/localstack/volume
        • Linux: ~/.cache/localstack/volume
        • Windows: %LOCALAPPDATA%/localstack/cache/volume
    • The old filesystem hierarchy (including /tmp/localstack mounts,DATA_DIRand HOST_TMP_PATH) can be enabled using LEGACY_DIRECTORIES=1
    • If you mount a volume into /tmp/localstack instead of /var/lib/localstack, then LocalStack will automatically enable LEGACY_DIRECTORIES=1, and print a deprecation warning.
    • You currently cannot set the configure the new filesystem hierarchy with the CLI version 0.14.x, in order to use the development version of the CLI, please run pip install --upgrade "localstack>=1.0.0.dev"
    • Remove DATA_DIR which has been deprecated and will be ignored. Use PERSISTENCE=1 and find your state files in your LocalStack volume in state/
    • Remove HOST_TMP_PATH, which was previously necessary for LAMBDA_EXECUTOR=docker or docker-reuse. We now detect automatically the host path that is mounted into Lambda containers from your LocalStack volume mount.
    • When using docker-compose, remove the network_mode: bridge configuration unless you are sure that you need it. We now automatically detect the network mode for Lambda networking.
    • We’ve rolled out a completely new framework for handling AWS requests, the AWS Server Framework (ASF). This has replaced the edge proxy, which was previously handling all HTTP requests. If you are experiencing problems, as a workaround you can try to enable the old edge proxy with LEGACY_EDGE_PROXY=1 but this is deprecated and will be removed in the future.
    • Enable the experimental multi-accounts feature by setting MULTI_ACCOUNTS=1 as part of your LocalStack config. New AWS accounts will be allocated based on configuration from the client side. See our docs for details
    • Replay-based persistence as been removed. To use our more mature persistence mechanism, please consider upgrading to LocalStack Pro.

    Changelog

    • docs: add v1 release banner by @HarshCasper in https://github.com/localstack/localstack/pull/6427
    • add new log output formatting and asf trace logging by @thrau in https://github.com/localstack/localstack/pull/6424
    • set analytics api version to v1 by @thrau in https://github.com/localstack/localstack/pull/6431
    • collect parity metrics by @steffyP in https://github.com/localstack/localstack/pull/6305
    • fix logging for CLI by @thrau in #6432
    • set analytics api version to v1 by @thrau in #6431
    • add new log output formatting and asf trace logging by @thrau in #6424
    • fix parse_response to handle streaming responses by @thrau in #6415
    • add response parser to handler chain by @thrau in #6406
    • add deprecation path for LEGACY_DIRECTORIES=1 by @thrau in #6400
    • update .dockerignore to new filesystem hierarchy by @thrau in #6399
    • Remove deprecated docker-compose defaults by @dfangl in #6397
    • implement localstack python extensions framework by @thrau in #6387
    • implement HTTP proxy framework by @thrau in #6386
    • fix None check in AccountIdEnricher by @thrau in #6385
    • Fix host path replacement for lambda volume mounts by @dfangl in #6378
    • fix apigw LambdaResponse with async invocation to return empty body by @thrau in #6349
    • fix s3 delete_bucket compatibility with ASF gateway by @thrau in #6348
    • fix pickling in multi-account region backend by @thrau in #6346
    • Multi accounts feature flag by @viren-nadkarni in #6331
    • Setting LS default user to root, support user permission boundary by @dfangl in #6324
    • Default access key for legacy gateway by @viren-nadkarni in #6322
    • collect parity metrics by @steffyP in #6305
    • add new localstack filesystem hierarchy by @thrau in #6302
    • fix access key id auth header extraction for different signature versions by @viren-nadkarni in #6292
    • fix ASF integration of to_invocation_context by @thrau in #6284
    • fix s3 VirtualHostRewriter to also restore RAW_URI by @thrau in #6276
    • periodically emit analytcs events containing aggregated HTTP response metrics by @SwatsonCodes in #6269
    • use asf gateway as default by @thrau in #6206
    • make asf apigateway provider the default by @thrau in #6177
    • Use Moto account ID resolver by @viren-nadkarni in #6104
    • Cleanup replay-based persistence by @giograno in #6041
    • fix python 3.7 compat of setup_hypercorn_logger for cli by @thrau in https://github.com/localstack/localstack/pull/6433
    • fix aws header list parsing by @thrau in https://github.com/localstack/localstack/pull/6435
    • Make SERVICES act as preload-list for EAGER_SERVICE_LOADING by @dfangl in https://github.com/localstack/localstack/pull/6438
    • Fixes #6405 Kms import key material ignores requested wrapping algo by @srgg in https://github.com/localstack/localstack/pull/6407
    • update readme header to new theme by @thrau in https://github.com/localstack/localstack/pull/6446

    New Contributors

    • @srgg made their first contribution in https://github.com/localstack/localstack/pull/6407

    Full Changelog: https://github.com/localstack/localstack/compare/v0.14.5...v1.0.0

    Source code(tar.gz)
    Source code(zip)
  • v0.14.5(Jul 13, 2022)

    Summary

    This release contains a number of improvements and fixes, as well as some new feature highlights:

    • add initial support for nodejs16.x runtime by @pksunkara in #6200
    • support binary content in DynamoDB Streams @giograno in #6371
    • add plugin installation for OpenSearch 1.1+ by @alexrashed in #6395
    • add validation of API Gateway Lambda integration responses by @pinzon in #6170
    • enhance parity for SNS MessageAttributes consumed by AWS Java SDK by @bentsku in #6373

    This is the last planned patch release before our upcoming major release 1.0.

    What's Changed

    • update Docker base image (python:3.10.5-slim-buster) digest to a2e9d4e by @renovate in https://github.com/localstack/localstack/pull/6350
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6351
    • fix docker inspect health check log output by @alexrashed in https://github.com/localstack/localstack/pull/6338
    • fix ASF API GW / ASF HTTP gateway headers by @alexrashed in https://github.com/localstack/localstack/pull/6354
    • Add notification configuration id to event message by @silv-io in https://github.com/localstack/localstack/pull/6353
    • Allow SES emails to be filterable by message ID by @viren-nadkarni in https://github.com/localstack/localstack/pull/6340
    • add convenience GitHub workflows for release branches by @alexrashed in https://github.com/localstack/localstack/pull/6363
    • Fix SizeBytes calculation for non serializable items by @giograno in https://github.com/localstack/localstack/pull/6365
    • Add pip install to ensure latest dev releases are not overwritten by @whummer in https://github.com/localstack/localstack/pull/6359
    • Refactored integration test by @giograno in https://github.com/localstack/localstack/pull/6347
    • Add temporary support for nodejs16.x runtime by @pksunkara in https://github.com/localstack/localstack/pull/6200
    • Add test for ES6 export syntax with NodeJS runtimes in Lambda by @dominikschubert in https://github.com/localstack/localstack/pull/6372
    • fix GitHub action user (use PAT of @localstack-bot) by @alexrashed in https://github.com/localstack/localstack/pull/6376
    • fix CI dep issues for newly introduced ext runtime deps by @alexrashed in https://github.com/localstack/localstack/pull/6388
    • Minor fixes to mark DynamoDB test with binary data as aws_validated by @whummer in https://github.com/localstack/localstack/pull/6390
    • fix SNS MessageAttributes parity with AWS by @bentsku in https://github.com/localstack/localstack/pull/6373
    • fix missing (rest-)json error type header field by @alexrashed in https://github.com/localstack/localstack/pull/6370
    • add plugin installation for opensearch 1.1+ by @alexrashed in https://github.com/localstack/localstack/pull/6395
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6394
    • DynamoDB streaming binary content by @giograno in https://github.com/localstack/localstack/pull/6371
    • minor: Add test dependency to deepdiff by @whummer in https://github.com/localstack/localstack/pull/6401
    • Add fallback to default provider if configured provider is not available by @dfangl in https://github.com/localstack/localstack/pull/6391
    • APIGW Lambda integration validations by @pinzon in https://github.com/localstack/localstack/pull/6170
    • Refactor Events test by @pinzon in https://github.com/localstack/localstack/pull/6239
    • terraform test execution in CI by @macnev2013 in https://github.com/localstack/localstack/pull/6393
    • fix cryptography updates / remove pin by @alexrashed in https://github.com/localstack/localstack/pull/6402
    • added support for firewall rule groups by @macnev2013 in https://github.com/localstack/localstack/pull/6366
    • drop support for specific node, ruby & dotnet lambda runtime versions by @HarshCasper in https://github.com/localstack/localstack/pull/6403
    • add exception metadata to ASF generated ServiceException by @thrau in https://github.com/localstack/localstack/pull/6409
    • add logs for lambda executor startup failure and removing containers on shutdown by @dfangl in https://github.com/localstack/localstack/pull/6404
    • fix lambda ASF API updates by @alexrashed in https://github.com/localstack/localstack/pull/6411
    • fix asgi header extraction for h11 and h2 by @thrau in https://github.com/localstack/localstack/pull/6413
    • Fix default content-type for APIGW-Lambda integration by @pinzon in https://github.com/localstack/localstack/pull/6408
    • Install sqlite native libs for DynamoDB on OSX arm64 (M1) by @whummer in https://github.com/localstack/localstack/pull/6417
    • remove terraform restore cache keys by @dfangl in https://github.com/localstack/localstack/pull/6418
    • Validate KMS tests and fix issues by @silv-io in https://github.com/localstack/localstack/pull/6335

    New Contributors

    • @pksunkara made their first contribution in https://github.com/localstack/localstack/pull/6200

    Full Changelog: https://github.com/localstack/localstack/compare/v0.14.4...v0.14.5

    Source code(tar.gz)
    Source code(zip)
  • v0.14.4(Jun 26, 2022)

    Summary

    This release contains a wealth of parity improvements and fixes. It also includes a number of new features:

    • Swagger and OpenAPI export for API Gateway REST APis #5935
    • Cloudformation EC2::Subnet support #6162
    • Cloudformation AWS::OpenSearchService::Domain support #6199
    • A healthcheck for the Docker container #6297
    • S3 TagObject notifications #6099
    • A new HTTP gateway that we will roll out for 1.0 (can be enabled with LEGACY_EDGE_PROXY=0) #5243

    This will potentially be the last release before our next major release.

    What's Changed

    • ASF protocol cleanup / small enhancements by @alexrashed in https://github.com/localstack/localstack/pull/6095
    • improve SQS receipt handle error parity by @thrau in https://github.com/localstack/localstack/pull/6103
    • Validations for Events.CreateConnection by @pinzon in https://github.com/localstack/localstack/pull/5964
    • Slight refactoring to allow customizing DynamoDB server startup by @giograno in https://github.com/localstack/localstack/pull/6109
    • Bump gson from 2.8.6 to 2.8.9 in /tests/integration/awslambda/functions/java/lambda_echo by @dependabot in https://github.com/localstack/localstack/pull/6112
    • fix SQS dead letter queue delivery for fifo queues by @thrau in https://github.com/localstack/localstack/pull/6115
    • fix SQS ReceiveMessage blocking behavior when MaxNumberOfMessages is set by @thrau in https://github.com/localstack/localstack/pull/6118
    • Typo API Gateway Provider validateRequestPparameters by @nicoandra in https://github.com/localstack/localstack/pull/6113
    • Draft: Add object tagging notification support by @threewordphrase in https://github.com/localstack/localstack/pull/6099
    • update Docker base image (python:3.10.4-slim-buster) digest to 152f6ea by @renovate in https://github.com/localstack/localstack/pull/6120
    • Add default UserName for AWS::IAM::User by @dominikschubert in https://github.com/localstack/localstack/pull/6122
    • Use asyncio run_in_executor to prevent is_ssl_socket check from blocking by @dfangl in https://github.com/localstack/localstack/pull/6123
    • Add hosts file to container to fix performance issues in windows container mode by @dfangl in https://github.com/localstack/localstack/pull/6129
    • fix sqs query-api endpoint strategy routing by @thrau in https://github.com/localstack/localstack/pull/6145
    • Fix references to AWS managed policies in SAM templates by @dominikschubert in https://github.com/localstack/localstack/pull/6148
    • fix SQS ApproximateFirstReceiveTimestamp type by @thrau in https://github.com/localstack/localstack/pull/6147
    • Fix cfn apigw domain tags by @pinzon in https://github.com/localstack/localstack/pull/6110
    • Fix event message parameters priority by @pinzon in https://github.com/localstack/localstack/pull/5959
    • Feature apigateway rest swagger export by @calvernaz in https://github.com/localstack/localstack/pull/5935
    • Add test for catch/retry mechanism in StepFunctions by @dominikschubert in https://github.com/localstack/localstack/pull/6144
    • Bump moto-ext to version 3.1.10 by @whummer in https://github.com/localstack/localstack/pull/6154
    • Introduce BackendStateLifecycle abstraction by @giograno in https://github.com/localstack/localstack/pull/6114
    • add SQS feature flag to raise QueueDeletedRecently errors by @thrau in https://github.com/localstack/localstack/pull/6140
    • TransactWriteItem for binary data by @giograno in https://github.com/localstack/localstack/pull/6152
    • update Docker base image (python:3.10.4-slim-buster) digest to 7e650ce by @renovate in https://github.com/localstack/localstack/pull/6164
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6165
    • Update redhat image to python 3.10 by @dfangl in https://github.com/localstack/localstack/pull/6169
    • add option to select test cases by fixture usage by @dominikschubert in https://github.com/localstack/localstack/pull/6175
    • Fix CFN Events create rule without targets by @pinzon in https://github.com/localstack/localstack/pull/6061
    • add apigateway restapi dispatcher to edge router by @thrau in https://github.com/localstack/localstack/pull/6040
    • minor fix to allow authorization context permeate into lambda event by @calvernaz in https://github.com/localstack/localstack/pull/6174
    • Fix SNS format when delivering to a DLQ by @bentsku in https://github.com/localstack/localstack/pull/6168
    • Add error handling for localstack container startup in CLI by @dfangl in https://github.com/localstack/localstack/pull/6178
    • Add CFn support for remaining EC2::Subnet properties by @whummer in https://github.com/localstack/localstack/pull/6162
    • pin opensearch-py to version 1.1.0 by @steffyP in https://github.com/localstack/localstack/pull/6184
    • Added explicit check for a bucket when deploying a stack by @giograno in https://github.com/localstack/localstack/pull/6171
    • Kinesis - option for persistence path by @giograno in https://github.com/localstack/localstack/pull/6179
    • fix apigateway delete_rest_api method by @thrau in https://github.com/localstack/localstack/pull/6185
    • Add snapshot transformers by @dominikschubert in https://github.com/localstack/localstack/pull/6127
    • add two more labels to 'exempt-issue-labels' for the stale-bot by @steffyP in https://github.com/localstack/localstack/pull/6189
    • prepare s3 for ASF gateway by @thrau in https://github.com/localstack/localstack/pull/6191
    • fix HypercornServer API and test to allow multiple instances by @thrau in https://github.com/localstack/localstack/pull/6190
    • fix IAM exception handling by @thrau in https://github.com/localstack/localstack/pull/6192
    • chore: remove chart release workflow by @HarshCasper in https://github.com/localstack/localstack/pull/6195
    • switch to dev release versioning by @alexrashed in https://github.com/localstack/localstack/pull/6198
    • implement ExclusiveStartShardId for DynamoDB Streams describe_stream by @bentsku in https://github.com/localstack/localstack/pull/6186
    • test: invalidates #5395 by @dhilipsiva in https://github.com/localstack/localstack/pull/6159
    • implement new HTTP request handling framework by @thrau in https://github.com/localstack/localstack/pull/5243
    • fix and clean up sns tests to use httpserver fixture by @thrau in https://github.com/localstack/localstack/pull/6211
    • fixed: route53 get-health-check response by @macnev2013 in https://github.com/localstack/localstack/pull/6205
    • fix test_redrive_policy_http_subscription to correctly consume subscription notification by @thrau in https://github.com/localstack/localstack/pull/6219
    • fix and clean up flaky cfn tests by @thrau in https://github.com/localstack/localstack/pull/6213
    • fix concurrency of dynamodbstreams sequence number by @thrau in https://github.com/localstack/localstack/pull/6214
    • update Docker base image (python:3.10.4-slim-buster) digest to b59fd1a by @renovate in https://github.com/localstack/localstack/pull/6208
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6220
    • fix domain name validation in opensearch CreateDomain operation by @thrau in https://github.com/localstack/localstack/pull/6207
    • Add AWS::OpenSearchService::Domain by @silv-io in https://github.com/localstack/localstack/pull/6199
    • fix log subscription: return id as string by @steffyP in https://github.com/localstack/localstack/pull/6202
    • Add tests which verify EventBridge rules behavior by @lukqw in https://github.com/localstack/localstack/pull/6124
    • fix op router for new HTTP gateway requests with slashes by @alexrashed in https://github.com/localstack/localstack/pull/6223
    • add websocket route to ApiInvocationContext by @calvernaz in https://github.com/localstack/localstack/pull/6230
    • Fix CLI remove Literal type for 3.6 and 3.7 compatibility by @bentsku in https://github.com/localstack/localstack/pull/6231
    • chore: remove banner image by @HarshCasper in https://github.com/localstack/localstack/pull/6235
    • remove itest-sqs-provider test from CI pipeline by @thrau in https://github.com/localstack/localstack/pull/6236
    • Initialize ws route by @calvernaz in https://github.com/localstack/localstack/pull/6241
    • add composite handler for asf handler chain by @thrau in https://github.com/localstack/localstack/pull/6240
    • add .env to .gitignore by @lukqw in https://github.com/localstack/localstack/pull/6232
    • Exit pytest when encountering duplicate fixture names by default by @dominikschubert in https://github.com/localstack/localstack/pull/6244
    • Removed duplicated SNSBackend by @giograno in https://github.com/localstack/localstack/pull/6243
    • Add snapshot tests for s3 and cloudformation iam by @steffyP in https://github.com/localstack/localstack/pull/6222
    • refactor state serializer api to use werkzeug request by @thrau in https://github.com/localstack/localstack/pull/6250
    • add pluggable response handler for asf handler chain by @thrau in https://github.com/localstack/localstack/pull/6251
    • chore: add localstack discussion page by @HarshCasper in https://github.com/localstack/localstack/pull/6249
    • Allow TCP proxying with client certs without h11 by @dfangl in https://github.com/localstack/localstack/pull/6252
    • minor fix to include request parameters while importing openapi by @calvernaz in https://github.com/localstack/localstack/pull/6255
    • update Docker base image (python) tag to v3.10.5 by @renovate in https://github.com/localstack/localstack/pull/6259
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6260
    • Test for IAM service linked role naming parity by @lukqw in https://github.com/localstack/localstack/pull/6182
    • add dlq-list-sources by @baermat in https://github.com/localstack/localstack/pull/5915
    • Add filtering for names provided with name_query for GetApiKeys method by @dfangl in https://github.com/localstack/localstack/pull/6261
    • Migrate labels to their new names by @silv-io in https://github.com/localstack/localstack/pull/6263
    • refactor API Gateway ASF provier / routing by @alexrashed in https://github.com/localstack/localstack/pull/6267
    • Fix HTTP status for InvalidObjectState error code by @luisgabrielroldan in https://github.com/localstack/localstack/pull/6257
    • Fix: auto confirm SNS subscription for lambda endpoint by @bentsku in https://github.com/localstack/localstack/pull/6270
    • CI: Add a GHA to keep DockerHub description in sync by @HarshCasper in https://github.com/localstack/localstack/pull/6265
    • fix ASF gateway forwarding by @alexrashed in https://github.com/localstack/localstack/pull/6273
    • Cloud formation removal of unsupported and supported resources by @lukqw in https://github.com/localstack/localstack/pull/6167
    • Improve parity of EncodingType and Delimiter in S3 list_objects response by @whummer in https://github.com/localstack/localstack/pull/6295
    • CI: add paths and concurrency to pro integration workflow by @HarshCasper in https://github.com/localstack/localstack/pull/6283
    • update CODEOWNERS to make bentsku the SNS owner by @thrau in https://github.com/localstack/localstack/pull/6299
    • remove node package.json and move node modules into static_libs dir by @thrau in https://github.com/localstack/localstack/pull/6300
    • Fix ConfirmSubscription in SNS http endpoint, match AWS behaviour by @bentsku in https://github.com/localstack/localstack/pull/6268
    • Add simple hashable dict util class by @whummer in https://github.com/localstack/localstack/pull/6309
    • fix detection of timestream requests in service router by @alexrashed in https://github.com/localstack/localstack/pull/6311
    • GCM support for SNS by @pinzon in https://github.com/localstack/localstack/pull/6256
    • fix crypto unit tests by @alexrashed in https://github.com/localstack/localstack/pull/6318
    • add rds docdb and neptune to the list of known API conflicts by @thrau in https://github.com/localstack/localstack/pull/6319
    • Add HEALTHCHECK to Dockerfile by @cspray in https://github.com/localstack/localstack/pull/6297
    • Make hashable list/dict util classes immutable by @whummer in https://github.com/localstack/localstack/pull/6314
    • fix aws service router to match endpointPrefixes on the host by @thrau in https://github.com/localstack/localstack/pull/6320
    • Accept string value for maxReceiveCount by @7nohe in https://github.com/localstack/localstack/pull/6313
    • fix mock integration invocations by @calvernaz in https://github.com/localstack/localstack/pull/6279
    • Bump moto-ext to 3.1.12 by @whummer in https://github.com/localstack/localstack/pull/6323
    • Attach additional attributes to S3 bucket objects instead of using global dicts by @whummer in https://github.com/localstack/localstack/pull/6325
    • fix multi-registration of shared ASF API GW router by @alexrashed in https://github.com/localstack/localstack/pull/6330
    • fix to skip openapi authorizers that are not extensions by @calvernaz in https://github.com/localstack/localstack/pull/6277
    • Add handling of KMS ListAliases call with KeyId by @silv-io in https://github.com/localstack/localstack/pull/6262
    • Add workaround for union isinstance in PortMappings for python lower 3.10 by @dfangl in https://github.com/localstack/localstack/pull/6336
    • add support for apigateway lambda asynchronous invocations by @calvernaz in https://github.com/localstack/localstack/pull/6258
    • CFN Stack timestamps attributes by @pinzon in https://github.com/localstack/localstack/pull/6194
    • GitHub action build matrix for CLI tests by @dfangl in https://github.com/localstack/localstack/pull/6339
    • fix lambda integration output response by @calvernaz in https://github.com/localstack/localstack/pull/6289
    • Option for persistence path to stepfunctions by @giograno in https://github.com/localstack/localstack/pull/6316
    • fix asf apigateway lambda response conversion by @thrau in https://github.com/localstack/localstack/pull/6343
    • fix passing down of use_ssl when starting edge by @thrau in https://github.com/localstack/localstack/pull/6345
    • fix S3 BackendState to raise ASF NoSuchBucket exception by @thrau in https://github.com/localstack/localstack/pull/6344

    New Contributors

    • @dependabot made their first contribution in https://github.com/localstack/localstack/pull/6112
    • @nicoandra made their first contribution in https://github.com/localstack/localstack/pull/6113
    • @threewordphrase made their first contribution in https://github.com/localstack/localstack/pull/6099
    • @bentsku made their first contribution in https://github.com/localstack/localstack/pull/6168
    • @dhilipsiva made their first contribution in https://github.com/localstack/localstack/pull/6159
    • @lukqw made their first contribution in https://github.com/localstack/localstack/pull/6124
    • @luisgabrielroldan made their first contribution in https://github.com/localstack/localstack/pull/6257
    • @cspray made their first contribution in https://github.com/localstack/localstack/pull/6297
    • @7nohe made their first contribution in https://github.com/localstack/localstack/pull/6313

    Full Changelog: https://github.com/localstack/localstack/compare/v0.14.3...v0.14.4

    Source code(tar.gz)
    Source code(zip)
  • v0.14.3(May 19, 2022)

    LocalStack release v0.14.3

    Summary

    This LocalStack release features several improvements and new features in AWS services, a new CLI command, Python 3.10 support, and 10 new open source contributors!

    AWS Services

    CLI command to update LocalStack

    We have introduced a new CLI command that automatically updates LocalStack and its requirements to the latest version:

     % localstack update --help
    Usage: localstack update [OPTIONS] COMMAND [ARGS]...
    
      Update LocalStack components
    
    Options:
      --help  Show this message and exit.
    
    Commands:
      all             Update all LocalStack components
      docker-images   Update container images LocalStack depends on
      localstack-cli  Update LocalStack CLI tools
    

    Other notable updates

    • LocalStack now runs on Python 3.10!
    • Many services have now been successfully migrated to our new framework that handles AWS service requests, this dramatically improves parity and stability of services
    • Deprecation note: The legacy record&replay based persistence mechanism (currently still available via LEGACY_PERSISTENCE) be entirely removed in the next release (as already previously announced in the 0.13.1 release).

    What's Changed

    Features

    • add metric-alarm evaluation to Cloudwatch by @steffyP in https://github.com/localstack/localstack/pull/5897
    • add on failure destination implementation and TRIM_HORIZON starting position for create-event-source-mapping by @steffyP and @SwatsonCodes in https://github.com/localstack/localstack/pull/5807
    • Add localstack update command by @dfangl in https://github.com/localstack/localstack/pull/5955
    • Upgrade python version to 3.10 by @dfangl in https://github.com/localstack/localstack/pull/5632
    • Add dotnet 6 runtime by @yongliu-mdsol in https://github.com/localstack/localstack/pull/5815
    • add SQS Query API by @thrau in https://github.com/localstack/localstack/pull/5928
    • Rework ASF SQS provider for RegionBackend by @viren-nadkarni in https://github.com/localstack/localstack/pull/6016
    • Apigateway OpenAPI import support for authorizers by @calvernaz in https://github.com/localstack/localstack/pull/6013

    Enhancement

    • LocationConstraint should be None for us-east-1 by @pinzon in https://github.com/localstack/localstack/pull/5765
    • Unify Lambda Runtime using Runtime API by @dfangl in https://github.com/localstack/localstack/pull/5306
    • Add newline after XML preamble in S3 responses for Serverless compatibility by @whummer in https://github.com/localstack/localstack/pull/5795
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/5798
    • Deletion of individual statments of a function policy by @pinzon in https://github.com/localstack/localstack/pull/5785
    • Lambda Feature: Throw error when unzipped code exceeds maximum size (~256mb) by @RodrigoATorres in https://github.com/localstack/localstack/pull/5641
    • Rework Lambda Integration tests to work against AWS as well as LocalStack by @dfangl in https://github.com/localstack/localstack/pull/5819
    • Custom header x localstack authorization by @calvernaz in https://github.com/localstack/localstack/pull/5809
    • Migrate DynamoDB to ASF by @whummer in https://github.com/localstack/localstack/pull/5796
    • add cloudformation support for s3 bucket versioning by @dominikschubert in https://github.com/localstack/localstack/pull/5841
    • adds authorizer object to lambda event by @calvernaz in https://github.com/localstack/localstack/pull/5837
    • Added DYNAMODB_SHARE_DB to conf by @giograno in https://github.com/localstack/localstack/pull/5842
    • Add !Ref support for KMS::Alias CloudFormation resources by @whummer in https://github.com/localstack/localstack/pull/5836
    • Add additional awslocal commands for CI smoke tests by @whummer in https://github.com/localstack/localstack/pull/5845
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/5838
    • Update python to 3.8.13 by @dfangl in https://github.com/localstack/localstack/pull/5856
    • add type hints to PaginatedList by @alexrashed in https://github.com/localstack/localstack/pull/5865
    • [ASF] Simple Email Service migration by @viren-nadkarni in https://github.com/localstack/localstack/pull/5771
    • Sns unsubscribe should send a confirmation by @pinzon in https://github.com/localstack/localstack/pull/5874
    • Return successfully when attempting to delete a non-existent secret by @foxmulder900 in https://github.com/localstack/localstack/pull/5873
    • Error message for PAY_PER_REQUEST billing mode by @giograno in https://github.com/localstack/localstack/pull/5877
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/5881
    • update Docker base image (python:3.8.13-slim-buster) digest to 36a1e0b by @renovate in https://github.com/localstack/localstack/pull/5880
    • Add DynamoDB patch to enable more than 20 GSIs on tables by @whummer in https://github.com/localstack/localstack/pull/5883
    • Upgrade moto-ext to version 3.1.6 by @whummer in https://github.com/localstack/localstack/pull/5882
    • Migrate StepFunctions to ASF by @whummer in https://github.com/localstack/localstack/pull/5869
    • update localstack wait command to use docker logs stream by @thrau in https://github.com/localstack/localstack/pull/5885
    • get_handler_file_from_name when path contains periods by @tmbobbins in https://github.com/localstack/localstack/pull/5849
    • Support nested EventBridge patterns, improve parity with AWS by @whummer in https://github.com/localstack/localstack/pull/5879
    • rework localstack.http.Request object to use a dummy WSGi environment by @thrau in https://github.com/localstack/localstack/pull/5876
    • add task scheduler utility by @thrau in https://github.com/localstack/localstack/pull/5857
    • Refactor util to create S3 buckets with location constraints by @whummer in https://github.com/localstack/localstack/pull/5898
    • Test MISSING Function with PartiQL by @giograno in https://github.com/localstack/localstack/pull/5899
    • Bump moto-ext to 3.1.6.1 by @whummer in https://github.com/localstack/localstack/pull/5900
    • queryStringParameters set to None when there are no GET parameters by @jops-wtakase in https://github.com/localstack/localstack/pull/5893
    • Add javaagent loader for DynamoDB local process by @whummer in https://github.com/localstack/localstack/pull/5905
    • add headers to dummy WSGI environment by @thrau in https://github.com/localstack/localstack/pull/5902
    • Minor: Bump version of awscli for compabilibity with poetry by @whummer in https://github.com/localstack/localstack/pull/5912
    • specify content type header with curl PUT request in docker-entrypoint.sh by @nao23 in https://github.com/localstack/localstack/pull/5903
    • move functions to helper module by @calvernaz in https://github.com/localstack/localstack/pull/5925
    • Add SES HTML body to match v2 API spec by @NickGrantX in https://github.com/localstack/localstack/pull/5920
    • Add small utility for base64 URL safe decoding by @whummer in https://github.com/localstack/localstack/pull/5932
    • Handling TableClass in DynamoDB by @giograno in https://github.com/localstack/localstack/pull/5923
    • add decorator for adding routes to a Router by @thrau in https://github.com/localstack/localstack/pull/5927
    • Remove explicit object inheritance by @dominikschubert in https://github.com/localstack/localstack/pull/5933
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/5929
    • Allow multiple bind addresses to be passed to hypercorn by @dfangl in https://github.com/localstack/localstack/pull/5937
    • extend s3 virtual host addressing rules exemptions by @thrau in https://github.com/localstack/localstack/pull/5952
    • Apigateway import test extension by @pinzon in https://github.com/localstack/localstack/pull/5953
    • Ensure eventID is contained in DDB stream records by @whummer in https://github.com/localstack/localstack/pull/5960
    • Feature log for fifo queue creating by @pinzon in https://github.com/localstack/localstack/pull/5962
    • migrate cloudformation to ASF by @thrau in https://github.com/localstack/localstack/pull/5965
    • simplify StsAwsApiListener JSON response modification by @thrau in https://github.com/localstack/localstack/pull/5968
    • allow http.Request object to retain dashes and key casing by @thrau in https://github.com/localstack/localstack/pull/5969
    • update Docker base image (python:3.8.13-slim-buster) digest to 8b65f13 by @renovate in https://github.com/localstack/localstack/pull/5971
    • chore: add user survey over README by @HarshCasper in https://github.com/localstack/localstack/pull/5975
    • DynamoDB Streams - code removal by @giograno in https://github.com/localstack/localstack/pull/5981
    • Update README.md by @dijonkitchen in https://github.com/localstack/localstack/pull/5979
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/5973
    • Bump version of moto-ext to 3.1.8 by @whummer in https://github.com/localstack/localstack/pull/5980
    • chore: add a stale bot to manage issues by @HarshCasper in https://github.com/localstack/localstack/pull/5974
    • disable strict slashes for ASF REST operation router by @thrau in https://github.com/localstack/localstack/pull/5983
    • add ASGI to WSGI bridge and hypercorn server abstraction by @thrau in https://github.com/localstack/localstack/pull/5970
    • CI: Add CLA bot by @HarshCasper in https://github.com/localstack/localstack/pull/5993
    • Utility to list loaded services by @giograno in https://github.com/localstack/localstack/pull/5996
    • Update ReadMe to show support for 3.10 by @silv-io in https://github.com/localstack/localstack/pull/6002
    • Enable signal handlers per default for LocalStack inside a docker container by @dfangl in https://github.com/localstack/localstack/pull/6000
    • Allow docker client to modify security opts, explicit exception chaining by @dfangl in https://github.com/localstack/localstack/pull/6001
    • remove unused 'reactive mode' event source listener code by @SwatsonCodes in https://github.com/localstack/localstack/pull/6004
    • Apigateway ASF migration by @calvernaz in https://github.com/localstack/localstack/pull/5731
    • Add support for #return macros in VTL templates by @whummer in https://github.com/localstack/localstack/pull/6010
    • improve openapi import by @calvernaz in https://github.com/localstack/localstack/pull/5939
    • refactor initial set of s3 tests by @thrau in https://github.com/localstack/localstack/pull/6006
    • Add filter for cognito identity fields by @dfangl in https://github.com/localstack/localstack/pull/6005
    • Introduce snapshot tests by @dominikschubert in https://github.com/localstack/localstack/pull/5825
    • configure pytest to log DEBUG to cli by default by @thrau in https://github.com/localstack/localstack/pull/6015
    • Added utility to filter a dictionary based on a TypedDict keys by @giograno in https://github.com/localstack/localstack/pull/6018
    • Asf sns migration by @baermat in https://github.com/localstack/localstack/pull/5654
    • [ASF] iam Migration by @MEPalma in https://github.com/localstack/localstack/pull/5818
    • [ASF] events Migration by @MEPalma in https://github.com/localstack/localstack/pull/5844
    • chore: Set permissions for GitHub actions by @naveensrinivasan in https://github.com/localstack/localstack/pull/6014
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6030
    • update Docker base image (python:3.10.4-slim-buster) digest to 1678c20 by @renovate in https://github.com/localstack/localstack/pull/6029
    • add workaround for s3 virtual host addressing by @thrau in https://github.com/localstack/localstack/pull/6026
    • ignore GET and HEAD request body for rest-xml protocol by @thrau in https://github.com/localstack/localstack/pull/6025
    • Revert "add workaround for s3 virtual host addressing (#6026)" by @dfangl in https://github.com/localstack/localstack/pull/6034
    • Explicit persistence hook argument for a Service by @giograno in https://github.com/localstack/localstack/pull/6020
    • Minor cleanup after events migration by @MEPalma in https://github.com/localstack/localstack/pull/6036
    • Add map, quiet return functions for VTL template rendering by @whummer in https://github.com/localstack/localstack/pull/6035
    • don't suppress stage variables from lambda event by @calvernaz in https://github.com/localstack/localstack/pull/6042
    • simplify cloudformation ui resource by @thrau in https://github.com/localstack/localstack/pull/6047
    • Bump moto-ext to 3.1.9 by @whummer in https://github.com/localstack/localstack/pull/6037
    • Refactor container network connection to reuse it outside of lambda by @dfangl in https://github.com/localstack/localstack/pull/6052
    • Initial CFn support for UsePreviousValue to enable idempotent CDK bootstraps by @whummer in https://github.com/localstack/localstack/pull/6053
    • Update ASF APIs by @localstack-bot in https://github.com/localstack/localstack/pull/6067
    • move import_rest_api patch into ASF handler by @calvernaz in https://github.com/localstack/localstack/pull/6048
    • Unify SES logging format by @viren-nadkarni in https://github.com/localstack/localstack/pull/6060
    • ci: add labeler action by @HarshCasper in https://github.com/localstack/localstack/pull/6068
    • emit analytics event containing CLI command whenever CLI is invoked by @SwatsonCodes in https://github.com/localstack/localstack/pull/6043
    • Add DISABLE_CORS_HEADERS option to disable default CORS headers by @whummer in https://github.com/localstack/localstack/pull/6073
    • Handle Cloudformations empty stack updates by changing the changeset status by @dfangl in https://github.com/localstack/localstack/pull/6080
    • remove delete integration patch by @calvernaz in https://github.com/localstack/localstack/pull/6074
    • migrate apigateway unittest tests to pytest by @calvernaz in https://github.com/localstack/localstack/pull/6092
    • sqs tag map parsing by @thrau in https://github.com/localstack/localstack/pull/6091
    • add initial support for streaming in ASF scaffold and serializer by @alexrashed in https://github.com/localstack/localstack/pull/6086
    • add empty-string validation for sqs user queue attributes by @thrau in https://github.com/localstack/localstack/pull/6090
    • add ASF prototype for server-side parameter validation by @thrau in https://github.com/localstack/localstack/pull/6088

    Fixes

    • Fix KMS_PROVIDER=kms-local back to local-kms by @davecardwell in https://github.com/localstack/localstack/pull/5793
    • Minor fixes for data types handling in CloudFormation deployer by @whummer in https://github.com/localstack/localstack/pull/5794
    • Fix zone-name filter in describe-availability-zones by @viren-nadkarni in https://github.com/localstack/localstack/pull/5800
    • Fix S3 download of XML documents with preamble by @whummer in https://github.com/localstack/localstack/pull/5805
    • fix dynamodb index query validation by @foxmulder900 in https://github.com/localstack/localstack/pull/5799
    • Fix flaky tests: test_dynamodb_stream_records_with_update_item, test_rotate_secret_with_lambda_2 by @steffyP in https://github.com/localstack/localstack/pull/5826
    • fix ApiGateway ASF request matching by @alexrashed in https://github.com/localstack/localstack/pull/5827
    • Fixed issue with spaces in Windows user names by @us88 in https://github.com/localstack/localstack/pull/5834
    • fix ASF operation routing (empty query args, deprecated ops) by @alexrashed in https://github.com/localstack/localstack/pull/5840
    • Fix ResourceNotFoundException for BatchGetItem operation by @giograno in https://github.com/localstack/localstack/pull/5848
    • fix queries for local secondary index on dynamodb by @steffyP in https://github.com/localstack/localstack/pull/5847
    • Fix #5821 - ElasticMQ always downloaded due to incorrect cache path in Dockerfile by @wimax-grapl in https://github.com/localstack/localstack/pull/5822
    • Target HttpParameters and Input support and basic auth fix for Events service by @pinzon in https://github.com/localstack/localstack/pull/5738
    • fix api detection to apply custom rules and normalize CORS behaviour by @calvernaz in https://github.com/localstack/localstack/pull/5839
    • fix extraction of oauth_http_parameters for api destinations by @pinzon in https://github.com/localstack/localstack/pull/5861
    • Increment kinesis-mock version to 0.2.4 for validation fix by @afleishaker in https://github.com/localstack/localstack/pull/5884
    • add optional .fifo suffix to sqs queue url matcher by @thrau in https://github.com/localstack/localstack/pull/5892
    • Fix backdoor API provided on health endpoint by @nao23 in https://github.com/localstack/localstack/pull/5907
    • Fix DynamoDB TransactGetItems action by @giograno in https://github.com/localstack/localstack/pull/5909
    • Fix ExecuteTransaction action in DynamoDB by @giograno in https://github.com/localstack/localstack/pull/5918
    • Minor fix to ensure that /static/ paths are properly served by the proxy by @whummer in https://github.com/localstack/localstack/pull/5917
    • Fix BatchExecuteStatement action in DynamoDB by @giograno in https://github.com/localstack/localstack/pull/5919
    • fix localstack.http.Request path encoding by @thrau in https://github.com/localstack/localstack/pull/5924
    • Fix lambda package type and code response by @dominikschubert in https://github.com/localstack/localstack/pull/5930
    • Fix ApiGW: accept yaml format for openapi(swagger) import by @pinzon in https://github.com/localstack/localstack/pull/5871
    • fix invalid characters in asf rest-protocol operation router by @alexrashed in https://github.com/localstack/localstack/pull/5948
    • [minor] Fix text/html Content-Type for local CloudFormation UI by @whummer in https://github.com/localstack/localstack/pull/5950
    • remove Werkzeug pin after bugfix release by @alexrashed in https://github.com/localstack/localstack/pull/5954
    • fix get_raw_path to unify wsgi/asgi specs by @thrau in https://github.com/localstack/localstack/pull/5956
    • Fix Firehose.PutRecord to extended s3 by @pinzon in https://github.com/localstack/localstack/pull/5967
    • fix op router when matching keys with slashes by @thrau in https://github.com/localstack/localstack/pull/5972
    • Fix ValidationError for CloudFormation.DescribeStacks by @dominikschubert in https://github.com/localstack/localstack/pull/5978
    • fix secretsmanager to use ASF instead of moto exceptions by @thrau in https://github.com/localstack/localstack/pull/5976
    • fix HTTP HEAD method operation detection in ASF by @alexrashed in https://github.com/localstack/localstack/pull/5991
    • fix test_cloudwatch.py mock patches by @thrau in https://github.com/localstack/localstack/pull/5984
    • fix: fix cla bot by @HarshCasper in https://github.com/localstack/localstack/pull/5999
    • fixed metric alarm evaluation for data points with value 0 by @steffyP in https://github.com/localstack/localstack/pull/5998
    • fix http path encoding in asgi/wsgi adapter by @thrau in https://github.com/localstack/localstack/pull/6012
    • fix concurrency issues of cfn and sns tests by @thrau in https://github.com/localstack/localstack/pull/6023
    • Provide hotfix for CFn parameter updates and further CFn tests by @dominikschubert in https://github.com/localstack/localstack/pull/6024
    • fix CLA assistant allowlist by @alexrashed in https://github.com/localstack/localstack/pull/6032
    • Fix bytes size calculation with binary items by @giograno in https://github.com/localstack/localstack/pull/6027
    • Fix shutdown error in pytest by waiting for LS to finish correctly by @dfangl in https://github.com/localstack/localstack/pull/6039
    • fix ASF docs by sanitizing pandoc results by @alexrashed in https://github.com/localstack/localstack/pull/6045
    • fix multiple authorizer creation by @calvernaz in https://github.com/localstack/localstack/pull/6049
    • Restructure test fixtures/utilities by @dominikschubert in https://github.com/localstack/localstack/pull/6050
    • Fix DynamoDB error injection and re-enable tests by @whummer in https://github.com/localstack/localstack/pull/6063
    • Minor fixes in edge forwarder and zip utils for dev/host mode by @whummer in https://github.com/localstack/localstack/pull/6065
    • fix request encoding in generic proxy listener chain and forwarding by @alexrashed in https://github.com/localstack/localstack/pull/6070
    • Minor fix for CFn deletion of IAM::Role resources by @whummer in https://github.com/localstack/localstack/pull/6072
    • fix pycharm unit test debug execution by renaming http package by @alexrashed in https://github.com/localstack/localstack/pull/6071
    • fix ARN rewriting for DynamoDB ASF provider by @alexrashed in https://github.com/localstack/localstack/pull/6075
    • fix ARN rewriting for incoming requests, fix lambda arn creation by @alexrashed in https://github.com/localstack/localstack/pull/6078
    • fix test_get_queue_url_contains_request_host for pro integration by @thrau in https://github.com/localstack/localstack/pull/6079
    • ci: fix the stale bot by removing bug from exempted labels by @HarshCasper in https://github.com/localstack/localstack/pull/6082
    • Fix CLI usage with python 3.7 by @dfangl in https://github.com/localstack/localstack/pull/6087
    • fix cleanup of event source mapping test by @alexrashed in https://github.com/localstack/localstack/pull/6094
    • fix message attribute filter for SQS ReceiveMessage by @thrau in https://github.com/localstack/localstack/pull/6097

    New Contributors

    • @davecardwell made their first contribution in https://github.com/localstack/localstack/pull/5793
    • @RodrigoATorres made their first contribution in https://github.com/localstack/localstack/pull/5641
    • @foxmulder900 made their first contribution in https://github.com/localstack/localstack/pull/5799
    • @us88 made their first contribution in https://github.com/localstack/localstack/pull/5834
    • @afleishaker made their first contribution in https://github.com/localstack/localstack/pull/5884
    • @tmbobbins made their first contribution in https://github.com/localstack/localstack/pull/5849
    • @jops-wtakase made their first contribution in https://github.com/localstack/localstack/pull/5893
    • @nao23 made their first contribution in https://github.com/localstack/localstack/pull/5907
    • @NickGrantX made their first contribution in https://github.com/localstack/localstack/pull/5920
    • @naveensrinivasan made their first contribution in https://github.com/localstack/localstack/pull/6014

    Full Changelog: https://github.com/localstack/localstack/compare/v0.14.2...v0.14.3

    Source code(tar.gz)
    Source code(zip)
  • v0.14.2(Apr 1, 2022)

    LocalStack release 0.14.2

    Change log

    1. New Features

    • add ability to import keys into KMS
    • enable and refactor rotation logic and version stages in SecretsManager
    • support "Accept" header to switch response format
    • add provider for S3Control service

    2. Enhancements

    • migrate services to ASF: EC2, KMS, Route53, STS
    • skip installing -ext dependencies in CI tests
    • lazily load subclasses for instance manager to enable plugin loading at runtime
    • add missing UpdateDomainConfig for OpenSearch and Elasticsearch
    • pin werkzeug version to fix Transfer-Encoding "chunked" on empty responses
    • apply filter pattern for log subscriptions
    • skip "online-only" tests, fix some tests
    • use valid references for EC2 resources to fix CloudFormation tests
    • enhance handling of KMS key pairs for SIGN_VERIFY keys
    • add CloudFormation support for IAM::ServiceLinkedRole
    • reintroduce Lambda log output str casting
    • source API Gateway domain name and prefix from invocation context
    • pin airspeed version and remove patch code
    • add CloudFormation support for AWS::CDK::Metadata
    • remove SERVICES from default docker-compose.yaml
    • round DynamoDB ApproximateCreationDateTime to seconds
    • add GetAtt support for AWS::EC2::VPC DefaultSecurityGroup and DefaultNetworkAcl
    • minor update in patch decorator to allow multiple/composite patches of methods

    3. Bug Fixes

    • fix PaginatedList nextToken generation
    • fix MessageGroupId for publish batch to SQS fifo queue
    • fix elliptic curve key specs for KMS keys
    • fix broken transitive imports of quart from jinja
    • fix Terraform creation of EC2 Security Groups with default egress
    • fix eager deserialization for 404 responses returned from Lambda
    • fix CloudFormation Route53 deployment without ResourceRecords
    • fix ACM DomainValidationOptions to support waiters
    • fix Flask app routes for Lambda API
    • fix broken patch for moto S3 is_delete_keys(..)
    • fix CFn name autogeneration for SQS fifo queues
    • fix CFn Route53 deployment
    • fix CFn default name for Kinesis streams
    • fix logs subscription filter
    • fix query request parser for operations without input shape
    • fix nested stack outputs in CloudFormation
    • fix handling encoded $ for default stage in API Gateway path regex
    • fix redirect to index file in S3 website
    Source code(tar.gz)
    Source code(zip)
  • v0.14.1(Mar 11, 2022)

    LocalStack release 0.14.1

    Change log

    1. New Features

    • push Docker images to public ECR registry on CI build
    • add internal endpoint to output diagnostics data
    • add ability to build, tag, and push images using Docker client
    • add API Gateway SNS integration
    • add OpenSearch destination to Firehose
    • add support for CloudWatch set_alarm_state and trigger actions

    2. Enhancements

    • implement in-memory request dispatching to moto
    • implement generic HTTP route dispatching
    • migrate several services to ASF (ACM, CloudWatch, CloudWatch Logs, ConfigService, DynamoDB Streams, Redshift, ResourceGroups, SecretsManager, SSM, Support, SWF)
    • migrate from requirements.txt/setup.py to setup.cfg
    • CircleCI pipeline parallelization
    • add GitHub action to automatically update ASF APIs
    • migrate resourcegroupstagging API to ASF
    • split up Docker client, remove obsolete docker client binary from image
    • refactor handling of API Gateway request/response templates
    • introduce CODEOWNERS file for code ownership
    • add timeout to status services cli command
    • add DynamoDB Streams integration for PartiQL query updates
    • add ability to extract cookies from API Gateway invocation context
    • update generated ASF APIs to latest version
    • add ability to specify timeout and max content length for HTTP server
    • improve cli startup performance
    • refactor utils imports in utils and services packages
    • patch moto Lambda backend to access LocalStack Lambdas directly
    • add ability to extract tgz archives via download_and_extract utility
    • allow specifying working directory when running Docker exec
    • implement regex rules for the http Router
    • migrate from localstack-plugin-loader to plux
    • add support for #define function in API Gateway velocity templates
    • add a GHA workflow to track first-time pull request and issue creators
    • rework docker capabilities, remove intermediate containers after building images in docker-sdk client
    • add optimizing and sorting of imports to ASF scaffold
    • add support for response templates in API Gateway MOCK responses
    • add mock ECR CFN resource and integration test for CDK bootstrap template v10
    • add flag to call_moto to exclude the ResponseMetadata
    • upgrade airspeed dependency and remove custom patches
    • add helpers to unpause Docker containers
    • reorganize utility package
    • add deep copy of handler results to avoid unwanted mutations in parser
    • add error check for fifo attribute when creating SQS fifo queues
    • update renovatebot config to ignore Dockerfile.rh
    • add ApiGateway S3 integration using action name
    • add method to allow calling moto with a new request in request dispatcher
    • add resolve_hostname(..) util function, refactor some utils into sub-modules
    • improve performance of localstack status command
    • remove six library from dependencies
    • add failsafe with try/except for creating log streams to guard against potential duplicates
    • add the ability to snapshot running Docker containers
    • make autocreating log groups optional
    • allow service restart in ServiceContainer from STOPPED state
    • add support for DefinitionS3Location in StepFunctions::StateMachine model
    • remove superfluous CloudWatch response processing
    • add PaginatedList for paginating and filtering response lists
    • add default entries in CloudFormation stack template dict to avoid KeyError
    • docs: refactor third party software tools docs and remove announcements in README
    • refactor some tests to pytest (e.g., Lambda, EC2)
    • configure test coverage exclusions
    • make Lambda output truncation configurable

    3. Bug Fixes

    • fix ASF parser and serializer issues
    • fix custom error responses from lambda when handler throws an exception
    • fix moto dispatching for trailing slashes and response headers
    • fix OpenSearch data dir issue that would block startup in pro
    • fix encoding problem for AlarmDescription in put-metric-alarm
    • fix making typing_extensions import dependent on python version
    • fix ApiGateway v2 path-base style requests without stages
    • fix several ASF parser, serializer, and scaffold issues
    • fix replacement of AWS::NoValue, add default props for Elasticsearch::Domain resources
    • fix service provider configuration override
    • fix edge route mapping for STS AssumeRole
    • fix API Gateway integration with Kinesis
    • fix linting issues by pinning flake8-black
    • fix python 3.7 compatibility with TypedDict for cli
    • fix ASF xml-rest parser location- and payload-trait handling
    • fix CloudFormation stack class to return latest raw template if change sets are present
    • fix OpenSearch cluster shutdown in tests
    • fix parameter for StateMachine type in CFN model
    • fix uncapped recursion bug in parser
    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Feb 3, 2022)

    LocalStack release 0.14.0

    Announcements

    • Breaking changes:
      • This version introduces the external service port range in LocalStack. This port range has been used in LocalStack Pro before, but has now been moved to the community edition. While doing so, the port range has been broadened (it now ranges from 4510 to 4559). Please make sure to adjust your Docker configurations to expose this port range (such that external services started within the container can be reached) or use the latest version of the LocalStack CLI to manage your LocalStack container.
      • When using ElasticSearch with the ES_ENDPOINT_STRATEGY=port (formerly off) and ES_MULTI_CLUSTER=0, a port from the external service port range is used (instead of PORT_ELASTICSEARCH or 4571 by default).
    • Upcoming breaking change: This version deprecates the ES_ENDPOINT_STRATEGY, ES_MULTI_CLUSTER, and ES_CUSTOM_BACKEND. Instead, the OPENSEARCH_* variables should be used. The ES_ENDPOINT_STRATEGY=off is being renamed to port (i.e. please use OPENSEARCH_ENDPOINT_STRATEGY=port from now on).

    Change log

    1. New Features

    • add initial support for SNS PublishBatch API
    • add support for email-json protocol in SNS subscriptions
    • add support for AWS OpenSearch
    • support multi arch for local-kms provider
    • support invocation of local API URLs via stepfunctions

    2. Enhancements

    • bump moto-ext to latest version
    • minor refactoring in SNS get_message_attributes() method
    • add utilities for migrating services to ASF
    • minor refactoring in selecting handler in edge.py for better extensibility
    • add check for supported protocols on SNS subscription
    • adjust routing to enable using anonymous boto3 client to fetch S3 object
    • refactor Lambda executors to allow modification of container settings using hooks
    • minor adjustments in patch decorator for bound methods of class instances
    • hardcode default tmp and data paths
    • Add handling for DynamoDB stream iterator expiration, bump kinesis-mock to 0.2.2
    • remove obsolete moto imports in CloudFormation resource classes
    • remove obsolete patch for CloudWatch metrics filtering
    • cleanup CloudFormation logic and remove old/obsolete code
    • add utility to manage / reserve ports for external services
    • invalidate builder stage in dockerfile on package version changes
    • use base_url instead of url for determining SQS queue URL
    • add cachetools to CLI dependencies
    • set MessageGroupId and MessageDeduplicationId on SQS message from SNS subscription
    • Introduce lazily-created localstack-internal-awssdk utility lambda function
    • capture X-AMAZON-APIGATEWAY-ANY-METHOD for cases where route key is for integrations
    • provide better log info when CloudFormation resources cannot be found
    • clean up old/unused CloudFormation logic
    • refactor SQS queue-url generation
    • extend SNS publish batch support for FIFO topics
    • remove monkey patching and circular dependency
    • refactor sqs queue resolving and url rendering
    • minor refactoring of CFN logging code to dump resources as JSON string
    • clean up aws_stack utils, remove obsolete global cached boto3 resources
    • add missing CloudFormation parameters for Firehose delivery streams
    • migrate firehose to ASF
    • stop setting environment variable if cognito_identity if empty
    • Kinesis refactor server abstraction
    • Allow container client to connect/disconnect containers to/from a network
    • handle SSE for sqs
    • refactor config and rip out global port/url variables
    • add connection parameters and credentials to EventBridge API destinations
    • replace function calls with literal syntax and remove unnecessary comprehensions
    • broaden the external service port range, adjust docker-compose
    • update Docker base image (python:3.8.12-slim-buster) digest to 3544d06
    • add util function for deletion of None-values from dicts
    • combine OpenSearch and Elasticsearch backends
    • update exposed ports and docker-compose

    3. Bug Fixes

    • fix CloudFormation deployment of SNS::TopicPolicy
    • fix handling of empty prefix for Firehose S3 uploads to properly trigger event notification
    • fix external host setting for sqs
    • fix acronym handling in camel_to_snake_case
    • fix API Gateway to match the most specific path in the presence of "{proxy+}" placeholders
    • fix asf scaffold to generate TypedDict declarations correctly
    • fix sqs port extraction from headers and other related issues
    • fix ASF SQS provider to allow direct calls to queue URLs
    • fix DynamoDB local/localhost region for NoSQL Workbench
    • fix ASF SQS xml response encoding
    • fix request parser to enable X-Amz-Target strings with multiple dots
    • fix expectations around Kinesis record encoding, always re-encode records for shard subscribers
    • fix CloudFormation deployer to recursively resolve string placeholders
    • fix ASF REST operation lookup with conflicting path params
    • fix DomainValidationOptions property in ACM Certificate CFN deployment
    • fix access to listener in logic for restarting Kinesis
    • fix issue rendering VTL templates for API Gateway by flattening the input
    • fix accessing external SQS port for intra-service communication
    • fix positional args in CloudFormation find_change_set(..) method
    • fix SNS PublishBatch logic for optional Subject atttribute
    • fix Kinesis installation via LPM, add Docker check for StepFunctions installation
    • fix docker client ctx manager and json decode issues on windows
    • fix passing Conditions on stack updates, refactor/simplify CFN function arguments
    • fix EC2 route tables and service backend initializations for recent upstream moto changes
    • add config for host path to fix mounting of libs_dir
    • minor fix in SNS tests to resolve stale PR merge
    • minor fix in printing result for local node.js Lambda executor
    • ASF rest-json parser fixes
    • minor fix in request parsing to match path parameters with slashes
    • replace get_data() with response.content to fix logic in SNS HTTP subscriptions
    • fix gzip handling in SSL proxy
    Source code(tar.gz)
    Source code(zip)
  • v0.13.3(Jan 7, 2022)

    LocalStack release 0.13.3

    Change Log

    1. New Features

    • add initial ASF (AWS Service Framework) SQS provider implementation
    • add automatic Docker network detection for Lambda containers
    • add support for dynamic SSM/SecretsManager references in CloudFormation templates
    • add version info to internal health HTTP endpoint

    2. Enhancements

    • add support for gzipped responses in SSL proxy via Accept-Encoding headers
    • lowercase 'accept' headers in API Gateway for parity with AWS
    • add negative test for SNS FIFO topic validation, migrate SNS tests from unittest to pytest
    • add ability to customize default IAM/STS user via TEST_IAM_USER_ID/TEST_IAM_USER_NAME
    • add integration test that passes binary data via APIGateway to Lambda
    • refactor StepFunctions multi-region support to use upstream changes
    • add proper validations for SNS/SQS integration with fifo queues
    • allow provider overrides to be passed to the started LocalStack container
    • ensure SequenceNumber is present in Lambda events from DynamoDB Streams
    • support updating of API Gateway resources via PATCH operations
    • refactor logging code to replace string interpolation with passing arguments to log methods
    • refactor code to remove unnecessary list comprehensions
    • refactor code to remove mutable default arguments
    • pull out subtypes instance manager into separate util class for reusability
    • update and clean up outdated documentation
    • replace dict and list function calls to literal syntax
    • remove uname command in system check for windows compatibility

    3. Bug Fixes

    • fix API gateway proxy resources
    • fix passing of request parameters to API Gateway HTTP integrations
    • fix Firehose-ElasticSearch integration, allow S3Backup AllDocuments with ElasticSearchDestination
    • fix multiple service container creation
    • fix extraction of filter values for describing EC2 prefix lists
    • fix single-space env default in docker-compose
    • fix RenovateBot config to only enable patch updates
    Source code(tar.gz)
    Source code(zip)
  • v0.13.2(Dec 20, 2021)

    LocalStack release 0.13.2

    Announcements

    • Security fixes: This release upgrades log4j dependencies to version 2.17.0 to fix the critical security vulnerabilities CVE-2021-44228, CVE-2021-45046

    Change Log

    1. New Features

    • add initial support for region-based in-place partition rewriting
    • add "--offline" pytest flag, skip "online-only" tests, fix some tests
    • add SKIP_SSL_CERT_DOWNLOAD option to allow skipping download of SSL cert

    2. Enhancements

    • bump version of Java utils to 0.2.18 to fix log4j vulnerability CVE-2021-44228, CVE-2021-45046
    • refactor README.md to make it crisp and readable
    • refactor Lambda logic to remove local executor Callable from model entities
    • automatically pull non-cached Docker images on image inspection
    • replace dict calls with comprehensions
    • small fixes to allow running LocalStack with podman
    • reduce log level of edge port configuration hook
    • correctly wait for stay-open port to be available, fix fallback to exec mode
    • add compatibility checks for S3 copy object with metadata
    • add proper error response message to reject empty SNS messages
    • minor refactoring to use negative index -1 to get the last element of sequence
    • minor refactoring of Lambda API for better extensibility

    3. Bug Fixes

    • fix updating of HTTP method in message handler chain to avoid None methods
    • fix misc. tests failing for non-default region
    • fix Terraform test issue related to SQS changes in the AWS provider
    • fix association of VPCs in Route53 HostedZone responses
    • fix CloudFormation updates for EC2::Instance with empty SecurityGroups property
    • fix listing of KMS signing keys for asymmetric key pairs
    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(Dec 10, 2021)

    LocalStack release 0.13.1

    Announcements

    • Upcoming breaking change: This version introduces the LEGACY_PERSISTENCE config, which determines whether the legacy persistence mechanism (based on API calls record&replay) should be used. Currently still defaults to LEGACY_PERSISTENCE=1, but the logic will be disabled by default and may get removed entirely in a future release. (Please note: this is only affecting the legacy persistence in Community - if you're using the Pro version, you can ignore this message.)

    Change Log

    1. New Features

    • add LocalStack Package Manager (lpm) CLI
    • add plugin-based hooks for bootstrapping and infra startup
    • add functionality for custom Elasticsearch backends
    • add support for stay-open mode for docker-reuse Lambda executor
    • add cli command to show current config
    • add initial integration of Route53Resolver API
    • add multi-region support for StepFunctions state machines

    2. Enhancements

    • refactor handler chain and add MessageModifyingProxyListener to enable modification of requests/responses
    • add Directories config object and introduce directory structure
    • use unittest.mock.patch.object for overriding config params
    • publish logs per metric and remove faulty metric filter behavior in CloudWatch API
    • add Docker tags for minor and patch versions
    • exclude Elasticsearch >=7.14.0 client versions for OpenSearch compatibility
    • add SIGINT signal handler for CLI to enable clean shutdown across different operating systems
    • clean up obsolete patches for event_rules in EventBridge API
    • slightly refactor StepFunctions install logic for better extensibility
    • add flag to check port availability in start_proxy_server(..) to fix test flakes
    • increase timeout when waiting for edge port to become available
    • allow redirection of var libs to static libs inside the container / move dependencies to correct folders
    • update startup hook that initializes and restores persistence
    • download test-jar for Lambda integration tests with make init-testlibs
    • filter warnings about "tail unrecognized file system" from Lambda logs
    • add basic Architectures support to Lambda API
    • get hostname by using gethostname() instead of reading /etc/hostname
    • add patch utility
    • add .localstack config directory and config profiles
    • add initial support for KMS Sign API
    • skip time expiration validation for presigned S3 URL when S3_SKIP_SIGNATURE_VALIDATION=True
    • remove dead event logging code
    • move machine id cache to new cache directory
    • add missing attributes for Lambda::Function CloudFormation resources
    • add "is running" check before restarting Kinesis and StepFunctions services
    • add module init file for localstack.runtime
    • add support for SNS delivery logs stored to CloudWatch Logs
    • explicitly handle S3 OPTIONS request with "Access-Control-Request-Method" header
    • add psutil as CLI requirement
    • strip extra xmlns attributes in PutBucketNotification responses for AWS Rust SDK compatibility
    • update Makefile to use new cli detach flag for smoke test
    • patch CFN stack outputs for API Gateway
    • make can_use_sudo use non-interactive mode
    • migrate several tests from unittest -> pytest
    • re-arrange Dockerfile commands to decrease image size and increase number of cache hits
    • pin Docker base images, enable DependaBot/RenovateBot to update once a week
    • apply boolean lowercase conversion in IAM responses for all clients (not only Node.js SDK)
    • enable Docker buildkit cache inlining, use remote Docker layer cache
    • patch LogStream.filter_log_events to use get_pattern_matcher
    • minor refactoring of EventBridge utils, fix location of EVENTS_TMP_DIR
    • minor: improve parameter checks and error responses for SES SendEmail

    3. Bug Fixes

    • fix returning formatted date string for requestTime in Lambda API GW events
    • fix edge routing for API Gateway invocation URLs when Signature= query param is passed
    • fix SNS pagination to support large CloudFormation stacks with very large number of topics
    • fix lpm to return non-zero exit code if package installation fails
    • fix using custom Docker images for nodejs14.x/python3.9 only if no custom registry is provided
    • fix MD5 check on S3 requests with "chunk-signature="
    • fix "localhost" region in requests headers for compatibility with NoSQL Workbench
    • fix Docker flags parsing in configure_container
    • fix tests and remove obsolete patch for CloudWatch metrics filtering
    • fix setting HMAC/non-HMAC credentials when injecting internal Authorization headers in requests
    • fix OldImage/NewImage in DynamoDB->Kinesis event payloads on updating/deletion of items
    • fix creation of multi route table associations in CFN EC2::SubnetRouteTableAssociation resources
    • fix deleting objects from non-existing S3 buckets
    • fix text/xml content-type header in STS responses
    • fix install_go_lambda_runtime for multi-arch build
    • fix forwarding of unprintable chars to SQS DLQ
    • upgrade pyopenssl version to fix OpenSSL issue, refactor SSL cert generation
    • minor fix checking for dict/CaseInsensitiveDict in merge_recursive(..) util function
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Nov 15, 2021)

    LocalStack release 0.13.0

    Major Changes

    This release introduces three major changes

    • A Debian-based multi-platform Docker image of LocalStack, with full support for amd64 and experimental support for aarch64 (see #4921 for known limitations and progress)
    • Upgrade to Python 3.8
    • Lazy-loading of services as the default behavior

    Debian-based multi-platform (amd64, arm64) docker image

    #4754 introduced a multi-platform docker build to support both amd64 and arm64. Alpine and musl made things unnecessarily difficult, so we switched to a Debian buster base image. Post-init (e.g., in /docker-entrypoint-initaws.d) scripts that expect an Alpine environment (e.g., use apk commands to install things into the LocalStack container) will stop working.

    Lazy-loading of services

    As part of an ongoing effort to improve startup performance, we have introduced a new code loading and service startup mechanism to allow lazy-loading of services. After LocalStack starts, services used to be in the state running, indicating that they are loaded and ready to serve requests. To allow more fine-grained state handling for services with lazy loading, we have introduced a new type of state called available. When starting LocalStack, services are by default in the state available, which means that clients can start making requests to the services, and at the first time the service is hit, all the necessary code is loaded and the backend service is started, at which point the service after which the service will be in the running state. The environment variable EAGER_SERVICE_LOADING controls this behavior.

    Scripts that depend on the output of /health being running will require setting setting EAGER_SERVICE_LOADING=1, which will start all services eagerly. This works together with the SERVICES variable to create the behavior from localstack <= 0.13.0.

    (An alternative solution is to update your startup logic to accept either running or available as the healthy service state - e.g., see details in this issue).

    Change log

    1. New Features

    • make lazy service loading the default behavior
    • debian-based multi-platform support
      • multi-platform support in localstack codebase
      • finalize multi-platform build
      • initial version of multi-platform-build
    • support multiple concurrent elasticsearch clusters:
      • implement one cluster per domain-support for elasticsearch
      • implement custom endpoint routing for elasticsearch clusters
    • add simple UI for deploying CloudFormation stacks from public template URLs
    • add delete support for AWS::SSM::Parameter CloudFormation resources
    • add initial support for Firehose processors to transform records written to targets
    • add ability to short circuit wait/retries

    2. Enhancements

    • use serving.Server abstraction for ElasticMQ server to resolve startup issues
    • add Werkzeug>=2.0 as requirement
    • use werkzeug Request object in asf
    • use werkzeug Response object in asf
    • invalidate pro test cache for changes in both
    • bump moto version to 2.2.5
    • minor: correct typos in README
    • add support for {"exists": false} in SNS message filtering
    • add support for CFN resource AWS::Logs::LogStream
    • minor: adjust API GW logic and tests for latest upstream moto changes
    • convert boolean strings to lowercase in IAM responses for JS SDK compatibility
    • add LEGACY_DOCKER_CLIENT and EAGER_SERVICE_LOADING to CONFIG_ENV_VARS
    • minor: add property to API GW resource context class to extract identity information
    • refactor logic for pulling specific Docker image tags, add more tests
    • implement generic approach for routing internal REST resources
    • extend logic and add more tests for escapeJavaScript(..) velocity template function
    • remove custom parameter by label filtering, leverag logic from upstream
    • upgrade moto-ext dependency to latest version
    • Format JSON stack template for better readability in UI
    • minor: remove print(..) statement
    • support ranges of host ports to be mapped to a container port
    • add missing attributes in Firehose records sent to destinations

    3. Bug Fixes

    • minor fix to deal with missing Tags attribute in EC2::RouteTable
    • fix filtering by tags when fetching state of EC2::RouteTable CloudFormation resources
    • fix URL encoding to properly handle '(none)' base paths in API Gateway
    • fix arn parsing in aws_stack
    • minor: fix API GW test assertion after recent moto upstream changes (part 2)
    • minor: fix API GW test assertion after recent moto upstream changes
    • minor fixes in Lambda and API Gateway logging / error handling
    • fix extracting attributes from Firehose records
    • revert moto to version 2.2.4 to fix builds temporarily
    Source code(tar.gz)
    Source code(zip)
  • v0.12.20(Nov 5, 2021)

    Change Log:

    LocalStack release 0.12.20

    1. New Features

    • major: implement lazy-loading of services
    • introduce ApiInvocationContext class to encapsulate API Gateway request context information
    • add AWS Service Framework parsers, serializers, and tests
    • add AWS Service Framework API and scaffolding CLI
    • add initial lifecycle hook abstraction for services
    • add OUTBOUND_HTTP_PROXY option for proxies when downloading external resources
    • add temporary support for python3.9 runtimes via mlupin/docker-lambda images
    • add support for more Elasticsearch versions

    2. Enhancements

    • add object-oriented moto server abstraction
    • update moto patch to fix CDATA wrapper for SQS message attribute values
    • add option to set permissions for save_file(..), save local config file with 0o600 permissions
    • upgrade Terraform version to fix CI builds
    • refactor API GW logic for easier extraction of resource/method details from invocation context
    • add test-invoke-method to test API Gateway endpoints
    • add requestId attribute to Lambda event from API Gateway integration
    • add more SQS tests to prepare for new SQS implementation
    • refactor DynamoDB to use serving.Server
    • update Elasticsearch default version in es_api.py
    • support version qualifiers for managing Lambda policy statements
    • correctly format Lambda function inline code on CloudFormation update
    • refactor serving.Server to fix ElasticsearchCluster
    • add headers from S3 object and correct codes to S3 website responses
    • add defaults for SSM parameter name in CloudFormation model
    • extend create_zip_file(..) to support 'append' mode and specifying root directory
    • update default/cached Elasticsearch version to 7.10
    • extract correct region from target ARN for S3 notifications
    • add ability to skip content gzipping for individual services responses
    • make boto client creation in aws_stack.connect_to_service thread safe
    • add SSM->EventBridge integration to send notifications about parameter changes
    • add concurrency control for multiserver startup
    • add multi-region support for EventSourceListenerSQS
    • add setup.cfg and update build configuration
    • pin version of "pip" to fix setup step in CI
    • add support for "::" to specify a custom Java Lambda handler method in local executor mode
    • fix health endpoint to support feature states
    • refactor extract_region_from_headers to make it more reusable
    • add generic fallback health check for local APIs
    • adjust exposed ports in docker-compose.yml
    • add logic and tests to gracefully handle zipping of empty directories
    • use Python time for do_run cache time comparison
    • add support for routing events to log groups, fix event pattern matching/mapping for prefix filter
    • prefix Lambda container names with MAIN_CONTAINER_NAME to support multiple instances in parallel
    • allow partial SSE specification and auto-create managed KMS keys for DynamoDB tables
    • update troubleshooting guide to not set DOCKER_HOST when using Lambda remote mode in CI
    • minor: use existing util function to extract region from ARN
    • minor: add generate_default_name_without_stack utility method

    3. Bug Fixes

    • fix docker_utils import in localstack status cli command
    • fix AWS::SecretsManager::Secret CloudFormation ARN handling and tests
    • fix restarting of DynamoDB process
    • fix local execution of Java Lambdas if handler method is implementing RequestHandler interface
    • fix issues in AWS service framework dispatching
    • fix error response when attempting to delete non-existing Lambda
    • fix scaffolding for remaining AWS services
    • fix Elasticsearch plugin download when building docker base image
    • fix check for None values in response multi_value_headers
    • fix overwrite behavior for PUT requests to the health endpoint
    • fix updates for AWS::IAM::Role in CloudFormation
    • fix state checking for active service provider
    • fix statement/policy handling for Events::EventBusPolicy CFN resource
    • upgrade version of Terraform in base image to fix recent CI build issues
    Source code(tar.gz)
    Source code(zip)
  • v0.12.19(Oct 19, 2021)

    Change Log:

    LocalStack release 0.12.19

    1. New Features

    • add initial support for KMS asymmetric keys
    • add initial support for KMS grant operations
    • add support for and/or/condition CFN intrinsic functions
    • add support for states:::events:putEvents to publish events from StepFunction
    • add wildcard support for EXTRA_CORS_ALLOWED_ORIGINS configuration

    2. Enhancements

    • move attribute defaults from template_deployer to service models
    • cache single instance of request context to enable mutability
    • refactor Lambda API delete_function logic for better extensibility
    • pass ENABLE_CONFIG_UPDATES environment variable to Docker container from CLI
    • support case-sensitive response headers, add ETag to CORS exposed headers for S3 JS SDK compatibility
    • add pagination to get_lambda_log_events(..) util function to fix Lambda tests
    • log emails sent via SES send_raw_email into local log file
    • add ability to pass invocation handler to test HTTP server for API GW integration tests
    • add missing event attributes and increase timeout in Java Lambda tests
    • rename docker->docker_utils to avoid import/aliasing issues
    • minor refactoring of inter-service message forwarding for better extensibility
    • add simple util classes ObjectIdHashComparator and ArbitraryAccessObj
    • add helper function to mock a request context with a particular region
    • refactor and remove fix_resource_props_for_sdk_deployment(..) in CFN deployer
    • move delete patches in template deployer to CFN service models
    • refactor error handling and add MOCK_UNIMPLEMENTED config to gracefully handle unimplemented APIs
    • add ability to pass --workdir to launched containers in Docker client
    • allow Lambda plugins to return invocation results directly, create plugin to handle LAMBDA_FORWARD_URL
    • increase ElasticSearch cluster startup timeout
    • skip forwarding Lambda invocation result if on_successful_invocation is None
    • add missing edge routing logic for AWS SDK v2
    • add support for s3:ObjectCreated:Copy event in the presence of X-Amz-Copy-Source headers
    • add Docker client methods to inspect networks
    • wait until port is closed on DynamoDB shutdown/restart
    • pass CORS configuration options and Thundra Node.js/Python agent config from CLI to the container
    • add util function to restart StepFunctions service process
    • minor: check for empty files in download_and_extract(..) util function
    • implement PluginDisabled exception to handle disabled plugins
    • refactor DDBStreams/ES/Firehose APIs to use RegionBackend classes

    3. Bug Fixes

    • fix potential race condition in Docker container start/wait logic
    • fix CFN SecretsManager::Secret to properly return secret ARN as Ref
    • fix CFN resource type lookup
    • fix deploying Lambdas with colliding names due to common prefixes
    • fix issue with single quotes in payload for Node.js Lambda in local execution mode
    • fix deployment of DynamoDB table with SSE disabled in Terraform definition
    • fix selection of sub-elements in SQS listener XML responses
    • fix Lambda SNS event source attribute as aws:sns instead of localstack:sns
    • minor fix to avoid running multiple edge proxies on the same port
    Source code(tar.gz)
    Source code(zip)
  • v0.12.18(Sep 23, 2021)

    Change Log:

    LocalStack release 0.12.18

    1. New Features

    • add generic LocalStack plugin framework
    • implement CLI using click, rich, and stevedore
    • add Node.js/Python/java8.al2 runtime support for Thundra plugin
    • add extensible class abstraction for Lambda event source listeners
    • introduce Lambda executor plugin mechanism to hook in custom extensions at runtime
    • add support for local execution of Go Lambda functions
    • add support for generated secrets in CFN SecretsManager::Secret
    • add initial version of Config Service API

    2. Enhancements

    • make some integration tests more lenient to environment changes
    • add attributes to SQS messages from Lambda event source mapping
    • add support for LS_LOG=trace-internal log level
    • add check if DNS_ADDRESS is zero before starting the DNS server
    • consider function alias when resolving Lambda function or layer ARN
    • refactor Lambda executor methods to use InvocationContext as input param
    • move pre- and post-create CFN actions from template_deployer to resource models
    • extend util function for creating simple SSL proxy servers
    • add plugin_spec to signatures of PluginLifecycleListener
    • move API imports in infra.py to respective start methods
    • add missing SSEDescription and TableId entries in DynamoDB DescribeTable calls
    • add ability to specify --network via DOCKER_FLAGS config
    • add util function to manually configure region for current request context
    • enable sync/async SFN invocations in API Gateway integration
    • remove obsolete patches for Logs metric_filters
    • add test for deletion of SQS messages with changed visibility
    • parse volume mount flag with regex to allow windows paths and additional arguments
    • support <apiId>.execute-api.* hostnames for API Gateway invocation URLs
    • distinguish polling and reactive mode in EventSourceListener
    • add CloudFormation support for AWS::Events::EventBusPolicy
    • create SQS queue policy for AWS::SQS::QueuePolicy CFN resource
    • add support for DefinitionSubstitutions in CFN StateMachine resources
    • add support for ApiGateway::DomainName and ::BasePathMapping CFN resources
    • add get_physical_resource_id() for ApiGateway::Deployment
    • add ability to specify SelfManagedEventSource for CFN Lambda::EventSourceMapping
    • update kinesis-mock to 0.2.0, adding built-in multi-region support
    • add startup logic to install prebuilt SSL cert if available
    • update setup.py with additional information
    • run Golang local test only if executed in Alpine
    • run LocalStack tests against LocalStack Pro in Github Action
    • rework some integration tests to make them more robust
    • restructure Python requirements, Dockerfile and Makefile
    • add LAMBDA_CODE_EXTRACT_TIME to configure max Lambda code extract wait time
    • add default name for IAM::ManagedPolicy CFN resource
    • aggregate valid regions accross all available partitions, to support regions like us-gov-*
    • disable cli banner when running infra in docker
    • move code in RESOURCE_TO_FUNCTION into service models, split into separate files
    • add exception handling to EventBridge notifications if targets are unaccessible
    • inject AWS_ENDPOINT_URL into Lambda container environment
    • add plug points for code/config initializations in LambdaExecutorPlugin
    • refactor testutil.py to deploy large Lambda zip files via S3
    • add separate section with service provider configurations to README
    • disable shell mode in run(..) util if cmd is passed as a list
    • pass Cognito Identity info through HTTP headers, return InvocationResult with content instead of wrapping as Flask response for LAMBDA_FORWARD_URL
    • add util functions get_edge_port_http() and is_provided_runtime(..)
    • add localstack infra cli command for backwards compatibility
    • add test assertion to verify value of maxReceiveCount in SQS RedrivePolicy
    • extend logic to apply request/response templates in API GW messages
    • add support for synchronous invocations of StepFunctions via API GW
    • support --add-host argument in LAMBDA_DOCKER_FLAGS
    • add simple integration tests for Support API
    • add utility function to parse properties/INI config files
    • add restart method for Kinesis and DynamoDB processes
    • add util function to inject specific region into AWS Authorization header
    • inject missing Lambda environment variables in local Lambda executor
    • add resource id to auto-generated Lambda name in CFN stacks
    • add warning message for LAMBDA_EXECUTOR=docker* if Docker is not accessible
    • consolidate .coveragerc and .flake8 config int pyproject.toml
    • minor: remove references to PORT_WEB_UI in docs
    • minor: add util function to extract access_key_id from auth header, add type hints to utils
    • minor: expose private Docker client methods as static methods in Docker Util class

    3. Bug Fixes

    • fix logic and add test for edge invocations from AWS Go SDK v2
    • fix CFN list_stack_resources() for stacks with deleted resources
    • fix ApiKeyRequired in API Gateway CloudFormation resources
    • fix code updates of Lambda functions for Docker executor
    • fix EC2/Logs tests after upstream changes
    • fix raw message delivery attribute for SNS/SQS subscriptions
    • fix documenting TMPDIR and HOST_TMP_FOLDER in docker-compose
    • fix getting IP addresses of Docker containers with non-default networks
    • fix template deployer and tests to retrieve updated PhysicalResourceId for EC2::Instance
    • fix spaces in JSON events passed to custom runtime
    • fix AWS::ApiGateway::Account regression
    • fix argument error in exception handling in lambda_api.py
    • fix adding tags to SQS queues when value is an empty string
    • fix missing request parameters in CFN ApiGateway integration
    • fix responding to S3 website requests with proper object content-type
    • minor fix in regex to parse Docker volume flags
    • restructure and clean up README.md
    Source code(tar.gz)
    Source code(zip)
  • v0.12.17(Aug 23, 2021)

    Change Log:

    LocalStack release 0.12.17

    1. New Features

    • security fixes: replace Docker CLI commands with Docker Python SDK client
    • add support for multi-region request handling
    • add ability to specify custom IDs for API GW REST APIs via tags
    • add CloudFormation support for Events::Connection
    • add EDGE_FORWARD_URL option to forward all edge requests

    2. Enhancements

    • update README and coverage docs with latest available services
    • canonicalize boolean strings in SNS FIFO topic creation via CloudFormation
    • canonicalize HTTP header names in API GW Lambda events to lower-case
    • add basic interface for StateSerializer to be used in persistence mechanism
    • add support for Route53 GetHealthCheck
    • minor refactoring of imports to fix CLI dependency issues
    • deploy extended attributes for IAM::User CloudFormation resources
    • add ability to run privileged ports 53/443 in local dev mode
    • return S3 bucket hostname for "DomainName" CF attribute
    • restructure Thundra plugin code and fetch latest Java agent version from metatata xml in repository
    • add support for IAM::User CloudFormation resources
    • add missing CloudFormation properties for SNS::Topic
    • update download URL for patched DynamoDB in base Docker image
    • add fallback for boolean type conversion in CloudFormation deployments
    • update analytics event logging system
    • add Thundra config variables to config.CONFIG_ENV_VARS to pass them to Docker instance
    • refactor logic across the codebase to make use of the Docker client utils
    • extend merge_recursive(..) util function
    • introduce KMS_PROVIDER env variable and switch to moto as default KMS provider
    • add cleanup of docker-reuse Lambda containers if code/configuration is updated

    3. Bug Fixes

    • fix logic and tests for decimals formatting
    • fix removing X-amz-content-sha256 header after stripping off chunk signatures
    • fix/revert lookup of OS user inside Docker container
    • fix patches in Logs API to accommodate recent upstream changes
    • fix KMS listener initialization
    • fix extracting event bus name as Ref attribute from CF Events::EventBus resources
    • fix Kinesis CBOR response encoding for Java SDK compatibility, extend tests
    • minor fix for handling symlink targets in cp_r(..)
    • minor fixes to enable deployment of arc.codes sample app
    • minor fix: consider Flask&Requests responses in aws_responses utils
    Source code(tar.gz)
    Source code(zip)
  • v0.12.16(Jul 31, 2021)

    Change Log:

    LocalStack release 0.12.16

    1. New Features

    • add integration for Thundra tracing via THUNDRA_APIKEY
    • add support for local execution of Node.js lambdas
    • add support for DeleteAlias and TracingConfig in Lambda API
    • support sequential Lambda execution for Kinesis streams, using ParallelizationFactor
    • support resolving SSM parameter values in CloudFormation templates
    • add possibility for services to subscribe to runtime config changes
    • add TEST_TARGET=AWS_CLOUD option to run tests against real AWS

    2. Enhancements

    • update README with instructions to build the Docker image
    • add integration test for EC2 route table association
    • adjust updated download URL for patched DynamoDBLocal.zip
    • update kinesis-mock version to fix missing Logger classes
    • store SES templated email messages to DATA_DIR or tmp folder for easier debugging
    • refactor and extend AWS response parsing utils
    • remove Web dashboard process from supervisord.conf
    • extend test utils to pass in an auth_creator_func(..) for creating API GW authorizers
    • minor: remove deprecated web UI documentation
    • add option to disable boto3 retries/timeouts
    • remove EventBus proxy listener patches for Tags operations handled upstream
    • integrate and use the util function to remove Docker env files
    • print version string if Terraform version check fails in integration tests
    • replace unparse with custom XML serializer for AWS responses
    • support CloudFormation string placeholders with triples like "${resource.attr.subattr}"
    • improve kinesis startup routine and add KINESIS_MOCK_FORCE_JAVA config option
    • replace botostubs with boto3-stubs in test fixtures
    • add retry logic for downloading Elasticsearch plugins to fix temporary network issues
    • extend ACM ARN integration test when importing certificates
    • improve infra graph code, extend tests, add new fixtures
    • add tests for Lambda invocation destinations
    • add unit tests for common and config
    • add JSON safe parsing when processing API GW event in local Javascript Lambda
    • patch moto to include region header for GET and HEAD requests
    • update CI workflow to aggregate coverage report
    • use JAVA_TOOL_OPTIONS to apply LAMBDA_JAVA_OPTS in Java Lambdas
    • cleanup and refactor CI configurations
    • add default account_id for API GW Lambda invocation events
    • add ability to define UDP Docker ports in PortMappings class
    • strip off warning messages when extracting Docker container ID from stdout
    • add exception response when calling DeletePolicy on non-existent IAM policy
    • refactor Lambda executor to use unified container API and break apart container/Lambda logic
    • pin version of "requests" library to fix import errors in Lambda tests
    • add feature that saves LocalStack version info into data dir
    • add pre-commit hook that runs linting and formatting
    • add support for CloudFormation Fn::GetAtt WebsiteURL for S3 buckets
    • refactor JSONPatch implementation for API GW to handle edge cases more reliably
    • add make targets for linting and formatting only modified files
    • add proper headers when triggering API destination target
    • add CORS headers required for AWS SDK v3
    • refactor Firehose and properly return "ExtendedS3DestinationDescription" with extended attributes
    • add support for API Gateway documentation parts (tf-compat)

    3. Bug Fixes

    • fix regex to extract API ID in hostname from API GW endpoint URL
    • fix logic in inject_test_credentials_into_env(..) to set custom env parameters for Lambda functions
    • fix DynamoDB to Kinesis stream event format - add "tableName", remove "StreamViewType"
    • fix Docker detection on hosts with cgroup v2 (unified hierachy)
    • fix running multiple API Gateway JSON Patch operations in sequence (tf-compat)
    • fix timestamp format of Lambda event source mappings for TF compatibility
    • fix returning error response when requesting ACL for non-existing S3 bucket
    • fix edge routing to match rules if request host contains a dot "."
    • fix EXTRA_CORS_ALLOWED_ORIGINS environment variable to match docs
    • fix ARN structure for EventBridge resources
    • fix extraction of EventBridge API destination name using new ARN format
    • fix S3 host-based routing detection
    • fix accessing missing "body" from Lambda response in API GW
    • fix JSON Patch for API GW method settings
    • fix some data types for API GW patch operations
    • fix "application/xml" content-type header for S3 responses
    • minor: fix file path in "config validate" CLI command
    Source code(tar.gz)
    Source code(zip)
  • v0.12.15(Jul 7, 2021)

    Change Log:

    LocalStack release 0.12.15

    1. New Features

    • add support for Kinesis CBOR error messages
    • add CF support for CertificateManager::Certificate

    2. Enhancements

    • security fixes: bind edge service to 127.0.0.1 by default (instead of 0.0.0.0)
    • format the codebase with black and isort
    • make for-loop in Makefile /bin/sh compatible
    • add flake8 rule F401 (unused imports)
    • update code style badge in README.md
    • run pre-release smoke tests for Pro features in CI builds
    • remove quiet parameter from service starting
    • refactor common.py and add tests
    • remove dead/unused CloudFormation code
    • update bug-report issue template to assign correct label
    • add workaround for kinesis-mock persistence startup failure
    • reduce log verbosity for CORS/origin checks
    • update .dockerignore to exclude files generated in CI build
    • restructure Elasticsearch process management
    • add unit test for moto parsing of complex params from querystring
    • refactor tests to fix/invert order of arguments in test assertions
    • refactor test_integration.py to use randomly generated resource names
    • minor formatting in bug-report issue template

    3. Bug Fixes

    • add additional allowed CORS origins to fix Cognito issues
    • fix processing of empty values in EventBridge event filters
    • fix JSON Patch operations for API Gateway usage plans
    • fix detection of resource status to allow re-deployment of CF stack after deletion
    • fix installation of debugpy via pip module instead of calling pip CLI
    • fix minor formatting issues in http/proxy server
    Source code(tar.gz)
    Source code(zip)
  • v0.12.14(Jun 29, 2021)

    Change Log:

    LocalStack release 0.12.14

    1. New Features

    • add support for EventBridge API destinations
    • add KINESIS_INITIALIZE_STREAMS configuration to initialize Kinesis streams on startup
    • add support for API GW MOCK integration and response parameters
    • add CloudFormation support for CloudWatch::Alarm resources
    • add support for V4 S3 presigned URLs with custom headers
    • add support for isBase64Encoded flag with Lambda integrations in API Gateway

    2. Enhancements

    • security fixes: fix CORS setup to prevent CSRF, add DISABLE_*_CORS_* configs
    • migrate from nose to pytests
    • refactor test_error_injection.py into a unittest.TestCase class
    • refactor tests and invert/fix order of assertion arguments
    • update coveralls config for new test setup with pytests
    • improve version check in check_terraform_version
    • parallelize builds and improve CircleCI workflow
    • pin serverless version in TestServerless to 2.48.0 to fix test issues
    • add threading event to indicate infrastructure has started
    • add coverage install to Dockerfile.base to enable coverage C extensions
    • remove superfluous coveralls config, now managed via CI env
    • fall back to using JAR for kinesis-mock installation for ARM systems (e.g., Macbook M1)
    • add config option TF_COMPAT_MODE to enable TF compatibility mode (for TF integration tests)
    • minor: update badges in README
    • minor refactoring: add dynamodb_table_exists() to common utils
    • minor: fix KeyError for missing EventSourceArn in Lambda API lookup
    • minor: make "enabled" flag to add_job(..) optional
    • minor: add parse_json_or_yaml() util function

    3. Bug Fixes

    • fix prefix filtering of events in EventBridge API in case of exact match
    • fix deprecation warnings surfaced when introducing pytest
    • fix extracting build report step in docker-build CI phase
    • fix passing environment variables to container creation for LAMBDA_EXECUTOR=docker-reuse
    • fix linter exclusions in install.py
    • fix request params for CF deployment of ApiGateway::Stage
    • fix time duration unit for profiler log_duration output
    • minor fix in file regex for plugin lookup to accommodate Windows path separators
    • minor fix to avoid exception on missing CloudFormation exports
    • minor fixes in S3 API
    Source code(tar.gz)
    Source code(zip)
  • v0.12.13(Jun 22, 2021)

    Change Log:

    LocalStack release 0.12.13

    1. New Features

    • introduce kinesis-mock as default provider for Kinesis (replacing kinesalite)
    • add support for API Gateway client certificates
    • add support for API Gateway - S3 integration for GET requests
    • add BUCKET_MARKER_LOCAL option to customize S3 bucket name (__local__) for local Lambda code mounting
    • add support for API Gateway VPC Links
    • add support for requestParameters in API Gateway method integrations

    2. Enhancements

    • add CF support for ResourceGroups::Group
    • add support for x-id query param for S3 delete object requests
    • add tagging support for IAM policies and instance profiles
    • add support for Kinesis EnableEnhancedMonitoring
    • add support for EC2 create_vpc_endpoint_service_configuration
    • use the new MOTO_S3_DEFAULT_KEY_BUFFER_SIZE variable for S3 in-memory buffer sizes
    • refactor shutdown procedure
    • use --env-file to pass env vars to Lambda containers to prevent cmd line arguments from becoming too long
    • ignore trailing slashes for some routes in Lambda API
    • update PYTHONPATH in image to accommodate both python v3.8 and v3.7
    • refactor API GW impl. for better compatibility with Terraform
    • parallelize SNS message delivery for improved performance
    • make parsing of IAM::Role properties more resilient
    • minor refactoring around Kinesis handler and x-amzn-errortype response header
    • minor: update Helm repo URL in README from HTTP to HTTPS
    • minor refactoring of Dockerfile and API Gateway tests

    3. Bug Fixes

    • fix minor formatting issue in profiler log
    • fix S3 bucket notification FilterRule name validation
    • fix deprecation warnings in unit tests
    • fix timezone issues in timestamp calculation and datetime comparisons
    • fix response for Lambda configuration update API
    • fix passing payload via stdin for large Lambda events using docker-reuse
    • fix duplicate Content-Type header in Lambda invocation responses
    • fix API GW JSONPatch operations and error responses
    • fix start_edge to gracefully fail when stdin for sudo is not available
    • fix continuation sequence number in event returned by SubscribeToShard Kinesis API
    • fix symlink to aws CLI executable in Dockerfile
    • fix datetime format for Lambda put-function-event-invoke-config response
    • fix skipping S3 signature validation if S3_SKIP_SIGNATURE_VALIDATION is enabled
    • fix stripping off qualifier suffix when constructing ARN for Lambda lookup
    • fix returning error response for attempting to delete non-existing S3 bucket
    • minor fix in extraction of Lambda results from log output lines
    • minor fix for Kinesis max stream retention period
    • minor fix when extracting URI for API GW integrations
    • minor CF fix to extract PhysicalResourceId via get_physical_resource_id()
    Source code(tar.gz)
    Source code(zip)
  • v0.12.12(Jun 6, 2021)

    Change Log:

    LocalStack release 0.12.12

    1. New Features

    • add initial support for Resource Groups API
    • add support for managing request payers on S3 buckets
    • save SES email contents to disk in machine-readable format
    • add support for LAMBDA_DOCKER_FLAGS to support custom Lambda Docker run flags
    • add S3_SKIP_SIGNATURE_VALIDATION config to skip S3 presign URL signature validation
    • add DEVELOP configuration for debugpy integration
    • add support for servicediscovery endpoints in API GW invocations
    • add Lambda Ruby 2.7 image support and update tests
    • add support for DynamoDB table replicas
    • add support for Route53 reusable-delegation-set APIs

    2. Enhancements

    • enhance validation of presigned URLs to support different port numbers in S3 URLs
    • add XRay trace headers in notifications from S3 to SQS
    • support ElasticsearchClusterConfig parameter for creation of ES clusters
    • add support for KinesisStreamSpecification parameter for AWS::DynamoDB::Table CF resource
    • add patch for stepfunctions-local to enable cross-region Lambda access
    • add test for creating bucket with existing bucket name
    • add support for session_token in S3 presign URLs
    • remove obsolete DynamoDBLocal fix for Alpine
    • add EventsBackend to manage state of Events API resources
    • add UnsubscribeURL in payload sent to HTTP SQS endpoints
    • add docs for Kafka and Elasticsearch external services integration
    • temporarily set S3_SKIP_SIGNATURE_VALIDATION=1 by default (until all issues with S3 presign URLs are resolved)
    • add CF support for ApiGateway::RequestValidator, Logs::SubscriptionFilter, Redshift::Cluster
    • add region backend for DynamoDB state
    • add support for arn:aws-us-gov:iam:... managed IAM policies
    • update version in sample docker-compose.yml
    • add test case for generating S3 presign URL from Node.js Lambda
    • add simple TCP proxy server util
    • add "running" property to FuncThread
    • refactor logic for sending SQS messages to DLQ
    • cache target API in edge requests for improved performance
    • skip gzip encoding for S3 responses to fix content-length issue with Go SDK
    • rename currentThread to current_thread for deprecation in Python 3.10
    • add missing endpoints for StepFunctions startup command
    • minor: add utility function to clean up Docker containers
    • minor refactoring in API Gateway implementation
    • minor enhancements in base image to optimize disk space
    • minor refactoring for EC2::VPCGatewayAttachment CF model
    • minor: add simple items_equivalent() util function
    • minor refactoring of docker-reuse Lambda executor for better extensibility
    • minor: allow passing keyword args to async_utils.run_sync(..)
    • minor: initialize Properties for CF resource instances

    3. Bug Fixes

    • fix missing SQS message attributes for notifications via SNS
    • fix using configured edge port in S3 presign URL calculation
    • fix EC2::Route CF model to properly lookup deployment state if DestinationIpv6CidrBlock not set
    • fix fetching CF resource state for EC2::Route and Logs::LogGroup
    • fix broken SNS test related to UnsubscribeURL returned on subscription attributes
    • fix edge route mapping for SES requests using /email route
    • fix syntax in aws_stack.py for compatibility with python 2.x
    • fix incorrect suffixes in SecretManager ARNs for secret lookups
    • fix Python sys path for module resolution when using local Lambda executor
    • fix integration test assertions to accommodate recent CloudWatch metrics changes
    • fix idempotence for SNS CreatePlatformEndpoint API calls
    • fix correct error code for getting attributes of non-existing SNS subscription
    • fix correct Authn header for internal call when replaying non HMAC request
    • fix filtering of CloudWatch metrics and dimensions
    • fix URL escaping when calculating presigned URLs to accommodate recent Quart server update
    • fix double response headers in CORS preflight API Gateway requests
    • fix resetting ETags when copying S3 object from multipart upload
    • fix accessing raw response when returning gzip encoded content from Lambdas via API GW
    • fix copying missing events file into container for Java Lambdas with docker-reuse
    • fix Kinesis response payload encoding for use with Java SDK
    • minor fix in ACM to avoid returning duplicate DomainValidationOptions
    Source code(tar.gz)
    Source code(zip)
  • v0.12.11(Jun 6, 2021)

    Change Log:

    LocalStack release 0.12.11

    1. New Features

    • add support for ResourceGroupsTaggingAPI
    • add support for Kinesis targets in EventBridge
    • add PERSISTENCE_SINGLE_FILE configuration
    • add HOSTNAME_FROM_LAMBDA configuration to enable connectivity in compose stacks with dynamic container names
    • add filtering in EventBus using event patterns: prefix,numeric,anything-but
    • add throttling support for DynamoDB BatchWriteItem requests

    2. Enhancements

    • add dynamic DNS check to fix issues with resolving s3.localhost.localstack.cloud
    • refactor CF model and fix deletion method for Lambda::Function
    • add missing $context variable for VLT templates
    • add requestTemplates attr for ApiGateway::Method
    • add domainName and apiId to Lambda events for API Gateway invocations
    • remove default cache-control header in S3 responses
    • handle x-id query parameter for S3 DeleteObjects requests
    • remove obsolete USE_HTTP2_SERVER and HOSTNAME configuration variables
    • add missing resourcePath to API GW Lambda events to fix Chalice invocations
    • strip quotes off StreamARNs when creating Kinesis stream consumers
    • enhance CloudFormation support for API GW Model resources
    • minor: refactor Lambda impl. for better extensibility
    • minor refactoring in tests and AWS response utils

    3. Bug Fixes

    • fix missing PATCH method in API GW CORS configuration
    • fix Event::Rule CF model to properly deploy rule with custom event bus
    • fix fetching Lambda details using ARN as well as partial ARN
    • fix bug in handler for DynamoDB BatchWriteItem API
    • fix S3 presigned URLs with response header overrides
    • fix object tagging for S3 multipart uploads
    • fix API Gateway invocation paths in Lambda events
    • fix returning Arn attribute for Logs::LogGroup CF resource
    • fix idempotency for creation of SNS topics with tags
    • fix DynamoDB to return empty response on no unprocessed items
    • minor fix for accessing non-existing attribute in ACM models
    Source code(tar.gz)
    Source code(zip)
  • v0.12.10(Apr 24, 2021)

    Change Log:

    LocalStack release 0.12.10

    1. New Features

    • add initial support for CloudFormation stack sets and stack instances
    • initial support for AWS Support API
    • add support for iterator types on Kinesis SubscribeToShard requests
    • support Kinesis streaming destinations for DynamoDB
    • initial support for put_metric_filter for CloudWatch log events
    • add support for HttpEndpoint destinations in Firehose API
    • add health check status for init scripts and persistence initialization

    2. Enhancements

    • replace AWS CLI commands with boto3 calls for /graph endpoint
    • remove obsolete code for S3 bucket encryptions
    • add CloudFormation support for EC2::NatGateway, KMS::Key, KMS::Alias, SecretsManager resources
    • return PhysicalResourceId for S3::BucketPolicy CloudFormation model
    • add edge mapping for EC2 requests with missing Auth headers
    • remove deprecated USE_MOTO_CF config switch
    • resolve refs in ExportName of CF stacks
    • add missing attributes in Kinesis SubscribeToShard response
    • minor refactoring and adding missing path in Dockerfile
    • cache cfn-response module in local infra folder instead of re-downloading each time
    • support JSON message structure with raw delivery in SNS
    • add CloudFormation support for additional EC2 resources
    • refactor logic for CF stack set instances
    • add support for getting SSM parameters by path and filtering by labels
    • remove "content-encoding: identity" header in S3 responses to fix compatibility with PHP/Guzzle 6
    • add SNS XRay propagation to SQS using ElasticMQ
    • add Circle-CI project setup and build badge
    • move CI build commands into Makefile for easier migration
    • refactor utils for resource tagging
    • refactor logic for proxy listener, fix edge forward headers
    • update S3 regex to support HOSTNAME_EXTERNAL in bucket hostnames
    • add missing aws_request_id and context attributes for Python Lambdas with local executor
    • add support for SES GetIdentityVerificationAttributes
    • add LS_LOG=trace option to print detailed request/response messages
    • add CloudFormation support for EC2::VPC, EC2::RouteTable, EC2::Route
    • add Location response header on S3 bucket creation
    • minor refactorings for "config validate" command

    3. Bug Fixes

    • fix API Gateway integration to allow binary payload data
    • fix reprocessing of SQS messages in case multiple Lambda event source mappings are defined
    • fix API GW integrations with no uri/integrationUri attribute (for mock integrations)
    • fix StreamViewType in DynamoDB Streams event records
    • fix stack status filter in CloudFormation API
    • fix CF dependency resolution to avoid unresolved/nil resource refs
    • fix Events API logic for recent upstream changes
    • fix API Gateway when applying JSON patch with empty patch value
    • fix passing region when constructing resource graph
    • fix CloudFormation GetAtt intrinsic function for attr string refs
    • fix proper stream view type of DynamoDB stream records
    • fix error logs on subscribe_to_shard for deleted Kinesis streams
    • fix build script to detect git:// repo URLs
    • fix compatibility of S3 API with Cyberduck
    • fix local URLs for nested CFN stacks
    • fix Kinesis DescribeStreamConsumer to return consumer correctly
    • fix content-type for requests forwarded to Lambda fallback URL
    • fix returning None value on TransactWrite DynamoDB operation
    • fix incorrect URL modification when sending S3 requests to backend
    • fix encoding and timestamp format for Kinesis SubscribeToShard from Java SDK
    • fix returning code 200 for S3 HEAD range requests
    • fix S3 notifications for URLs with "x-id" query parameters
    • minor fix for missing Lambda attributes on legacy persistence states
    • minor fix in util function for parsing URL-encoded request payloads
    • minor fix for is_port_open(..) util function to parse port parameters
    • minor fix for extracting region from auth headers
    Source code(tar.gz)
    Source code(zip)
Owner
LocalStack
Enabling a local dev&test loop for Cloud applications
LocalStack
DIAL(Did I Alert Lambda?) is a centralised security misconfiguration detection framework which completely runs on AWS Managed services like AWS API Gateway, AWS Event Bridge & AWS Lambda

DIAL(Did I Alert Lambda?) is a centralised security misconfiguration detection framework which completely runs on AWS Managed services like AWS API Gateway, AWS Event Bridge & AWS Lambda

CRED 71 Dec 29, 2022
Implement backup and recovery with AWS Backup across your AWS Organizations using a CI/CD pipeline (AWS CodePipeline).

Backup and Recovery with AWS Backup This repository provides you with a management and deployment solution for implementing Backup and Recovery with A

AWS Samples 8 Nov 22, 2022
A Serverless Application Model stack that persists the $XRP price to the XRPL every minute as a TrustLine. There are no servers, it is effectively a "smart contract" in Python for the XRPL.

xrpl-price-persist-oracle-sam This is a XRPL Oracle that publishes external data into the XRPL. This Oracle was inspired by XRPL-Labs/XRPL-Persist-Pri

Joseph Chiocchi 11 Dec 17, 2022
Automated AWS account hardening with AWS Control Tower and AWS Step Functions

Automate activities in Control Tower provisioned AWS accounts Table of contents Introduction Architecture Prerequisites Tools and services Usage Clean

AWS Samples 20 Dec 7, 2022
Cookiecutter templates for Serverless applications using AWS SAM and the Rust programming language.

Cookiecutter SAM template for Lambda functions in Rust This is a Cookiecutter template to create a serverless application based on the Serverless Appl

AWS Samples 24 Nov 11, 2022
The AWS Lambda Serverless Blind XSS App

Ass The AWS Lambda Serverless Blind XSS App 利用VPS配置XSS平台太麻烦了,如果利用AWS的Lambda那不就是一个域名的事情么?剩下的环境配置、HTTPS证书、隐私性、VPS续费都不用管了, 所以根据xless重写了Lambda平台的XSS,利用sla

cocokey 2 Dec 27, 2021
AWS Blog post code for running feature-extraction on images using AWS Batch and Cloud Development Kit (CDK).

Batch processing with AWS Batch and CDK Welcome This repository demostrates provisioning the necessary infrastructure for running a job on AWS Batch u

AWS Samples 7 Oct 18, 2022
Develop and deploy applications with the Ionburst Cloud Python SDK.

Ionburst SDK for Python The Ionburst SDK for Python enables developers to easily integrate with Ionburst Cloud, building in ultra-secure and private o

Ionburst Cloud 3 Mar 6, 2022
Simulation artifacts, core components and configuration files to integrate AWS DeepRacer device with ROS Navigation stack.

AWS DeepRacer Overview The AWS DeepRacer Evo vehicle is a 1/18th scale Wi-Fi enabled 4-wheel ackermann steering platform that features two RGB cameras

AWS DeepRacer 31 Nov 21, 2022
AWS Auto Inventory allows you to quickly and easily generate inventory reports of your AWS resources.

Photo by Denny Müller on Unsplash AWS Automated Inventory ( aws-auto-inventory ) Automates creation of detailed inventories from AWS resources. Table

AWS Samples 123 Dec 26, 2022
Automatically compile an AWS Service Control Policy that ONLY allows AWS services that are compliant with your preferred compliance frameworks.

aws-allowlister Automatically compile an AWS Service Control Policy that ONLY allows AWS services that are compliant with your preferred compliance fr

Salesforce 189 Dec 8, 2022
ShadowClone allows you to distribute your long running tasks dynamically across thousands of serverless functions and gives you the results within seconds where it would have taken hours to complete

ShadowClone allows you to distribute your long running tasks dynamically across thousands of serverless functions and gives you the results within seconds where it would have taken hours to complete

null 240 Jan 6, 2023
Project template for using aws-cdk, Chalice and React in concert, including RDS Postgresql and AWS Cognito

What is This? This repository is an opinonated project template for using aws-cdk, Chalice and React in concert. Where aws-cdk and Chalice are in Pyth

Rasmus Jones 4 Nov 7, 2022
CloudFormation Drift Remediation - Use Cloud Control API to remediate drift that was detected on a CloudFormation stack

CloudFormation Drift Remediation - Use Cloud Control API to remediate drift that was detected on a CloudFormation stack

Cloudar 36 Dec 11, 2022
A suite of utilities for AWS Lambda Functions that makes tracing with AWS X-Ray, structured logging and creating custom metrics asynchronously easier

A suite of utilities for AWS Lambda Functions that makes tracing with AWS X-Ray, structured logging and creating custom metrics asynchronously easier

Amazon Web Services - Labs 1.9k Jan 7, 2023
Unauthenticated enumeration of services, roles, and users in an AWS account or in every AWS account in existence.

Quiet Riot ?? C'mon, Feel The Noise ?? An enumeration tool for scalable, unauthenticated validation of AWS principals; including AWS Acccount IDs, roo

Wes Ladd 89 Jan 5, 2023
SSH-Restricted deploys an SSH compliance rule (AWS Config) with auto-remediation via AWS Lambda if SSH access is public.

SSH-Restricted SSH-Restricted deploys an SSH compliance rule with auto-remediation via AWS Lambda if SSH access is public. SSH-Auto-Restricted checks

Adrian Hornsby 30 Nov 8, 2022
aws-lambda-scheduler lets you call any existing AWS Lambda Function you have in a future time.

aws-lambda-scheduler aws-lambda-scheduler lets you call any existing AWS Lambda Function you have in the future. This functionality is achieved by dyn

Oğuzhan Yılmaz 57 Dec 17, 2022