Summary
LocalStack 3.3 is here with a host of new features and enhancements. This release includes support for running ECS tasks on Kubernetes, improved performance for DynamoDB Streams and Kinesis, and a new experimental web server implementation for high-throughput scenarios.
AWS Features
- ECS tasks now can be run when LocalStack is deployed on Kubernetes. To enable this feature, set
ECS_TASK_EXECUTOR=kubernetes
. Tasks can be added to ELB load balancer target groups. (🌟 enterprise) - Lambda now supports the new Dotnet8 runtime.
- Multi-label support is now available for Neptune service. (🌟 pro)
- Filters for list operations and parameters for discover operations is now available in ECS service discovery. (🌟 pro)
- GraphQL APIs created locally by CloudFormation can now be created with tags. (🌟 pro)
- Support for routing of CloudFront aliases to the correct CloudFront distribution is now available. (🌟 pro)
- Support for wildcards in CORS config (eg:
http://*.example.com
) is now available in the S3 service. - Support for ECS Optimised Service Integration, state size quota limits,
MaxItem
,MaxItemPath
, handling ofStates.DataLimitExceeded
errors, and StepFunctions Activities in the Step Functions service. - Support for using external SAML providers (e.g., Auth0) as an identity pool IdP in the Cognito service. (🌟 pro)
Enhancements
- LocalStack now stops and removes underlying EC2 containers while shutting down. You can opt to skip the removal by setting the
EC2_REMOVE_CONTAINERS
flag. (🌟 pro) - IoT Device Shadow Service now supports
DeleteThingShadow
API. (🌟 pro) - MWAA Airflow runners now come with Java Corretto pre-installed. (🌟 pro)
- ARM-based Lambda functions now feature improved test coverage covering all AWS-supported Lambda runtimes.
- Significant performance improvements when DynamoDB Streams or Kinesis destinations are configured for a table (over 15x more throughput for
BatchWriteItem
API). - Significant performance improvements when sending large
INSERT
orCOPY
queries for PostgreSQL database in the RDS service. (🌟 pro) - Default endpoint returned by ECR has been changed to include the Account ID and region for better parity. This can be configured using the new configuration variable
ECR_ENDPOINT_STRATEGY
. (🌟 pro) - Several enhancements for the Step Functions service, including API Actions validation, Map states, JsonPath extraction, and much more!
LocalStack Features
- Support for a new experimental web server implementation that has improved performance for high-throughput scenarios. You can activate it using
GATEWAY_SERVER=twisted
. - New Resource Browser for the CodeCommit service. (🌟 pro)
Deprecations
-
Deprecated six Lambda runtimes including :
python3.7
nodejs14.x
ruby2.7
provided
go1.x
java8
LocalStack prints a deprecation warning but you can still use deprecated runtimes
What's Changed
Exciting New Features 🎉
- Remove legacy CFn models by @dominikschubert in #10304
- fix functhread daemon status and tmp_thread cleanup by @thrau in #10404
- add twisted gateway server by @thrau in #9834
- implement SQS DLQ redrive to original source queue by @thrau in #10414
- remove contrib package by @thrau in #10424
- make SQS dynamic endpoint strategy guess the endpoint strategy used by @thrau in #10416
- fix SQS DLQ message attributes and redrive into multiple source queues by @thrau in #10425
- use rolo twisted gateway integration by @thrau in #10428
- Support XML responses in api gateway templating by @shucoshuco in #10381
- Feat/firehose add redshift destination by @maxhoheiser in #10375
- KMS: Fixup ImportKeyMaterial for non-symmetric keys by @uubk in #10116
- Update lambda runtime deprecations and fix Lambda ARM builds by @joe4dev in #10441
- Support custom key material when creating KMS keys by @jalaziz in #10379
- add resource provider for Iam Server Certificate by @pinzon in #10455
- Move version single source outside of
__init__.py
by @silv-io in #10497
Other Changes
- fix typo in FAQ link description, closes #10343 by @AnthonyMazzie in #10344
- Fix attributes, create and delete for AWS::Redshift::Cluster by @dominikschubert in #10341
- Fix CircleCI workflow tracking by @silv-io in #10346
- Update readme for v3.2.0 release by @viren-nadkarni in #10228
- fix S3 copy-source format validation by @bentsku in #10338
- add support for Array type in resource provider Scaffolding by @pinzon in #10326
- Fix UserData regression from provider migration in AWS::EC2::Instance by @dominikschubert in #10355
- Added update for "AWS::EC2::Instance" CFn Resource Provider by @Morijarti in #10352
- add timestream to the list of composite apis by @giograno in #10361
- Update kinesis-mock to 0.4.6 by @etspaceman in #10363
- fix workflow execution for PRs coming from forks by @alexrashed in #10366
- [SFN] Base Support for ECS Optimised Service Integration by @MEPalma in #10321
- Added CFn Resource Provider for AWS::SNS::Subscription and AWS::SNS::TopicPolicy by @Morijarti in #10359
- Add remaining migrations that we missed in the initial check by @dominikschubert in #10368
- Improve delete reliability for kinesis streams by @dominikschubert in #10371
- [SFN] Enhancements for Map State by @MEPalma in #10204
- Fix parsing of StepFunction timestamps by @dominikschubert in #9813
- add rolo to dev script by @bentsku in #10384
- Bump moto-ext to 5.0.2.post2 by @viren-nadkarni in #10389
- Disable legacy CFn model execution by @dominikschubert in #10353
- Enhance parity for API Gateway deletion of wildcard method settings by @whummer in #10399
- refactor s3 storage to use context manager to avoid race condition by @bentsku in #10387
- Update CODEOWNERS by @localstack-bot in #10401
- Remove unused CFN_RESOURCE_PROVIDER_OVERRIDES option by @dominikschubert in #10402
- Adding support for partial wildcards for S3 CORS by @cloutierMat in #10365
- add docstring for cw test and assertion by @pinzon in #10394
- fix DDB performance when Streams are enabled by @bentsku in #10415
- update s3 lambdas to node20 by @bentsku in #10417
- fix S3 GLACIER_IR not being an archive type by @bentsku in #10395
- [SFN] Reduce Flakiness of Timeout and Heartbeat Tests by @MEPalma in #10427
- [SFN] Enhancements to api actions validations: InvalidArn, StateMachineDoesNotExist, ExecutionDoesNotExist by @MEPalma in #10421
- fix SNS Publish exception when using empty topic by @bentsku in #10430
- Cfn: Fix bug preventing reuse of stack names by @viren-nadkarni in #10403
- Support new common string functions in velocity templating by @shucoshuco in #10391
- add fix for cfn-response code for nodejs custome resource by @pinzon in #10408
- Move to only using
pyproject.toml
by @silv-io in #10432 - Set package data key to
localstack
by @silv-io in #10444 - Fix DynamoDB Table and Global Table Creation with SSESpecification and TTL by @Morijarti in #10433
- Update runtime init, add dynamic configuration for folders to run chmod on in Lambda by @dfangl in #10438
- Add ARM test selection marker by @joe4dev in #10275
- Introduce test selection for CI tests on PRs by @dominikschubert in #10301
- fix disk space issues in GitHub workflow again by @alexrashed in #10443
- fix test selection for community contributions by @alexrashed in #10459
- Add experimental option to distribute services across multiple localstack instances by @dfangl in #10462
- Implement basic status filter for StepFunctions list-executions by @matt-mercer in #9833
- Fix secretsmanager secret rotation failing because RotateImmediately is unset by @cowlingj in #10091
- use ThreadPoolExecutor to forward DDB Streams events by @bentsku in #10463
- Adapt dynamodbstreams clients in the provider as well by @dfangl in #10466
- scheduled run for non-default credentials by @sannya-singal in #10367
- fix: remove AWSPREVIOUS only when duplicated by @vimiomori in #10083
- [SFN] Base Support for Activities by @MEPalma in #10383
- fix and enable several ruff linting rules by @thrau in #10471
- fix lambda event source mapping FilterCriteria by @sannya-singal in #10418
- fix: broken pipeline after merging #10418 by @sannya-singal in #10476
- optimise config.yml by @sannya-singal in #10470
- Update CODEOWNERS by @localstack-bot in #10475
- improve ddb TransactWriteItems performance + small refactor by @bentsku in #10464
- add opt. service deps, opt-in services to test selection by @alexrashed in #10458
- Fixed issue where TEST_DISABLE_RETRIES_AND_TIMEOUTS would get always evaluated to True by @Morijarti in #10480
- fix invalidating S3 CORS cache after resetting state or loading by @bentsku in #10469
- Fix skip_teardown and force_synth usage in CDK tests by @dominikschubert in #10445
- SFN: Allow ProgramError without details by @bblommers in #10400
- refactor DDB streaming, event creation and forwarding by @bentsku in #10468
- make twisted default HTTP server in S3 image by @bentsku in #10491
- fix S3 copy in place in versioned bucket by @bentsku in #10495
- fix CircleCI Tinybird reporting on reruns by @alexrashed in #10492
- fix: standardise the TEST_AWS_REGION_NAME usage by @sannya-singal in #10478
- fix Tinybird workflow datasource for multi-account tests by @alexrashed in #10498
- test: aws validated test cases in the rgsa by @macnev2013 in #10496
- added support for resource based policies in secretsmanager by @macnev2013 in #10457
- fix query string parser with non encoded http url in parameters by @bentsku in #10483
- fix capitalization of Authorization header for AWS_PROXY integration by @bentsku in #10500
- fix: add transformer to region attribute in failing s3 for 'eu-west-1' by @sannya-singal in #10508
- fix payload and logging for CI analytics data by @alexrashed in #10503
- Fix Lambda common build caching by @joe4dev in #10510
- switch from black to ruff format by @alexrashed in #10509
- add limited number of regions to random creds by @sannya-singal in #10515
- support for arn based retrivals in secretsmanager by @macnev2013 in #10501
- fix release helper by @alexrashed in #10519
- fix 'test_import_swagger_api' for 'eu-west-1' by @sannya-singal in #10516
- Api gateway integration proxy only accepts post method by @cloutierMat in #10512
- add support for getAtt string parameter in dependency by @pinzon in #10514
- Add Dotnet 8 Lambda runtime by @yongliu-mdsol in #10300
- [SFN] Fix SecondsPath Retrieval and Raise Runtime Errors on Invalid Inputs by @MEPalma in #10521
- Bump moto-ext to 5.0.3.post1 by @viren-nadkarni in #10488
- Update CODEOWNERS by @localstack-bot in #10525
- fix ASF update action to fix unused imports by @alexrashed in #10527
- Adding missing parameter for authorization scopes by @giograno in #10524
- Reduce the range of dependencies to speed up pinning by @silv-io in #10530
- Fix parameter validation for self-managed Kafka event source mapping by @janario in #9007
- fix
test_different_location_constraint
forus-east-2
by @sannya-singal in #10534 - fix apigw tests for
eu-west-1
by @sannya-singal in #10538 - Add version.py file to list of added git files in release helper by @silv-io in #10542
- Refactor: Events: Clean up tests by @maxhoheiser in #10160
- [SFN] Base Support for States.DataLimitExceeded by @MEPalma in #10511
- Fix: Events: Refactor tests fix string formatting errors by @maxhoheiser in #10544
- remove
ap-southeast-1
from random regions by @sannya-singal in #10540 - [SFN] ASL Grammars Enhancements by @MEPalma in #10372
- [SFN] Add Support for MaxItem and MaxItemPath by @MEPalma in #10531
- Fix handling reuse of stack names for describe stack events / delete stack operations by @dfangl in #10551
- [SFN] Fix MaxAttempts with Zero Values by @MEPalma in #10548
- fix
test_function_arns
foreu-central-1
by @sannya-singal in #10549 - Validation lambda function name pattern on invoke by @dominikschubert in #10323
- fix
test_dashboard_lifecycle
foreu-central-1
by @sannya-singal in #10550
New Contributors
- @AnthonyMazzie made their first contribution in #10344
- @cloutierMat made their first contribution in #10365
- @shucoshuco made their first contribution in #10391
- @cowlingj made their first contribution in #10091
- @vimiomori made their first contribution in #10083
- @bblommers made their first contribution in #10400
- @uubk made their first contribution in #10116
- @jalaziz made their first contribution in #10379
- @janario made their first contribution in #9007
Full Changelog: v3.2.0...v3.3.0