Localstack Versions Save

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

v2.2.0

9 months ago

Summary

LocalStack 2.2.0 is out live! With new AWS features like Glue 4.0 support, S3 Lifecycle Expiration, and Opensearch/Elasticsearch resources, as well as LocalStack CLI improvements and deprecations, this release is a significant step forward for local AWS development. Check out the full details in the release notes! 🚀

AWS Features

  • Support for Glue 4.0 with Spark 3.3.0 has been added. (🌟 pro)
  • Support for global clusters has been added to RDS. (🌟 pro)
  • Support for MySQL databases has been added to RDS Data API. (🌟 pro)
  • Initial support for EMR Serverless. (🌟 pro)
  • Various enhancements and parity fixes in AppSync, including better context (de)serialization, context objects for Lambda data sources, and account/region lookup fixes. (🌟 pro)
  • Several enhancements in Timestream queries, including UNNEST, and interpolation functions. (🌟 pro)
  • New CRUD implementations have been implemented for BucketIntelligentTiering, BucketAnalytics, and BucketInventory in the S3 provider.
  • Support for S3 Lifecycle Expiration has been added, which will now return the Expiration header if a BucketLifecycleConfiguration is configured and a rule matches the object.
  • Support for ObjectRestore:Post and ObjectRestore:Completed S3 Notifications events have been added.
  • Support for Object Retention in GOVERNANCE mode in the S3 provider.
  • Enabled cross-account accessibility for S3 buckets, implementing a cross-account namespace which prevents the creation of buckets with the same name in different accounts.
  • Support for OpenSearch and Elasticsearch resources to be created in a non-default account.
  • Enhanced support for encryption context in the KMS APIs.
  • Support for Destinations in the CloudWatch Logs, including new CRUD implementations.
  • Improve global table replicas support in DynamoDB.
  • Add support for AWS::RDS::DBProxy and AWS::RDS::DBProxyTargetGroup CloudFormation resources

LocalStack Features

  • New LocalStack CLI experience with binary builds, auto-completion, Homebrew support, and UX improvements.
  • New Cloud Pods client (that can be activated with the ACTIVATE_NEW_POD_CLIENT flag), leveraging LocalStack container's APIs and storing Cloud Pod’s artifacts inside the container itself. This client becomes the default provider from v3.0. (🌟 pro)
  • Live policy streams during your LocalStack usage! Use localstack aws iam stream to see the IAM policies generated for your API calls (enable ENFORCE_IAM=1, and IAM_SOFT_MODE=1 if policies should not be enforced). (🌟 pro)
  • LocalStack Web Application status page now links to available Resource Browsers.

Deprecations

  • EC2_AUTOSTART_DAEMON is now deprecated and marked for removal in the next major release.
  • AUTOSTART_UTIL_CONTAINERS is now deprecated and marked for removal in the next major release.
  • The Bigdata image support with the localstack/bigdata image and the BIGDATA_MONO_CONTAINER=0 variable will be removed in the next major release.
  • The legacy S3 & Lambda providers will be removed in the next major release.
  • Host interface modification (used for automatic usage of the LocalStack DNS) when starting LocalStack in host mode is now deprecated and marked for removal in the next major release.

What's Changed

Exciting New Features 🎉

Other Changes

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

v2.1.0

11 months ago

Summary

LocalStack v2.1.0 is finally here! With new features like OpenSearch 2.5 support and cross-account compatibility, this release is a incremental step for streamlining your AWS development. Read on for the full run-down of what's new and what's changed. 🚀

AWS features

  • Support for OpenSearch 2.5 has been added and it is now compatible with AWS Kinesis Data Firehose.
  • Cross-account support is now available for SQS queues, Lambda functions and layers, and KMS keys.
  • IoT now supports registry events, lifecycle events and DynamoDB topic rule. (🌟 pro)
  • IoT MQTT broker now supports MQTT v5 and QoS limit. (🌟 pro)
  • RDS now supports PostgresSQL 10, 14 and 15. (🌟 pro)
  • MWAA now supports Airflow 2.5.1. (🌟 pro)
  • AppSync JavaScript resolvers is now supported to allow users to express processing logic in JavaScript. (🌟 pro)

LocalStack features

  • DynamoDB ships with DynamoDB Local in the LocalStack Docker image to improve the start-up time.
  • DynamoDB CRUD operations have been improved and are now 20% faster.
  • Base Docker image is updated from Debian Buster to Debian Bullseye.
  • KMS keys, SQS queues, Lambda functions and layers can now be accessed cross-account using ARNs.
  • LocalStack can now issue and accept structured Access Key IDs.
  • Developer Hub — Users can now filter sample applications based on services, complexity level, infrastructure provider, programming languages, and Cloud Pods support.

