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
* Fix apigateway exportType oas3 => oas30 by calvernaz in https://github.com/localstack/localstack/pull/7348
* Bump stepfunctions-local package to version 1.12.0 by calvernaz in https://github.com/localstack/localstack/pull/7347
* Update Kinesis Mock to 0.3.0 by etspaceman in https://github.com/localstack/localstack/pull/7346
* [minor] Check SSL cert file content to make startup more reliable by whummer in https://github.com/localstack/localstack/pull/7344
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7352
* Allow more flexibility for lambda hot-reloading paths by dfangl in https://github.com/localstack/localstack/pull/7345
* Add support for Lambda asynchronous event retries by dominikschubert in https://github.com/localstack/localstack/pull/7259
* Disable resolve_refs_recursively in GenericResourceModel by default by dominikschubert in https://github.com/localstack/localstack/pull/7149
* Add lock for StepFunction creation to prevent concurrency issues by whummer in https://github.com/localstack/localstack/pull/7361
* Fix missing message sort in SES tests by simonrw in https://github.com/localstack/localstack/pull/7363
* remove walrus operator from profiles.py by bentsku in https://github.com/localstack/localstack/pull/7371
* fix asgi/wsgi werkzeug compatibility for multi-part uploads by thrau in https://github.com/localstack/localstack/pull/7365
* Mark flaky terraform tests as xfail by dominikschubert in https://github.com/localstack/localstack/pull/7356
* Fix stream event source dates for kinesis and dynamodb streams by dfangl in https://github.com/localstack/localstack/pull/7372
* Update lambda java lib to 0.2.22 by dfangl in https://github.com/localstack/localstack/pull/7373
* Move and refactor CFn utils/files by dominikschubert in https://github.com/localstack/localstack/pull/7364
* Revert stepfunctions package change 7347 by dominikschubert in https://github.com/localstack/localstack/pull/7354
* SES: publish custom email tags by simonrw in https://github.com/localstack/localstack/pull/7332
* CFn refactoring pt.2 by dominikschubert in https://github.com/localstack/localstack/pull/7376
* Support lambda docker flags in the asf provider by dfangl in https://github.com/localstack/localstack/pull/7379
* fix passing event from default eventbus to custom eventbus by bentsku in https://github.com/localstack/localstack/pull/7380
* Fix Kinesis -related Authorization header parsing (via kinesis-mock version update) by paulo-ferraz-oliveira in https://github.com/localstack/localstack/pull/7375
* CFn refactoring pt.3 by dominikschubert in https://github.com/localstack/localstack/pull/7383
* remove base64 decoding of SQS Binary msg attributes already done by ASF parser by bentsku in https://github.com/localstack/localstack/pull/7386
* SES: Use all address fields when emitting notifications by viren-nadkarni in https://github.com/localstack/localstack/pull/7385
* Add dev config flag for fixing lambda invoke on macOS in host mode by joe4dev in https://github.com/localstack/localstack/pull/7367
* use only MetricDatum to show in raw-endpoint for cloudwatch by steffyP in https://github.com/localstack/localstack/pull/7384
* Bump moto-ext to 4.0.12.post1 by viren-nadkarni in https://github.com/localstack/localstack/pull/7320
* fix internal botocore API usage by alexrashed in https://github.com/localstack/localstack/pull/7086
* VTL escape javascript by calvernaz in https://github.com/localstack/localstack/pull/7226
* implement resource tag api for cloudwatch logs by steffyP in https://github.com/localstack/localstack/pull/7389
* Transcribe: Add support for Vietnamese by viren-nadkarni in https://github.com/localstack/localstack/pull/7395
* Make /health support HEAD query again by suzaku in https://github.com/localstack/localstack/pull/7262
* SES: Debug endpoint response schema by viren-nadkarni in https://github.com/localstack/localstack/pull/7388
* Lambda permissions by joe4dev in https://github.com/localstack/localstack/pull/7336
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7394
* Test for transformations by pinzon in https://github.com/localstack/localstack/pull/7287
* CFn refactoring Pt.4 by dominikschubert in https://github.com/localstack/localstack/pull/7387
* SQS - MaxNumberOfMessages check by giograno in https://github.com/localstack/localstack/pull/7401
* add sqs developer endpoints at /_aws/sqs by thrau in https://github.com/localstack/localstack/pull/7393
* Bump moto-ext to 4.0.12.post2 by viren-nadkarni in https://github.com/localstack/localstack/pull/7399
* upgrade pyopenssl to 23.0.0 by alexrashed in https://github.com/localstack/localstack/pull/7413
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7416
* upload parity analytics to tinybird (CircleCI Job) by steffyP in https://github.com/localstack/localstack/pull/7324
* add HTTP connection reuse for analytics client by thrau in https://github.com/localstack/localstack/pull/7410
* fix SNS flaky test test_subscription_after_failure_to_deliver by bentsku in https://github.com/localstack/localstack/pull/7368
* refactor SNS async publishing & ASF data models by bentsku in https://github.com/localstack/localstack/pull/7267
* refine contribution guidelines in CONTRIBUTING.md by thrau in https://github.com/localstack/localstack/pull/7423
* DynamoDB: Improved global tables by viren-nadkarni in https://github.com/localstack/localstack/pull/7400
* skip cloudformation transformation tests by pinzon in https://github.com/localstack/localstack/pull/7429
* Add support for CloudFormation update-termination-protection by whummer in https://github.com/localstack/localstack/pull/7430
* minor: Improve parity for API Gateway response shapes by whummer in https://github.com/localstack/localstack/pull/7422
* extend cloudformation deployment utility by pinzon in https://github.com/localstack/localstack/pull/7434
* remove container after running container_port_can_be_bound by steffyP in https://github.com/localstack/localstack/pull/7437
* update s3 and sqs codeowners by thrau in https://github.com/localstack/localstack/pull/7438
* bump moto-ext to 4.0.12.post3 by bentsku in https://github.com/localstack/localstack/pull/7440
* fix ASF S3 issue when host header has subdomains by bentsku in https://github.com/localstack/localstack/pull/7431
* Avoid DynamoDB "Unknown table" error in BatchItemWriter after LocalStack restart by fernandoalexandre in https://github.com/localstack/localstack/pull/7439
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7456
* update firehose provider api by thrau in https://github.com/localstack/localstack/pull/7455
* update httpclient and proxy to allow connection re-use by thrau in https://github.com/localstack/localstack/pull/7453
* Add lambda permission behavior test by joe4dev in https://github.com/localstack/localstack/pull/7446
* Add lambda runtime wrapper test for ASF provider by dfangl in https://github.com/localstack/localstack/pull/7462
* add aws_response_serializer decorator and use it for SQS dev endpoints by thrau in https://github.com/localstack/localstack/pull/7441
* Fix CLI cache permissions by creating volume dir before mounting by dfangl in https://github.com/localstack/localstack/pull/7468
* add support for CFn IAM::AccessKey update by pinzon in https://github.com/localstack/localstack/pull/7443
* Cross-account attributes for Stores by viren-nadkarni in https://github.com/localstack/localstack/pull/7457
* Fix authorizer creation by storing on Apigateway store by calvernaz in https://github.com/localstack/localstack/pull/7454
* add more validation in S3 PutBucketACL by bentsku in https://github.com/localstack/localstack/pull/7444
* add SNS FilterPolicyScope MessageBody by bentsku in https://github.com/localstack/localstack/pull/7408
* replace legacy edge proxy forwarding with TCP proxy edge component by alexrashed in https://github.com/localstack/localstack/pull/7470
* fix: return headers correctly inside a VTL template in apigateway by amitassaraf in https://github.com/localstack/localstack/pull/7461
* Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/common/introspection/provided/src by dependabot in https://github.com/localstack/localstack/pull/7452
* Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/common/uncaughtexception/provided/src by dependabot in https://github.com/localstack/localstack/pull/7451
* Bump tokio from 1.18.1 to 1.18.4 in /tests/integration/awslambda/functions/rust-lambda by dependabot in https://github.com/localstack/localstack/pull/7450
* add more validation when creating KMS keys and improve parity by bentsku in https://github.com/localstack/localstack/pull/7463
* Ensure we support Python 3.11 for the CLI by simonrw in https://github.com/localstack/localstack/pull/7447
* change default timestamp format for querystring by steffyP in https://github.com/localstack/localstack/pull/7473
* Cover additional Lambda URL response handling cases by dominikschubert in https://github.com/localstack/localstack/pull/6777
* remove ProxyListener in tests by bentsku in https://github.com/localstack/localstack/pull/7465
* Minor: Add package/version information in installer exception message by whummer in https://github.com/localstack/localstack/pull/7481
* add kms key validation in ASF S3 with feature flag by bentsku in https://github.com/localstack/localstack/pull/7448
* CFN - special case for store location by giograno in https://github.com/localstack/localstack/pull/7485
* workaround: fix amazon_kclpy build failure by pinning previous version by bentsku in https://github.com/localstack/localstack/pull/7496
* fix passing account id to moto in legacy edge proxy by bentsku in https://github.com/localstack/localstack/pull/7489
* fix list_firewall_domain_lists by steffyP in https://github.com/localstack/localstack/pull/7488
* Minor: Pass providerARNs to API GW authorizer on OpenAPI import by whummer in https://github.com/localstack/localstack/pull/7499
* add support for s3 notification - ObjectAcl by bentsku in https://github.com/localstack/localstack/pull/7409
* add validation for multipart upload order by bentsku in https://github.com/localstack/localstack/pull/7495
* Fix resolving CFn SSM stack parameters in !Sub references by whummer in https://github.com/localstack/localstack/pull/7498
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7500
* Create new provider and server for using local-kms and remove proxy by silv-io in https://github.com/localstack/localstack/pull/7502
* Lambda revisions by joe4dev in https://github.com/localstack/localstack/pull/7482
* Remove unused CFn resolving by dominikschubert in https://github.com/localstack/localstack/pull/7506
* Update README to reflect time's inexorable passage by QuinnyPig in https://github.com/localstack/localstack/pull/7516
* fix S3 ASF storage class validation PutObject/CompleteMultipart by bentsku in https://github.com/localstack/localstack/pull/7505
* fix S3 ASF event stream serialization by alexrashed in https://github.com/localstack/localstack/pull/7513
* add on_platform_shutdown method to extension interface by thrau in https://github.com/localstack/localstack/pull/7477
* cleanup terraform test workflow by macnev2013 in https://github.com/localstack/localstack/pull/7519
* add env var analytics event on start by ackdav in https://github.com/localstack/localstack/pull/7508
* fixed: ssm maintenance_window get/delete with exception by macnev2013 in https://github.com/localstack/localstack/pull/7504
* randomly generate request-id for S3 notification events by bentsku in https://github.com/localstack/localstack/pull/7523
* Bump moto-ext to 4.1.0.post1 by viren-nadkarni in https://github.com/localstack/localstack/pull/7528
* fix APIGW UpdateMethodResponse error response code by alexrashed in https://github.com/localstack/localstack/pull/7520
* create a new ConfigResource and deprecate /?_config_ by bentsku in https://github.com/localstack/localstack/pull/7524
* add apigateway stage variables support by calvernaz in https://github.com/localstack/localstack/pull/7142
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7533
* Bump moto-ext to 4.1.0.post2 by viren-nadkarni in https://github.com/localstack/localstack/pull/7536
* fix URL encoding for ARN partition rewriting by alexrashed in https://github.com/localstack/localstack/pull/7544
* Update Kinesis Mock to 0.3.2 by etspaceman in https://github.com/localstack/localstack/pull/7546
* Fix naming from Lambda revisions PR by joe4dev in https://github.com/localstack/localstack/pull/7551
* remove leftover terraform test patch by alexrashed in https://github.com/localstack/localstack/pull/7549
* add pattern for predicting moto-backend location by steffyP in https://github.com/localstack/localstack/pull/7547
* Extend allowed CORS origins to include EDGE_PORT_HTTP endpoint by whummer in https://github.com/localstack/localstack/pull/7554
* improve capture_not_implemented script by steffyP in https://github.com/localstack/localstack/pull/7474
* Improve support for ApiGW to StepFunctions service integration by calvernaz in https://github.com/localstack/localstack/pull/7241
* migrate OpenSearch/ElasticSearch EndpointProxy by baermat in https://github.com/localstack/localstack/pull/7558
* improves response template handling by calvernaz in https://github.com/localstack/localstack/pull/7531
* add Gateway server abstraction by alexrashed in https://github.com/localstack/localstack/pull/7563
* Add patch for pickling acm certificate by giograno in https://github.com/localstack/localstack/pull/7561
* SNS FIFO topic: create MessageDeduplicationId if not provided by bentsku in https://github.com/localstack/localstack/pull/7566
* Feature: Integration between API Gateway V1 and AppSync by amitassaraf in https://github.com/localstack/localstack/pull/7459
* Add idempotence for chmod utils to make startup as non-root more resilient by whummer in https://github.com/localstack/localstack/pull/7565
* fix capture_not_implemented by steffyP in https://github.com/localstack/localstack/pull/7575
* Update Kinesis Mock to 0.3.4 by etspaceman in https://github.com/localstack/localstack/pull/7577
* Basic connectivity test from lambda by dominikschubert in https://github.com/localstack/localstack/pull/7483
* fix validation when publishing to FIFO topic with TargetArn by bentsku in https://github.com/localstack/localstack/pull/7564
* Copy runtime init to container including parent folders by dfangl in https://github.com/localstack/localstack/pull/7583
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7589
* Bump lambda init to v0.1.11-pre by dominikschubert in https://github.com/localstack/localstack/pull/7588
* Extend Docker client to accept --label flag by whummer in https://github.com/localstack/localstack/pull/7590
* add internal pods endpoint to legacy cors check by lukqw in https://github.com/localstack/localstack/pull/7576
* Add keepalive period for removing unused execution environments by dominikschubert in https://github.com/localstack/localstack/pull/7584
* Fix cloudwatch reset by steffyP in https://github.com/localstack/localstack/pull/7556
* Add test for aws-sdk:s3:deleteObject tasks in StepFunctions by whummer in https://github.com/localstack/localstack/pull/7594
* Set download retries and log download exceptions for installer failures by dominikschubert in https://github.com/localstack/localstack/pull/7600
* refactor list of updatable resources by pinzon in https://github.com/localstack/localstack/pull/7587
* Ignore stack trace in lambda exception tests by dominikschubert in https://github.com/localstack/localstack/pull/7606
* add factory for ASF service providers by thrau in https://github.com/localstack/localstack/pull/7571
* fix opensearch store access in create_cluster method by thrau in https://github.com/localstack/localstack/pull/7618
* Update ASF APIs by localstack-bot in https://github.com/localstack/localstack/pull/7621
* Add support for Opensearch 2.3 by viren-nadkarni in https://github.com/localstack/localstack/pull/7552
* fix: rename list bucket/object reponse class by macnev2013 in https://github.com/localstack/localstack/pull/7545
* Add new lambda provider alias by dominikschubert in https://github.com/localstack/localstack/pull/7625
* Add support for LAMBDA_SYNCHRONOUS_CREATE flag by dominikschubert in https://github.com/localstack/localstack/pull/7624
* Removing startup info ext dependency by giograno in https://github.com/localstack/localstack/pull/7607
* fix npm ownership issues by alexrashed in https://github.com/localstack/localstack/pull/7626
* add more config variables to analytics logging by thrau in https://github.com/localstack/localstack/pull/7619
* Fix/modify launch template by SimonWallner in https://github.com/localstack/localstack/pull/7586
* refactor router to enable resource class pattern via rules by thrau in https://github.com/localstack/localstack/pull/7614
* fix streaming and header handling for proxies by alexrashed in https://github.com/localstack/localstack/pull/7602
* Avoid triggering healthcheck failure which times out after 5s by shenie in https://github.com/localstack/localstack/pull/7085
* migrate internal SES endpoint by alexrashed in https://github.com/localstack/localstack/pull/7630
* fix S3 issue with JS SDK and pre-signed URL - different signer behaviour by bentsku in https://github.com/localstack/localstack/pull/7628
* Fix is_object_request by using the parsed URL (Fixes 7503) by GPSnoopy in https://github.com/localstack/localstack/pull/7512
* Fix !GetAtt with Outputs from Nested Stacks by dominikschubert in https://github.com/localstack/localstack/pull/7631
* Capture actual legacy lambda executor fallback mode by dominikschubert in https://github.com/localstack/localstack/pull/7623
* Add PRO hooks for new lambda provider by joe4dev in https://github.com/localstack/localstack/pull/7560
* Patching EC2 subnets for pickling by giograno in https://github.com/localstack/localstack/pull/7629
* Removing thread in the Firehose store by giograno in https://github.com/localstack/localstack/pull/7642
* allow using route decorator multiple times on single endpoint by alexrashed in https://github.com/localstack/localstack/pull/7633
* work on APIGW parity for RestAPI resource, remove patches by bentsku in https://github.com/localstack/localstack/pull/7595
* fix S3 ASF pre-signed port permutation logic by bentsku in https://github.com/localstack/localstack/pull/7646
* add newline after XML preamble for S3 (fix serverless issue) by bentsku in https://github.com/localstack/localstack/pull/7644
* EC2: Fix attribute not initialised in Subnet instance during unpickling by viren-nadkarni in https://github.com/localstack/localstack/pull/7647
* Add v2 service provider "alias" for S3 by dominikschubert in https://github.com/localstack/localstack/pull/7648
* Bump tokio from 1.18.4 to 1.18.5 in /tests/integration/awslambda/functions/common/introspection/provided/src by dependabot in https://github.com/localstack/localstack/pull/7613
* add deprecated env vars to config event by ackdav in https://github.com/localstack/localstack/pull/7640
* Bump moto-ext to 4.1.1.post3 by viren-nadkarni in https://github.com/localstack/localstack/pull/7622
* Bump tokio from 1.18.4 to 1.18.5 in /tests/integration/awslambda/functions/common/endpointinjection/provided/src by dependabot in https://github.com/localstack/localstack/pull/7612
* Bump tokio from 1.18.4 to 1.18.5 in /tests/integration/awslambda/functions/rust-lambda by dependabot in https://github.com/localstack/localstack/pull/7611
* Bump tokio from 1.18.4 to 1.18.5 in /tests/integration/awslambda/functions/common/uncaughtexception/provided/src by dependabot in https://github.com/localstack/localstack/pull/7610
* APIGW: catchall using x-amazon-apigateway-any-method by viren-nadkarni in https://github.com/localstack/localstack/pull/7653
* Update flake8 and isort dependencies by dfangl in https://github.com/localstack/localstack/pull/7656
* add OpenSearch SecurityPlugin configuration by alexrashed in https://github.com/localstack/localstack/pull/7658
New Contributors
* paulo-ferraz-oliveira made their first contribution in https://github.com/localstack/localstack/pull/7375
* suzaku made their first contribution in https://github.com/localstack/localstack/pull/7262
* fernandoalexandre made their first contribution in https://github.com/localstack/localstack/pull/7439
* amitassaraf made their first contribution in https://github.com/localstack/localstack/pull/7461
* QuinnyPig made their first contribution in https://github.com/localstack/localstack/pull/7516
* SimonWallner made their first contribution in https://github.com/localstack/localstack/pull/7586
* GPSnoopy made their first contribution in https://github.com/localstack/localstack/pull/7512
**Full Changelog**: https://github.com/localstack/localstack/compare/v1.3.1...v1.4.0