Releases: localstack/localstack
v2.2.0
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
, andBucketInventory
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
andObjectRestore: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
andAWS::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 (enableENFORCE_IAM=1
, andIAM_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 theBIGDATA_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 🎉
- Added support for s3 analytics configuration by @macnev2013 in #8351
- remove thundra plugin by @thrau in #8382
- added support for intelligent tier in s3 by @macnev2013 in #8375
- SNS: Implement cross-account access by @viren-nadkarni in #8339
- S3: Implement cross-account access by @viren-nadkarni in #8395
- fix SNS cross account SQS publish + SQS get_queue_url by @bentsku in #8418
- add new CLI command to simplify shell completion by @alexrashed in #8413
- fix MacOS host mode docker host IP detection by @alexrashed in #8416
- improvement with apigw rest api import by @bentsku in #8371
- add BodyS3Location property to AWS::ApiGateway::RestApi by @bentsku in #8425
- add help texts, short args, format option decorator by @alexrashed in #8443
- fix apigw model resolving when importing and when validating by @bentsku in #8446
- Add Lambda Docker DNS configuration by @joe4dev in #8448
- Add support for ruby3.2, remove tests for deprecated runtimes by @dfangl in #8466
- upgrade moto to 4.1.11.post1 by @thrau in #8476
- [SFN] support for waitForTaskToken and enhancements by @MEPalma in #8292
- ApiGateway integration client rework by @dfangl in #8509
- [SFN] support for lambda parameters, parameters abstractions by @MEPalma in #8303
- Fix container port check and host detection on podman by @dfangl in #8544
- Let SQS AddPermission call actually influence policy attribute by @dfangl in #8554
- add CI env var to the list of config vars by @thrau in #8560
- DynamoDB: Improve global table replicas by @viren-nadkarni in #8549
- [SFN] Add support for Task Timeouts by @MEPalma in #8376
- [SFN] Support for callback failure by @MEPalma in #8386
- Fix termination of generators when client connection is closed by @dfangl in #8582
- unify CLI error messages, add global error message handler by @alexrashed in #8564
- Add support for list-type stack parameters by @dominikschubert in #8583
- add initial action for issue label -> project status sync by @alexrashed in #8591
- Limit batch size in delete and change visibility by @sinecode in #8479
- Support to import documentation parts by @calvernaz in #8573
- Bump moto-ext to 4.1.12.post1 by @viren-nadkarni in #8609
- use docker system info for client metadata if possible by @thrau in #8589
- [SFN] Support for Heartbeats by @MEPalma in #8428
- Allow multiple lambda docker networks configured by @dfangl in #8621
- add apigateway eventbridge support by @calvernaz in #7137
- A try fixing Lambda persistence by @dfangl in #8643
- fix parameters resolving for samtranslator for API Gateway by @bentsku in #8646
- introduce S3 file stream patching and provider by @bentsku in #8473
- Add config var for snapshot flush interval by @giograno in #8649
- Reset threadlocal storage before every request by @dfangl in #8648
- add S3 Lifecycle logic and return Expiration header by @bentsku in #8651
- CFn Resource Provider Framework v2 by @dominikschubert in #8611
- fix url encoding when validating pre-signed signature by @bentsku in #8664
- raise NotImplemented error for SelectObjectContent by @bentsku in #8689
- [SFN] Support for SFN and Sync, reworked exception handling, fixes, tests by @MEPalma in #8623
- implement S3 BucketInventoryConfiguration CRUD operations by @bentsku in #8696
- add ObjectRestore:Post and :Completed S3 Event Notification by @bentsku in #8690
- Add basic CRUD support for Lambda VpcConfig by @dominikschubert in #8686
Other Changes
- Update readme for 2.1.0 release by @viren-nadkarni in #8345
- fix release helper script for requirements.txt files by @alexrashed in #8365
- make test_fifo_queue_send_message_with_delay_on_queue_works more robust by @thrau in #8364
- add ClientRequestToken validation for SecretsManager by @bentsku in #8308
- fix: Lambda integration with DDB binary items by @giograno in #8206
- [minor] Fix extraction of Arn in KMS Key CloudFormation resource by @whummer in #8389
- add MAIN_DOCKER_NETWORK to config vars by @thrau in #8381
- [minor] Allow passing boto3 client to IAM fixtures to facilitate multi-reg...
v2.1.0
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
- Always return bridge as fallback network by @dominikschubert in #8151
- add OpenSearch 2.5, remove Firehose limitation by @alexrashed in #8167
- re-install DynamoDB in Dockerfile, use cache for archive download by @alexrashed in #8194
- enforce semver labels, block major labeled PRs by @alexrashed in #8095
- Introduce usage counters by @dominikschubert in #8116
- [SFN] Failure support for lambda (service tasks) by @MEPalma in #8158
- [SFN] Baseline support for SQS, fixes, enhancements, tests by @MEPalma in #8209
- fix message group id behavior in sqs fifo queues by @thrau in #8238
- upgrade Werkzeug to 2.3.4 by @alexrashed in #8200
- KMS: implement cross-accounts access by @viren-nadkarni in #8253
- Lambda: Implement cross-account access by @viren-nadkarni in #8195
- DynamoDB: Remove extraneous call during region resolution by @viren-nadkarni in #8301
- remove install dependency on localstack_client by @alexrashed in #8307
- KMS: response key ID field must contain key ARN by @viren-nadkarni in #8317
- add s3 CopyObject tests by @bentsku in #8216
- upgrade debian base image from buster to bullseye by @alexrashed in #8344
- fix account resolution in SQS QueryAPI operations by @thrau in #8353
Other Changes
- remove SNS create_sqs_message_attributes and add DLQ for Fifo topic by @bentsku in #8144
- fix auto decoding of gzip for s3 vhost proxied requests by @bentsku in #8148
- add tests for multipart SSE fields and S3 KMS BucketKeyEnabled by @bentsku in #7445
- Fix lambda init xray telemetry initialization by @joe4dev in #8154
- fix invalid access to thread-local access key ID by @alexrashed in #8134
- SQS fix deduplication at queue level and deleted messages by @bentsku in #8146
- SNS test and add deduplication for FIFO topic by @bentsku in #8145
- Add EC2 image ssm parameter type by @dfangl in #8161
- Fix firehose / s3 client creation of clients with role by @dfangl in #8159
- add github-envs for tinybird upload scripts by @steffyP in #8131
- simplify implementation of HTTPRequestEventStreamAdapter by @thrau in #8102
- Enhance parity for ACM certificates for wildcard subdomains by @whummer in #8162
- fix default ProvisionedThroughput in DynamoDB by @pinzon in #8160
- fix invalid SQS message decoding by @alexrashed in #8180
- CFn: Implemented stack name validation by @deepak2431 in #8166
- upgrade werkzeug to 2.2.3 by @thrau in #8104
- fix CFn s3 CORS configuration for optional parameters by @bentsku in #8175
- [SFN] [ChoiceOperators] numeric operators, tests by @MEPalma in #7766
- Update ASF APIs by @localstack-bot in #8186
- [SFN] [ChoiceOperators] String operators, tests by @MEPalma in #7772
- [SFN] [ChoiceOperators] Timestamp operators, tests by @MEPalma in #7784
- fix tag updates of AWS::SSM::Parameter by @dominikschubert in #8177
- Fix publishing versions if package type is image by @dfangl in #8179
- Extract AWS Account ID from IAM access key ids (again) by @dfangl in #8138
- Add request id to request context by @dominikschubert in #7874
- fix TypeError for get_ddb_provisioned_throughput by @bentsku in #8189
- avoid Werkzeug and Flask upgrade to 2.3.0 by @alexrashed in #8202
- Fix docker copy_to_container performance, especially on mac by @dfangl in #8196
- Send service principal when assuming role, check if lambda can assume role before allowing creation by @dfangl in #8126
- fix: s3 parsing key with trailing backslash and reserved chars by @giograno in #8198
- fix hardcoded user agent for APIGW lambda proxy test by @bentsku in #8208
- fix flaky unit tests using server_context fixture by @alexrashed in #8212
- Use explicit region for test fixtures by @viren-nadkarni in #8114
- Fix mapping of denied access in docker hub by @dfangl in #8215
- [SFN] Failure support for aws-sdk by @MEPalma in #8033
- Update ASF APIs by @localstack-bot in #8231
- mm: upgrade botocore and boto3 by @matt-mercer in #8210
- add support for python3.10 lambda runtime, now that it's officially a… by @matt-mercer in #8184
- Add tests for Cloud Control API and Cloudformation Extensions by @dominikschubert in #7638
- Reduce stack usage in template_deployer by @dominikschubert in #8236
- Add support for Lambda java17 runtime by @dfangl in #8237
- Move CFn utils and remove redundant code by @dominikschubert in #8239
- Try to fix flaky http integration tests by @dfangl in #8243
- Add mediaconvert client type by @simonrw in #8229
- reintroduce vhost use in s3 cors tests by @bentsku in #8190
- Raise DependencyNotYetSatisfied instead of KeyError when secret is not yet populated by @dfangl in #8220
- fix mapping of insufficient scopes return value to access denied exception by @alexrashed in #8251
- Add SourceArn for Events Message Publisher by @pinzon in #8217
- CloudFormation: add types and restructure by @simonrw in #8240
- CFn: Shift ref resolution earlier by @simonrw in #8260
- add dynamodb utils to transform python values into DDB types by @bentsku in #8207
- add config to disable cloudwatch metrics for SQS by @steffyP in #8269
- chore: update lambda doc links by @HarshCasper in #8258
- Display a specified number of log lines on console based on tail option by @rahulmlokurte in #823...
v2.0.2
What's Changed
- fix invalid error message for decrypt with incorrect key by @sannya-singal in #8096
- fix CloudWatch logs describe-log-* by @steffyP in #8088
- Remove old AWS client fixtures by @dominikschubert in #8070
- Update ASF APIs by @localstack-bot in #8106
- Disable HTTPS(S) proxies for internal calls by @joe4dev in #8066
- Fix containerd detection for host mode by @simonrw in #8112
- fix: Adding validation on kms plaintext based on the key type by @jcanabarro in #8113
- Fix server stop errors when restoring a snapshot by @giograno in #8108
- fix ASF operation signature mismatches by @alexrashed in #8119
- refactor pipeline testing community integration with pro by @alexrashed in #8133
- xfail TestS3Cors to allow green build until investigation by @bentsku in #8135
- Bump python from 3.10.10-slim-buster to 3.10.11-slim-buster by @dependabot in #8123
- Add transformers for KMS by @sannya-singal in #8120
- remove infra analytics calls by @ackdav in #8122
- Replace SES Client In SNS Publisher by @pinzon in #8109
- Cfn::IAM::Policy update by @deepak2431 in #8074
- fix IAM client fixture by @bentsku in #8147
- Update ASF APIs by @localstack-bot in #8150
- sns firehose client update by @pinzon in #8143
New Contributors
- @jcanabarro made their first contribution in #8113
Full Changelog: v2.0.1...v2.0.2
v2.0.1
What's Changed
- Add config option to override used lambda init version by @dominikschubert in #8015
- update readme to release 2.0 by @lukqw in #8024
- fix GetObjectTagging and GetBucketTagging format by @bentsku in #8021
- cleanup coverage-docs scripts by @steffyP in #8003
- refactor tests and add one new snapshot by @calvernaz in #8023
- fix SNS Subscription Filter OR/AND combination on MessageBody by @bentsku in #8028
- small fixture fix by @calvernaz in #8031
- Cleanup after non-standard region tests by @viren-nadkarni in #8025
- Fix AttributeError for custom S3 handler by @giograno in #8040
- fix SNS FIFO DLQ + add SequenceNumber to FIFO by @bentsku in #8029
- Update ASF APIs by @localstack-bot in #8043
- fix S3 response xml root tag names by @bentsku in #8037
- Introduce new AWS client test fixtures by @dominikschubert in #7984
- [SFN] [ChoiceOperators] redesign, is operators, boolean equals operators, tests by @MEPalma in #7764
- Configure CI on release branches by @simonrw in #8050
- Refactor integration tests to use new client fixtures by @dominikschubert in #8022
- fix forward slash validation in S3 pre-signed url by @bentsku in #7821
- Move test client creation logic into util package for re-use across repos by @dominikschubert in #8056
- set 'trylast' for pytest-teardown that writes the collected metrics by @steffyP in #8045
- Transcribe: Return TranscriptionJob in StartTranscriptionJob response by @viren-nadkarni in #8059
- Add missing client types for TypedServiceClientFactory by @dominikschubert in #8061
- KMS HMAC support by @sannya-singal in #8047
- fix APIGW RestAPI minimumCompressionSize by @bentsku in #8068
- Update Lambda code owners by @joe4dev in #8063
- add SNS validation of JSON fields type for MessageStructure json by @bentsku in #8055
- add quality gate for entrypoints to make targets by @alexrashed in #8060
- include link to service coverage page on not implemented error by @lukqw in #8052
- Display custom error message for NotImplementedErrors by @giograno in #8057
- Replace (incorrect) regex with filter pattern by @simonrw in #8080
- Detect containerd containers by @simonrw in #8071
- implement content-length fix for CreateBucket by @bentsku in #8082
- Add kms DeleteImportedKeyMaterial operation by @dfangl in #8081
- fix wrong service mapping to s3 vhost bucket by @bentsku in #8091
- fix: KMS incorrect error messaging for invalid keys by @sannya-singal in #8086
- fix: add check on plaintext size to kms encrypt operation by @sannya-singal in #8093
- add Docker SDK default timeout config by @alexrashed in #8085
Full Changelog: v2.0.0...v2.0.1
v2.0.0
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
andlocalstack-light
since they have become obsolete thanks to our new dependency packaging system (simply uselocalstack
orlocalstack-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 aLOCALSTACK_API_KEY
, please change your container configuration to uselocalstack/localstack-pro
. More details can be found here: #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
andEDGE_PORT_HTTP
intoGATEWAY_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 acceptEDGE_BIND_HOST
,EDGE_PORT
, andEDGE_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 ofEDGE_BIND_HOST
,EDGE_PORT
orEDGE_PORT_HTTP
toGATEWAY_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 yourdocker-compose.yml
, please replace it withGATEWAY_LISTEN=0.0.0:5000,0.0.0.0:5001 localstack start
. -
We are unifying the variables
HOSTNAME_EXTERNAL
andLOCALSTACK_HOSTNAME
intoLOCALSTACK_HOST
, which will allow configuration of hostnames returned by LocalStack in a more consistent way. If provided, this variable will be used in preference toHOSTNAME_EXTERNAL
andLOCALSTACK_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 acceptHOSTNAME_EXTERNAL
orLOCALSTACK_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 ofHOSTNAME_EXTERNAL
orLOCALSTACK_HOSTNAME
toLOCALSTACK_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 usedHOSTNAME_EXTERNAL
in yourdocker-compose.yml
, please replace it withLOCALSTACK_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 likesystemd-resolved
on Linux, ormDNSResponder
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
toon_request
oron_startup
. The default strategy currently is stillon_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
toon_request
,on_shutdown
orscheduled
, 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 externalDOCKER_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 aGetFunction
call. This behavior can be disabled withLAMBDA_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 likeawslocal 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 tohot-reload
. Please change your deployment configs accordingly, or use theBUCKET_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 ifDNS_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 sidecarlocalstack_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
directo...
v1.4.0
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
withMessageBody
- 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
andlocal-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
- Fix apigateway exportType oas3 => oas30 by @calvernaz in #7348
- Bump stepfunctions-local package to version 1.12.0 by @calvernaz in #7347
- Update Kinesis Mock to 0.3.0 by @etspaceman in #7346
- [minor] Check SSL cert file content to make startup more reliable by @whummer in #7344
- Update ASF APIs by @localstack-bot in #7352
- Allow more flexibility for lambda hot-reloading paths by @dfangl in #7345
- Add support for Lambda asynchronous event retries by @dominikschubert in #7259
- Disable resolve_refs_recursively in GenericResourceModel by default by @dominikschubert in #7149
- Add lock for StepFunction creation to prevent concurrency issues by @whummer in #7361
- Fix missing message sort in SES tests by @simonrw in #7363
- remove walrus operator from profiles.py by @bentsku in #7371
- fix asgi/wsgi werkzeug compatibility for multi-part uploads by @thrau in #7365
- Mark flaky terraform tests as xfail by @dominikschubert in #7356
- Fix stream event source dates for kinesis and dynamodb streams by @dfangl in #7372
- Update lambda java lib to 0.2.22 by @dfangl in #7373
- Move and refactor CFn utils/files by @dominikschubert in #7364
- Revert stepfunctions package change #7347 by @dominikschubert in #7354
- SES: publish custom email tags by @simonrw in #7332
- CFn refactoring pt.2 by @dominikschubert in #7376
- Support lambda docker flags in the asf provider by @dfangl in #7379
- fix passing event from default eventbus to custom eventbus by @bentsku in #7380
- Fix Kinesis -related Authorization header parsing (via kinesis-mock version update) by @paulo-ferraz-oliveira in #7375
- CFn refactoring pt.3 by @dominikschubert in #7383
- remove base64 decoding of SQS Binary msg attributes already done by ASF parser by @bentsku in #7386
- SES: Use all address fields when emitting notifications by @viren-nadkarni in #7385
- Add dev config flag for fixing lambda invoke on macOS in host mode by @joe4dev in #7367
- use only MetricDatum to show in raw-endpoint for cloudwatch by @steffyP in #7384
- Bump moto-ext to 4.0.12.post1 by @viren-nadkarni in #7320
- fix internal botocore API usage by @alexrashed in #7086
- VTL escape javascript by @calvernaz in #7226
- implement resource tag api for cloudwatch logs by @steffyP in #7389
- Transcribe: Add support for Vietnamese by @viren-nadkarni in #7395
- Make /health support HEAD query again by @suzaku in #7262
- SES: Debug endpoint response schema by @viren-nadkarni in #7388
- Lambda permissions by @joe4dev in #7336
- Update ASF APIs by @localstack-bot in #7394
- Test for transformations by @pinzon in #7287
- CFn refactoring Pt.4 by @dominikschubert in #7387
- SQS - MaxNumberOfMessages check by @giograno in #7401
- add sqs developer endpoints at /_aws/sqs by @thrau in #7393
- Bump moto-ext to 4.0.12.post2 by @viren-nadkarni in #7399
- upgrade pyopenssl to 23.0.0 by @alexrashed in #7413
- Update ASF APIs by @localstack-bot in #7416
- upload parity analytics to tinybird (CircleCI Job) by @steffyP in #7324
- add HTTP connection reuse for analytics client by @thrau in #7410
- fix SNS flaky test test_subscription_after_failure_to_deliver by @bentsku in #7368
- refactor SNS async publishing & ASF data models by @bentsku in #7267
- refine contribution guidelines in CONTRIBUTING.md by @thrau in #7423
- DynamoDB: Improved global tables by @viren-nadkarni in #7400
- skip cloudformation transformation tests by @pinzon in #7429
- Add support for CloudFormation update-termination-protection by @whummer in #7430
- minor: Improve parity for API Gateway response shapes by @whummer in #7422
- extend cloudformation deployment utility by @pinzon in #7434
- remove container after running container_port_can_be_bound by @steffyP in #7437
- update s3 and sqs codeowners by @thrau in #7438
- bump moto-ext to 4.0.12.post3 by @bentsku in #7440
- fix ASF S3 issue when host header has subdomains by @bentsku in #7431
- Avoid DynamoDB "Unknown table" error in BatchItemWriter after LocalStack restart by @fernandoalexandre in #7439
- Update ASF APIs by @localstack-bot in #7456
- update firehose provider api by @thrau in #7455
- update httpclient and proxy to allow connection re-use by @thrau in #7453
- Add lambda permission behavior test by @joe4dev in #7446
- Add lambda runtime wrapper test for ASF provider by @dfangl in #7462
- add aws_response_serializer decorator and use it for SQS dev endpoints by @thrau in #7441
- Fix CLI cache permissions by creating volume dir before mounting by @dfangl in #7468
- add support for CFn IAM::AccessKey update by @pinzon in #7443
- Cross-account attributes for Stores by @viren-nadkarni in #7457
- Fix authorizer creation by storing on Apigateway store by @calvernaz in #7454
- add more validation in S3 PutBucketACL by @b...
v1.3.1
What's Changed
- Add Tests for CFn update stack operation by @pinzon in #7185
- fix/missing parameters for sam by @simonrw in #7264
- Implement Lambda ASF container image CRUD and docker runtime executor hooks by @dfangl in #7266
- fix: correct status when updating an updated stack by @simonrw in #7272
- fix cloudwatch tests by filtering alarm names by @dfangl in #7277
- Added after inject hook by @giograno in #7250
- switch docs links to update ones by @HarshCasper in #7271
- Update ASF APIs by @localstack-bot in #7281
- fix cfn apigw account and implement update for some models by @pinzon in #7260
- support creation of integration responses for apigw method by @pinzon in #7269
- APIGW2 special module naming by @giograno in #7286
- fix opensearch / elasticsearch cf tempalte type conversions by @alexrashed in #7293
- fix release banner link by @alexrashed in #7294
- Fix lambda account settings by @joe4dev in #7284
- Modify partition rewrite proxy listener to handler by @dfangl in #7222
- Kinesis: Add multi-accounts support by @viren-nadkarni in #7230
- #7128 cleanup by @simonrw in #7254
- Add error handling to SES configuration set SNS event destinations by @simonrw in #7251
- clean up bad logs file by @pinzon in #7299
- Fix stage model patch operations by @calvernaz in #7283
- fix DDBstreams encoding after update by @ackdav in #7302
- remove unused DynamoDB-specific AwsApiListener by @alexrashed in #7296
- create a docker-compose pro for licensed users by @HarshCasper in #7290
- remove localstack changelog to keep focus on release announcements by @HarshCasper in #7303
- Update ASF APIs by @localstack-bot in #7307
- update Docker base image (python:3.10.8-slim-buster) digest to 6f0a933 by @renovate in #7306
- hide reading time for coverage docs by @HarshCasper in #7309
- add some basic tests for localstack.aws.mocking by @thrau in #7301
- SQS - Added check for invalid batch entry id by @giograno in #7313
- Add option to customize images used for lambda execution by @dominikschubert in #7317
- Bump moto-ext by @viren-nadkarni in #7291
- fix --profile flag of CLI so config profiles are loaded correctly by @thrau in #7329
- Remove pytz by @viren-nadkarni in #7318
- Fix deploy of DDB with ContributorInsightsSpecification by @giograno in #7322
- Transcribe: support input media amr/flac/mp3/mp4/ogg/webm by @janofsun in #6852
- Lambda: remove duplicate code for account usage by @joe4dev in #7325
- only set HOST_TMP_FOLDER (deprecated) for legacy directories by @alexrashed in #7343
- WIP: fix s3 pre-signed issues + clarify tests by @bentsku in #7333
- return all messages for sqs queue in case max_number_of_message equals -1 by @lukqw in #7331
- prevent DEFAULT_REGION's deprecation message to always show by @potyl in #7327
- Add hot reloading for new lambda provider by @dfangl in #7321
New Contributors
- @joe4dev made their first contribution in #7284
- @janofsun made their first contribution in #6852
- @potyl made their first contribution in #7327
Full Changelog: v1.3.0...v1.3.1
v1.3.0
Summary
AWS features
- OpenSearch 1.2 and 1.3 support. The default version of OpenSearch has been changed to 1.3.
- Multi-accounts support is now available in LocalStack Community. It was previously only available in LocalStack Pro.
- CloudWatch metrics for Amazon SQS are collected implicitly now.
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
- New
localstack/localstack-pro
image for licensed users to use LocalStack Pro features and APIs. (⭐ Pro) - Experimental BigData Mono Container Support to allow starting BigData components without the
localstack/bigdata
image (⭐ Pro) - User-defined path support for setting up a custom SSL certificate.
- New LocalStack Package Manager (LPM) features to install packages to specific targets and specific versions of packages.
- Kubernetes support to set up LocalStack on a K8s cluster via a Helm chart.
- A simplified version of the Cloud Pods CLI (⭐ Pro).
- Basic Cloud Pods commands (
save
andload
) for persistence snapshots are available to Community users! - Secret scanning for leaked API keys on GitHub support by LocalStack and GitHub (⭐ Pro)
- New and improved LocalStack Docs with tutorials, user guides, and an improved table of contents using Diátaxis framework.
Deprecations
- Deprecating
localstack-light
andlocalstack-full
images - Removal of legacy SQS, API Gateway, and Kinesis provider
- Deprecating Legacy IAM Enforcement (⭐ Pro)
- Deprecating
SYNCHRONOUS_*_EVENTS
- Deprecating
USE_SINGLE_REGION
andDEFAULT_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 #6769
- fix S3 terraform test timeout by @alexrashed in #6996
- Update ASF APIs by @localstack-bot in #6994
- S3 ASF test fixes by @bentsku in #6987
- move S3 ASF virtual host proxy and refactor by @bentsku in #7001
- update Docker base image (python:3.10.7-slim-buster) digest to 06d5be9 by @renovate in #6993
- add default converters to Router by @thrau in #7003
- implement SES CloneReceiptRuleSet by @wonhyeongseo in #6992
- fix offline GitHub package presence check by @alexrashed in #7006
- Add debugging options for terraform tests in CI by @dominikschubert in #6954
- Add debug information to check CI failures by @dfangl in #6986
- Pin lambda image digests and make common test builds reproducible by @dominikschubert in #7011
- Add tags to GatewayRestApi resource creation by @silv-io in #7008
- Add infra shutdown handler / improve cleanup of processes and threads by @dfangl in #7010
- Add semantic names to threads to simplify detection of thread leaks by @dominikschubert in #6781
- migrate installer routines to new architecture by @baermat in #6916
- Add error message for invalid SQS batch message IDs by @whummer in #7015
- Remove bson dependency and use pymongo by @calvernaz in #7022
- [KMS] Adding digests for KMS sign/verify. by @taras-kobernyk-localstack in #6941
- update Docker base image (python) tag to v3.10.8 by @renovate in #7030
- Update ASF APIs by @localstack-bot in #7031
- move OSPackages by @baermat in #7023
- CFn test plan implementation by @pinzon in #6973
- [KMS] Enabling Terraform tests for KMS. by @taras-kobernyk-localstack in #7026
- Remove RegionBackend and related code by @viren-nadkarni in #6998
- fix static infrastructure installer target by @alexrashed in #7033
- Discover lambda runtime executor using plugins by @dfangl in #7034
- Support for removing active services from service pool by @MEPalma in #6946
- Update patch for IAM backend by @giograno in #7042
- Manage Lambda code in code objects / share code between identical versions by @dfangl in #7019
- Migrate lambda executor endpoints from flask to router by @dfangl in #7039
- Extract account id from access key id for each request by @dfangl in #7045
- Migrate debugpy installer by @baermat in #7044
- Fix test_s3_lambda_integration test by @dominikschubert in #7051
- Revert "Extract account id from access key id for each request (#7045)" by @dominikschubert in #7056
- update RedHat example Dockerfile by @alexrashed in #7047
- Add mutex locks to installers by @viren-nadkarni in #7053
- S3 asf fixes detected by Terraform test suite by @steffyP in #7027
- Migrate testlibs installer by @baermat in #7052
- Update ASF APIs by @localstack-bot in #7079
- Add SQS integration support for new Lambda provider by @dominikschubert in #7032
- pin boto3 and botocore versions by @alexrashed in #7088
- add patch to parse VariableExpression by @calvernaz in #7091
- fix pipeline by disabling CircleCI Docker Layer Cache by @alexrashed in #7100
- Update lambda runtime init version, add config option for timeouts by @dfangl in #7087
- refactor lpm plugin mechanism by @alexrashed in #7063
- [KMS] Add support for generate random by @demonno in #7055
- Extend CFn AWS::Lambda resources and corresponding tests by @dominikschubert in #7082
- add config variable to define custom SSL cert path by @alexrashed in #7102
- add SQS check for maximum number of batch entries by @giograno in #7107
- DynamoDB Table CFn-model proper default table name by @pinzon in #7067
- fix S3 CORS allowing all by default by @bentsku in #7038
- Cfn tests addition by @pinzon in #7020
- fix skip snapshot for s3 test by @bentsku in #7111
- [KMS] Small comment fix, reusing stores.create_alias(). by @taras-kobernyk-localstack in #7066
- Update ASF APIs by @localstack-bot in #7112
- Implement single directory extraction for archive installer by @viren-nadkarni in #7062
- allow package installers to define custom locks by @alexrashed in #7121
- update Docker base image (python:3.10.8-slim-buster) digest to c2b2fbf by @renovate in #7...
v1.2.0
Summary
AWS features
- Multi-account support is now available for all services and enabled by default
- HTTP resolvers for AppSync (🌟 Pro)
- AmazonMQ with Apache ActiveMQ (🌟 Pro)
- Glue JDBC crawlers with Redshift integration (🌟 Pro)
- SageMaker Model Deployment and SageMaker Runtime (🌟 Pro)
Enhancements
- Significant parity improvements for KMS
- Significant parity improvements for Secrets Manager
- Support for CFn model: IAM Access Key
- Correctly enforce Lambda's 4KB environment variable size limit
- Add support for Lambda authorizers in AppSync APIs (🌟 Pro)
- Enhance AWS parity for Cognito user pool auth scopes (🌟 Pro)
- Enhance parity for Glue crawler table prefixes (🌟 Pro)
- Allow user-specified
hostPort
for ECS containers (🌟 Pro)
LocalStack features
- Cloud Pods - revised push/pull/inject workflows; configurable
override
,merge
, anddeep-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 #6761
- Update ASF APIs by @localstack-bot in #6817
- Add ability to set custom expiry for reserved ports in PortRange TTL cache by @whummer in #6813
- increase max number of http request threads by @thrau in #6814
- add ability to patch botocore specs by @thrau in #6812
- CFN support for Iam Access key model by @pinzon in #6488
- Fix CFN:Kinesis:Stream reference and attributes values. by @pinzon in #6752
- Add custom config to boto test clients by @dominikschubert in #6824
- test dynamic evaluation of services by @steffyP in #6821
- Add sorting transformer for snapshots by @dominikschubert in #6822
- Potential band-aid fix for issue 6808… by @bsmedberg-xometry in #6809
- add new s3 ASF provider by @bentsku in #6829
- Fix CFN Cloudwatch Alarm outputs by @pinzon in #6760
- refactor s3 tests by @bentsku in #6629
- Extract region from function arn for inter service invokes by @dfangl in #6828
- fix coverage exclusions by @alexrashed in #6833
- Fix region in DynamoDB store lookup to enable access from NoSQL Workbench by @whummer in #6834
- Add snapshot test for lambda proxy integration by @dfangl in #6647
- Correctly extract auth info context from authorizer payload by @dfangl in #6838
- Increase AWS Transcribe test timeout by @viren-nadkarni in #6823
- fix create-bucket: exclude LocationConstraint for us-east-1 by @steffyP in #6836
- upgrade hypercorn to 0.14.2 by @thrau in #6778
- fix terraform AWS provider patch for terraform tests by @alexrashed in #6853
- update Docker base image (python) tag to v3.10.7 by @renovate in #6850
- Update ASF APIs by @localstack-bot in #6854
- Extend CLI to run container from within Docker using SDK client by @whummer in #6841
- Clean up deprecated Java libs for STS integration with Kinesis client by @whummer in #6856
- Lambda tests rework by @dominikschubert in #6790
- Kinesis Stream Resource physical id must be the name by @pinzon in #6860
- fix pipeline failure on terraform test failure by @alexrashed in #6855
- Fix client warnings in logs for custom resources by @dominikschubert in #6866
- Remove snapshot paths after the transformations have been applied by @dominikschubert in #6870
- set env DISABLE_EVENTS for the not-implemented-steps in CircleCI by @steffyP in #6871
- Implement ASF S3 operations in provider by @bentsku in #6859
- add package abstraction and plugins by @baermat in #6783
- Add generic hint support for store bundles by @viren-nadkarni in #6843
- Feat/enforce lambda envar size limit by @mindriot101 in #6862
- Introduce multiruntime lambda tests by @dominikschubert in #6858
- fix opensearch cold-start domain creation by @alexrashed in #6883
- mark dynamodb tests and add snapshots by @ackdav in #6878
- Fix logging in local python lambdas by @dominikschubert in #6880
- Fix handle authorization header by @calvernaz in #6895
- Fix prerelease smoke tests for RDS by @dfangl in #6900
- Update ASF APIs by @localstack-bot in #6894
- update Docker base image (python:3.10.7-slim-buster) digest to 7bb70ac by @renovate in #6893
- add more api doc for public facing APIs by @thrau in #6901
- add rules for ASF S3 virtual host urls by @steffyP in #6846
- Fix SES email retrospective KeyError by @silv-io in #6896
- Dissolve legacy cloudformation tests by @dominikschubert in #6885
- refactor kinesis installers by @alexrashed in #6879
- Add rule for execute-api and extend test coverage for API GW custom CORS by @whummer in #6904
- Add filter in select_from_typed_dict by @giograno in #6902
- Migrate kms to LocalStack. by @taras-kobernyk-localstack in #6819
- disable generic local_api_checker for new gateway by @thrau in #6911
- Implement more ASF S3 operations in provider by @bentsku in #6868
- Add dependency in Dockerfile for MQ by @ackdav in #6919
- Small fix to handle empty init dir with legacy directories in non-Docker mode by @whummer in #6924
- Implement Bucket ACL operations in S3 provider by @bentsku in #6875
- Add utilities to check availability and reserve Docker container ports by @whummer in #6922
- [KMS] Adding key state constraints for operations. by @taras-kobernyk-localstack in #6913
- fix performance issue with ResponseStream wrapper by @thrau in #6937
- S3 ASF fix VersionId and Expires, implement ResponseHeaders override by @bentsku in #6906
- Pin pyOpenSSL to 21.0.0 by @viren-nadkarni in #6936
- pin pyOpenSSL to 22.0.0 by @viren-nadkarni in #6940
- Refactorizaition of CFN test by @pinzon in #6898
- correct the link for CLA.md by @lionas32 in #6890
- Minor fix for Lambda layer response parsing by @whummer in #6935
- [SecretsManager] Fixes, Enhancements, Snapshot tests by @MEPalma ...
v1.1.0
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
- Lambda function URLs
- Lambda event filtering
- API Gateway integration to execute Stepfunctions
- S3 Notifications to EventBridge
- Reporting batch item failures when using SQS with Lambda
- CBOR support for all services (including Kinesis)
- Initial support for DynamoDB global tables version 2019.11.21
- Experimental version of Amazon Transcribe speech to text service
- Initial version of AWS Fault Injection Simulator service (🌟 Pro)
- Enhanced integration between API Gateway v2, ECS, and ALB (🌟 Pro)
- RDS custom versions are now the default, you can disable them with
RDS_PG_CUSTOM_VERSIONS=0
(🌟 Pro) - Initial support for Neo4J graph databases in Neptune (🌟 Pro)
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 withLAMBDA_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 #6603
- update Docker base image (python) tag to v3.10.6 by @renovate in #6608
- order input for snapshot-match to fix reference-replacement by @steffyP in #6598
- re-create snapshot-json to fix ordering by @steffyP in #6624
- Fix fifo queue creation with attribute validation by @baermat in #6622
- use snapshots for SNS tests by @bentsku in #6601
- Reduce docker desktop lambda creation times by @dfangl in #6595
- Adding a KMS test for encryption with different key formats. by @taras-kobernyk-localstack in #6500
- added passing tests by @macnev2013 in #6617
- Support for new S3 checksum checks by @pinzon in #6619
- fix KeyValueBasedTransformer by @steffyP in #6623
- fix error in deleting lambda configuration keys by @dfangl in #6627
- removed databind patch for dynamodb by @steffyP in #6637
- fix delay seconds=0 for fifo queues by @baermat in #6633
- fix SNS subscription deleted when SQS endpoint was deleted by @bentsku in #6645
- Add default logging configuration for state machine by @giograno in #6628
- Introduce colored output format for snapshot diffs in integration tests by @dominikschubert in #6456
- fix SNS msg attrs when sending to SQS DLQ by @bentsku in #6640
- fix format of message to SNS and SQS from lambda DLQ by @bentsku in #6625
- Fix resolving CFn intrinsic functions passed as list rather than dict by @whummer in #6658
- Fixing BatchWriteItem with key element not matching the schema by @giograno in #6641
- Validate a bunch of DynamoDB tests against AWS by @giograno in #6653
- remove old event logging code by @thrau in #6632
- fix lambda_sqs_integration region resolution to avoid CI failures by @thrau in #6666
- Update ASF APIs by @localstack-bot in #6670
- update Docker base image (python:3.10.6-slim-buster) digest to 4bb7026 by @renovate in #6669
- Fix Error when Destinations are not specified (AWS SES) by @sreeo in #6665
- Fix linting by @viren-nadkarni in #6677
- add caching for service catalog indexes by @thrau in #6672
- Use repr conversion when printing values in diff report by @dominikschubert in #6664
- fix pipeline by disabling flaky TF S3 tests by @alexrashed in #6679
- Generalize parameter conversion fallback for SDK calls in CloudFormation by @dominikschubert in #6662
- fix failing circle-ci step by @steffyP in #6685
- Added test for S3 notification with a presigned request by @pinzon in #6498
- fix parity coverage scripts (add FIS, allow non-indexed services) by @alexrashed in #6693
- add support for ReportBatchItemFailures in Lambda SQS event source mappings by @thrau in #6606
- Making it possible for KMS GetPublicKey to get ENCRYPT_DECRYPT keys. by @taras-kobernyk-localstack in #6675
- Fix CloudFormation GetTemplate response and multiple cdk deployments by @dominikschubert in #6635
- Feature: Lambda URL support by @pinzon in #6342
- fix patch deployment model by @calvernaz in #6699
- set CONFIG_PROFILE correctly into config variable with localstack CLI by @thrau in #6636
- Add response for cors preflight requests by @dfangl in #6646
- Fix Lambda URL building by @dominikschubert in #6703
- Feature: SNS msg delivery to Firehose endpoint by @pinzon in #6426
- fix SNS publish_batch passing MessageDeduplicationId to SQS queue by @bentsku in #6660
- Update CLA Github action to not lock PR threads after merge by @whummer in #6708
- Prevent race condition for Store write operations by @viren-nadkarni in #6689
- added apis for route53resovler by @macnev2013 in #6673
- fix CORS response enriching for service-managed CORS by @alexrashed in #6723
- fix sqs fifo message sequence number generation by @thrau in #6713
- fix sqs purge queue operation to match AWS behavior by @thrau in #6710
- remove extensions api from coverage collection by @thrau in #6715
- Update ASF APIs by @localstack-bot in #6719
- Feature: Lambda Event Filtering for DynamoDB Streams, SQS by @merowinger92 in #6212
- make dynamodblocal inMemory option configurable by @thrau in #6730
- improve performance of dynamodb forward_request operations by @thrau in #6733
- Correctly shutdown kinesis listener once firehose deliverystream is deleted by @dfangl in #6729
- fix apigateway aws lambda integration invocation by @calvernaz in #6667
- Allow conditional skip with s...