What's Changed

Other Changes

New Contributors

Full Changelog: https://github.com/localstack/localstack/compare/v2.0.2...v2.1.0

v2.0.2

1 year ago

What's Changed

New Contributors

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

v2.0.1

1 year ago

What's Changed

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

v2.0.0

1 year ago

This is our second major release with many new features, enhancements, and improved parity for more extensive integration across the AWS tooling ecosystem. With LocalStack 2.0, we have significantly optimized the internals of the platform and moved to new service implementations, images, and internal toolings to make it easy for developers to build & test their cloud applications locally! 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

  • LocalStack community image (localstack/localstack) no longer contains LocalStack Pro (localstack/localstack-pro) code, effectively cutting the community image size in half
  • Removal of localstack-full and localstack-light since they have become obsolete thanks to our new dependency packaging system (simply use localstack or localstack-pro)
  • Completely new AWS Lambda provider with improved parity and performance
  • Completely new S3 provider with improved parity and features
  • Improved supports for community cloud pods
  • Simplified host configuration and docker networking
  • Internal endpoints have moved into /_localstack and /_aws

Pro

  • Cross-service IAM enforcement
  • Completely new snapshot persistence (PERSISTENCE=1) mechanism with more flexible load and save strategies
  • New simplified container setup for AWS Big Data Technologies (Athena, Glue, EMR, etc)

How to migrate

General

  • ⚠️ If you are using LocalStack Pro with a LOCALSTACK_API_KEY, please change your container configuration to use localstack/localstack-pro. More details can be found here: https://github.com/localstack/localstack/issues/7854
  • LocalStack Pro will fail to start if the LocalStack Key activation fails. You can disable this behavior by setting ACTIVATE_PRO=0.

Networking

  • We are unifying the variables EDGE_BIND_HOST, EDGE_PORT and EDGE_PORT_HTTP into GATEWAY_LISTEN, which will allow configuration of the addresses and ports the LocalStack process listens on. It takes the form <ip address>[:port][,<ip address>:<port>...] where multiple values can be given, separated by commas. LocalStack will listen on all interfaces, but will ask for superuser permission for privileged ports. We will still accept EDGE_BIND_HOST, EDGE_PORT, and EDGE_PORT_HTTP during a deprecation period following the release of v2, but they will not be used by LocalStack for configuration at some point in the future. Please migrate your use of EDGE_BIND_HOST, EDGE_PORT or EDGE_PORT_HTTP to GATEWAY_LISTEN. If you experience issues, please try the deprecated configuration variables.

  • For example, if you previously ran LocalStack with the command EDGE_BIND_HOST=0.0.0.0 EDGE_PORT=5000 EDGE_PORT_HTTP=5001 localstack start or used these configuration variables in your docker-compose.yml, please replace it with GATEWAY_LISTEN=0.0.0:5000,0.0.0.0:5001 localstack start.

  • We are unifying the variables HOSTNAME_EXTERNAL and LOCALSTACK_HOSTNAME into LOCALSTACK_HOST, which will allow configuration of hostnames returned by LocalStack in a more consistent way. If provided, this variable will be used in preference to HOSTNAME_EXTERNAL and LOCALSTACK_HOSTNAME, and will be used as the hostname returned in URLs for created resources such as OpenSearch clusters, SQS queues, or RDS databases. We will still accept HOSTNAME_EXTERNAL or LOCALSTACK_HOSTAME during a deprecation period following the release of v2, but they will not be used by LocalStack for configuration at some point in the future. Please migrate your use of HOSTNAME_EXTERNAL or LOCALSTACK_HOSTNAME to LOCALSTACK_HOST. If you experience issues, please try the deprecated configuration variables.

  • For example, if you previously ran LocalStack with the command HOSTNAME_EXTERNAL=<hostname> localstack start or used HOSTNAME_EXTERNAL in your docker-compose.yml, please replace it with LOCALSTACK_HOST=<hostname>[:port].

  • Starting LocalStack Pro using the CLI will no longer publish port 53 to the host if it is already bound by some other service like systemd-resolved on Linux, or mDNSResponder on macOS.

Persistence & cloud pods

