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 fromvolumes: - "${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 withpip install --upgrade localstack
. The latest version of the CLI already uses the new LocalStack volume directory.
*The volume directory can be configured via theLOCALSTACK_VOLUME_DIR
, which defaults to:- Mac:
~/Library/Caches/localstack/volume
- Linux:
~/.cache/localstack/volume
- Windows:
%LOCALAPPDATA%/localstack/cache/volume
- Mac:
-
- The old filesystem hierarchy (including
/tmp/localstack
mounts,DATA_DIR
andHOST_TMP_PATH
) can be enabled usingLEGACY_DIRECTORIES=1
- If you mount a volume into
/tmp/localstack
instead of/var/lib/localstack
, then LocalStack will automatically enableLEGACY_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 runpip install --upgrade "localstack>=1.0.0.dev"
- Remove
DATA_DIR
which has been deprecated and will be ignored. UsePERSISTENCE=1
and find your state files in your LocalStack volume instate/
- Remove
HOST_TMP_PATH
, which was previously necessary forLAMBDA_EXECUTOR=docker
ordocker-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 #6427
- add new log output formatting and asf trace logging by @thrau in #6424
- set analytics api version to v1 by @thrau in #6431
- collect parity metrics by @steffyP in #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 #6433
- fix aws header list parsing by @thrau in #6435
- Make SERVICES act as preload-list for EAGER_SERVICE_LOADING by @dfangl in #6438
- Fixes #6405 Kms import key material ignores requested wrapping algo by @srgg in #6407
- update readme header to new theme by @thrau in #6446
New Contributors
Full Changelog: v0.14.5...v1.0.0