Using LocalStack Pro with PERSISTENCE=1 (which we term snapshot-based persistence) now has two behavioral changes with respect to when data is restored and saved. More information can be found in our docs.

  • Restoring state/loading a snapshot (load): Previously, snapshots could only be loaded from disk per-service when services were first initialized, lazy-loading the state the first time a service was used. With the new persistence mechanism introduced in v2, persistent data can be loaded on LocalStack startup. You can configure this behavior by setting SNAPSHOT_LOAD_STRATEGY to on_request or on_startup. The default strategy currently is still on_request until we iron out some quirks.
  • Saving state/creating a snapshot (save): Previously, a snapshot was created for a particular service on each request. This was mainly to protect against potential data loss if LocalStack would suddenly terminate. We found that this approach leads to several problems, specifically related to concurrency and performance. An alternative approach we have introduced is to store snapshots on LocalStack shutdown, which produces no performance overhead during runtime, but will not protect you against data loss if LocalStack does not terminate correctly. The default strategy is on a scheduled basis, specifically, we take snapshots of services that have changed every 15 seconds. You can configure this behavior by setting SNAPSHOT_SAVE_STRATEGY to on_request, on_shutdown or scheduled, respectively.

The layout of Cloud Pods has been changed and cloud pods created with v1.x.x may be incompatible with v2.0. Please re-create your cloud pods with the latest LocalStack version.

Lambda

Lambda has been completely re-written and the current documentation can be found here. There are several behavioral changes to lambda that mostly affect users of the LOCAL executor mode. If you run into issues, you can, for now, use the legacy provider using PROVIDER_OVERRIDE_LAMBDA=legacy.

  • Mounting the Docker socket "/var/run/docker.sock:/var/run/docker.sock" into the LocalStack container is now required to run Lambdas.
  • The default behavior is now equivalent to the old docker-reuse executor, there are no longer multiple options.
  • Local executor: with LAMBDA_EXECUTOR=local , lambdas were executed within the LocalStack container. This was mostly used as a fallback if the docker socket could not be mounted into the LocalStack container. If you cannot mount the docker socket or don’t have an external DOCKER_HOST available, we provide a new way to run Lambda functions via static worker containers that can be configured manually. The only requirement here is connectivity between the static worker and the LocalStack instance. Predefined workers will be available via images hosted by us: e.g. localstack/lambda-worker:python3.9.
  • There are several new ways to configure the lambda provider variables that can be found in our docs, which we will update in the upcoming weeks.
  • We have migrated our Lambda Docker images from lambci to use the official AWS images, which will now be pulled by default from public.ecr.aws/lambda/
  • Functions were previously created synchronously, i.e., CreateFunction calls would block until the function state was “Active”. Functions are now created asynchronously, and their state will move from “Pending” to “Active”, which you can check with a GetFunction call. This behavior can be disabled with LAMBDA_SYNCHRONOUS_CREATE=1 (not recommended).
  • Stricter input validation: previously, when creating functions, the Role attribute could be any value, and many of our examples included something like awslocal create-function --role r1. This will no longer work, as roles now have to have an ARN format. We do not t validate whether the role exists, so you can use any ARN.
  • Hot reloading: previously, the magic S3 bucket name for lambda code hot reloading was __local__, which was changed to hot-reload. Please change your deployment configs accordingly, or use the BUCKET_MARKER_LOCAL configuration to customize the value.
  • Lambda in LocalStack Pro supports “transparent endpoint injection”, which allows Lambdas to resolve domains like s3.amazonaws.com to the LocalStack container. Previously, this was based on patching SDKs, but is now completely DNS-based, and will be disabled if DNS_ADDRESS=0 is set.

S3

S3 has been completely re-written and its behavior is aligned with AWS. Users should be mostly unaffected, but may experience some breakage depending on previous behavior that was not aligned with AWS. Should you run into problems, you can activate the old provider with PROVIDER_OVERRIDE_S3=legacy.

Big Data container

  • The mono container mode (BIGDATA_MONO_CONTAINER=1) for BigData services (Glue, EMR, Athena, etc) is now the default, the previous implementation with a separate sidecar localstack_bigdata container is deprecated and will be removed in a future release.
  • Please note that some of the required dependencies (Spark, Hive, etc) are lazily downloaded and installed at runtime, which increases the processing time on first load. The libraries are cached locally in the var_libs directory - please make sure to properly mount the LocalStack volume into your container. We also provide a separate localstack/localstack-pro:latest-bigdata BigData mono container image which has the default dependencies pre-installed.

Other notable changes

  • supervisord is no longer used to start LocalStack in the Docker container, instead we use our own init program.
  • LocalStack no longer automatically restarts on failure
  • /var/lib/localstack/logs/localstack_infra.log was removed
  • REQUIRE_PRO has been replaced with ACTIVATE_PRO, which sets whether or not LocalStack pro should be activated when using the pro image.

New deprecations

  • With all new provider implementations, some configuration variables have been deprecated with this release and will be removed in future releases:
    • HOSTNAME_EXTERNAL - This configuration will be migrated to LOCALSTACK_HOST
    • LOCALSTACK_HOSTNAME - This configuration will be migrated to LOCALSTACK_HOST
    • EDGE_BIND_HOST - This configuration will be migrated to GATEWAY_LISTEN
    • EDGE_PORT - This configuration will be migrated to GATEWAY_LISTEN
    • EDGE_PORT_HTTP - This configuration will be migrated to GATEWAY_LISTEN
    • LAMBDA_EXECUTOR - This configuration is obsolete with the new lambda provider
    • LAMBDA_STAY_OPEN_MODE - Stay open mode is the default behavior in the new lambda provider
    • LAMBDA_REMOTE_DOCKER - The new lambda provider copies zip files by default and automatically configures hot reloading
    • LAMBDA_CODE_EXTRACT_TIME - Function creation now happens asynchronously in the new lambda provider
    • LAMBDA_CONTAINER_REGISTRY - The new lambda provider uses LAMBDA_RUNTIME_IMAGE_MAPPING instead
    • LAMBDA_XRAY_INIT - The X-Ray daemon is always initialized in the new lambda provider
    • LAMBDA_DOCKER_DNS - This feature is currently not supported in the new lambda provider
    • HOSTNAME_FROM_LAMBDA - This feature is currently not supported in the new lambda provider
    • LAMBDA_FALLBACK_URL - This feature is not supported in the new lambda provider
    • LAMBDA_FORWARD_URL - This feature is not supported in the new lambda provider

Deprecation removals

  • Deprecation removals:
    • LEGACY_EDGE_PROXY has been removed
    • LEGACY_DIRECTORIES has been removed, please migrate to the current Filesystem Layout
    • LEGACY_IAM_ENFORCEMENT has been removed
    • /docker-entrypoint-initaws.d for initializing LocalStack has been removed, please migrate to the modern Initialization Hooks
    • please find other minor deprecation notices in previous release notes.

What's Changed

New Contributors

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

v1.4.0

1 year ago

Summary

AWS features

  • OpenSearch 2.3 is now supported and used by default.
  • Apache Airflow 2.4.3 is now supported in MWAA and used by default.
  • Add support for SNS subscriptions FilterPolicyScope with MessageBody
  • Add support for S3 Notification Event s3:ObjectAcl:Put
  • Add support for Macros / Global Transformations in CloudFormation

Enhancements

  • More API operations now support global tables in DynamoDB: UpdateItem , DeleteItem , ListTables , UpdateTable , DescribeTable
  • Improved performance for publish operations in SNS
  • Add OpenSearch security plugin with support for Internal User Database
  • Add support for using public Layers from AWS in Lambda.
  • Add support for Transparent Endpoint Injection with Python, NodeJS, Ruby, and Java in Lambda.
  • Add support for Layers in the Kubernetes executor for Lambda
  • Several enhancements for running Lambda functions as pods on Kubernetes
  • Layer CRUD is now available in LocalStack Community.
  • Add support for MySQL and custom versions in RDS. Use RDS_MYSQL_DOCKER=1 to activate the feature, launching MySQL instances using official images in a separate Docker container.

LocalStack features

  • Enhancements in the experimental BigData Mono Container Support. This allows BigData services to be spun directly inside the LocalStack main container.
  • on_platform_shutdown hooks are now available for LocalStack Extensions
  • Add support for persistence for CloudFormation
  • BIGDATA_MONO_CONTAINER=1 will become the default with the upcoming 2.0 release.

Deprecations

  • KMS_PROVIDER and local-kms provider is now deprecated and marked for removal in the next major release.
  • EDGE_FORWARD_URL is deprecated and marked for removal in the next major release.
  • Cognito Endpoints will be migrated in the upcoming major release. This will affect the /login , /logout , /signup, /forgotPassword endpoints.
  • The /?_config_ endpoint is deprecated and moved to /_localstack/config.
  • The /_localstack/ses endpoint is deprecated and moved to /_aws/ses.

What's Changed

New Contributors

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

v1.3.1

1 year ago

What's Changed

New Contributors

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

v1.3.0

1 year ago

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

New Contributors

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

v1.2.0

1 year ago

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

New Contributors

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

v1.1.0

1 year ago

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

New Contributors

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