Summary
LocalStack 4.6 is now available! This release introduces AWS CodeArtifact support for package management, Kubernetes execution for Glue jobs, dramatically improved AppSync JavaScript resolver performance, API Gateway HTTP API SQS integrations, and enhancements across S3, CloudFront, CodeBuild, and EventBridge Pipes providers.
AWS Features
- LocalStack now supports AWS CodeArtifact, enabling you to mock creating domains, repositories, external connections, and authorization tokens, with additional support for NPM repositories, enabling you to publish and install packages locally. Refer to our documentation to learn more. (🌟 base)
Enhancements
- LocalStack now includes Kubernetes support for AWS Glue job execution, enabling you to run them as pods in your Kubernetes cluster. To activate the Kubernetes executor, set the
GLUE_JOB_EXECUTOR_PROVIDER
environment variable tov2
, and set theCONTAINER_RUNTIME
environment variable tokubernetes
. (🌟 enterprise) - LocalStack has significantly improved the performance and capabilities of AWS AppSync JavaScript resolvers. The JavaScript resolver executor has been overhauled to replace the previous Docker container-based implementation with a lightweight Node.js runtime package. (🌟 ultimate)
- AppSync provider now includes the following enhancements: (🌟 ultimate)
- AppSync now supports
console.log
statements in resolver code, with the output directed to LocalStack logs for improved debugging capabilities. - Support for
attributeExists
conditions in the RDS statementwhere
clause logic. - Enhanced JavaScript resolver utility functions, including support for
util.error
andutil.unauthorized methods
, with improvedutil.appendError
functionality.
- AppSync now supports
- CodeBuild provider now includes the following enhancements: (🌟 base)
- Buildspec overrides now follow the correct precedence. Buildspecs from
CreateProject
andStartBuild
take priority over those in the source code. Buildspec overrides from CodePipeline actions are supported and passed toStartBuild
. - CRUD support for source credentials is now available:
ImportSourceCredentials
,ListSourceCredentials
, andDeleteSourceCredentials
. - You can use custom Docker images by setting the
CODEBUILD_ENABLE_CUSTOM_IMAGES
environment variable. This allows any build image, not just Amazon Linux 2023 containers. Official AWS CodeBuild Docker images from GitHub are also supported. - Environment variables now support Secrets Manager and SSM parameters as well as plaintext variables. Variable precedence is handled correctly (
StartBuild
>CreateProject
> buildspec), and parameter overrides now update values instead of fully replacing them during builds.
- Buildspec overrides now follow the correct precedence. Buildspecs from
- API Gateway HTTP API provider now includes support for
AWS_PROXY
SQS subtypes (first-class integrations), enabling direct SQS operations through HTTP API endpoints. The supported operations include: (🌟 base) - Support for AWS S3
MetricsConfiguration
APIs, enabling management of CloudWatch request metrics configurations for S3 buckets. The supported operations include: - EventBridge Pipes provider now supports pipe configuration updates through the
UpdatePipe
operation. You can now modify: (🌟 ultimate)- Pipe targets
- Target parameters
- Enrichment configurations
This is in addition to the previously supported source parameters.
- API Gateway provider now supports:
- Support for the
UpdateMethodResponse
API. - CRUD operations for WebSockets route and integration request parameters through enhanced
CreateRoute
andCreateIntegration
validation logic. (🌟 base) DeleteRouteRequestParameter
operation, enabling complete lifecycle management of WebSocket route configurations and proper parameter handling in the invocation layer. (🌟 base)- Improved VTL
$input.path
and$input.json
handling, fixing edge cases for empty request bodies, non-existent JSONPath values, non-JSON content, and string body fallback behavior for better parity with AWS.
- Support for the
- S3 provider now includes the following enhancements:
DeleteObject
now checksIfMatch
headers correctly. It returns errors forIfMatch
on regular buckets, since this is only supported in Directory Buckets, and adds clear logs.- Object Lock compliance is improved. Retention Mode values are validated, and
COMPLIANCE
mode restrictions are enforced when updating retention withPutObjectRetention
. - Improved Checksum handling in
UploadPartCopy
with checksums now calculated and returned correctly during multipart copy in multipart uploads. GetObjectAttributes
now fully implementsObjectParts
. It supports bothCOMPOSITE
andFULL_OBJECT
checksums for multipart uploads and stores and retrieves part metadata correctly.
- CloudFront provider now supports custom distribution IDs through the
_custom_id_
tag, enabling predictable distribution URLs. Refer to our documentation to learn more. (🌟 base) - EFS provider now supports the following new API operations: (🌟 ultimate)
- Support for Airflow version 2.10.3 in the MWAA environment. (🌟 ultimate)
- Timestream provider now supports tagging for databases and tables. (🌟 ultimate)
- Improved RDS statement
where
clause logic to handle nestedand/or
operators. (🌟 base) - KMS provider now supports the
ReEncrypt
operation. - EKS provider now supports the
DescribeClusterVersions
operation. (🌟 ultimate) - DocumentDB provider now supports MongoDB transactions by starting clusters in single-node replica mode to enhance parity with transactional operations on AWS. (🌟 ultimate)
- CloudTrail provider now populates the
imageId
parameter inrequestParameters
forec2.ModifyImageAttribute
API calls. (🌟 ultimate) - Route53 provider now supports alias records targeting dualstack ELB domains (e.g.,
dualstack.<elb-id>.elb.amazonaws.com
). (🌟 base) - RDS provider now allows using
postgres
as a username when creating PostgreSQL databases, in parity with AWS. (🌟 base) - SQS provider now automatically propagates
X-Amzn-Trace-Id
headers from incoming requests to theAWSTraceHeader
message attribute, enabling X-Ray tracing integration for SQS messages. - Cognito provider now properly includes the
nonce
parameter from authorization requests as a claim in generated OIDC tokens. (🌟 base) - Step Functions provider now supports mocking for the
StartSyncExecution
operation to enable consistent testing across both Standard and Express state machines. - ELBv2 provider now supports the
ForwardConfig
configuration block in listener rules, enabling compatibility with AWS Load Balancer Controller for Kubernetes by properly handling target group configurations. (🌟 base)
LocalStack Features
- LocalStack now includes
x-localstack
header in all AWS service responses to help distinguish between LocalStack and AWS origins during development and testing. Set theLOCALSTACK_RESPONSE_HEADER_ENABLED
environment variable tofalse
to disable this. - LocalStack’s state export functionality now supports efficient transfer of large state files up to 1GB with improved connection stability. (🌟 base)
- Support for configurable timeout settings for Kubernetes resource readiness checks. The default 30-second timeout can now be customized through environment variables, such as:
K8S_WAIT_FOR_POD_READY_TIMEOUT
: Sets the wait time for Kubernetes pod startupK8S_WAIT_FOR_DEPLOYMENT_READY_TIMEOUT
: Sets the wait time for Kubernetes deployment rolloutK8S_WAIT_FOR_SERVICE_READY_TIMEOUT
: Sets the wait time for Kubernetes service readiness
What's Changed
Exciting New Features 🎉
- Move publishing of images and coverage from CircleCI to GHA by @silv-io in #12708
- CloudFormation v2 Engine: Parity Improvements for Fn::Sub by @MEPalma in #12705
- CloudFormation v2 Engine: Base Support for Fn::And Fn::Or and Condition Bindings by @MEPalma in #12706
- CFn v2: implement support for CDK bootstrap by @simonrw in #12731
- Remove CircleCI config by @silv-io in #12737
- refactor: metrics instrumentation framework typing and structure by @vittoriopolverino in #12717
- CloudFormation v2 Engine: Base Support for Serverless Global Transforms by @MEPalma in #12742
- Docker registry customisation by @simonrw in #12590
- feat: metrics schema version by @vittoriopolverino in #12732
- Implement Put, Get, Delete, List S3 MetricsConfiguration API by @cristiangiann in #12741
- S3: implement ObjectParts in GetObjectAttributes by @bentsku in #12764
- Step Functions: Mock feature for StartSyncExecution by @carole-lavillonniere in #12712
- CloudFormation v2 Engine: Base Support for Global Macros by @MEPalma in #12761
- add resource events to CFn v2 by @pinzon in #12721
- Add KMS ReEncrypt Operation by @victor-martin-santiago in #12637
- CFNv2: implement create_stack by @simonrw in #12779
- CFNv2: implement update stack by @simonrw in #12781
- feat(handler): Add custom header to all AWS responses from LocalStack by @gregfurman in #12769
- Add In_WSL function to check whether the host runs on WSL by @paolosalvatori in #12799
- CFNv2: implement get_template_summary by @simonrw in #12784
- CloudFormation v2 Engine: Runtime Caching Support by @MEPalma in #12807
Other Changes
- Fix Workflow summaries for ARM workflows by @silv-io in #12707
- fix: update readme for 4.5 release by @quetzalliwrites in #12718
- Update launch instructions in README.md for 4.5.0 by @tiurin in #12719
- Events: fix PutEvents triggering Scheduled rules by @bentsku in #12716
- GH Actions:change test selection parameter by @k-a-il in #12710
- Remove unneeded positional argument from cleanup lambda by @tiurin in #12702
- Fix publishing credentials by @silv-io in #12723
- Re-create venv for dev release publish by @silv-io in #12725
- fix dependencies installation for dev release publish by @bentsku in #12726
- Apigw add tests fot vtl bracket assignment by @cloutierMat in #12727
- CircleCI to GH Actions:updated docs references to GH Actions by @k-a-il in #12666
- Transcribe: Enable MyPy by @bblommers in #12588
- CFn v2: Implement stack deletion by @simonrw in #12576
- APIGW: add IntegrationResponse test and fix UpdateIntegrationResponse by @ArthurAkh in #12743
- add small fixes/improvements to Firehose.CreateDeliveryStream by @pinzon in #12656
- Do not login to DockerHub if there is no pull secret by @silv-io in #12747
- S3: fix Checksum handling in UploadPartCopy by @bentsku in #12753
- migrate from depenadbot reviewers to codeowners by @alexrashed in #12762
- Update test durations automatically based on latest durations from master by @k-a-il in #12748
- SQS: Register query API routes in provider lifecycle hook by @viren-nadkarni in #12685
- Fix failing Ruby tests due to internal RUBYLIB variable changed by AWS by @joe4dev in #12767
- fix issue with CloudWatch after state reset by @pinzon in #12755
- APIGW: fix VTL $input.path and $input.json by @bentsku in #12774
- chore(utils): Fix typo when forwarding envars to container by @gregfurman in #12778
- Bump moto-ext to 5.1.6.post2 by @viren-nadkarni in #12760
- CI: correct test selection propagation for service-specific tests and run them conditionally by @k-a-il in #12749
- Fix workflows for forked repositories by @silv-io in #12786
- S3: add error for DeleteObject preconditions for regular buckets by @bentsku in #12787
- Update lambda runtime init, fix legacy ENV format in dockerfile by @dfangl in #12795
- S3: add validation around Retention Mode & consider COMPLIANCE when updating by @bentsku in #12782
- Fix logging placeholder for apigateway openapi import by @dfangl in #12800
- APIGW: add negative tests for IntegrationResponse and improve error handling in PutIntegrationResponse and GetIntegrationResponse by @ArthurAkh in #12773
- refactored archive installer by @macnev2013 in #12771
- SQS: add automatic propagation of AWSTraceHeader attribute when sending message by @bentsku in #12810
- [Testing] Update test durations by @localstack-bot in #12815
- CI: updated owners of .test_durations file by @k-a-il in #12820
- CFn telemetry: capture actions on resources by @simonrw in #12798
- Update STS session storage model to be more flexible by @dfangl in #12793
- APIGW: implement UpdateMethodResponse and add lifecycle and negative tests for MethodResponse by @ArthurAkh in #12821
- removed create appsync fixtures by @cloutierMat in #12572
- IAM: Fix listing roles with tags by @dfangl in #12825
New Contributors
- @quetzalliwrites made their first contribution in #12718
- @ArthurAkh made their first contribution in #12743
- @cristiangiann made their first contribution in #12741
- @carole-lavillonniere made their first contribution in #12712
- @victor-martin-santiago made their first contribution in #12637
- @paolosalvatori made their first contribution in #12799
Full Changelog: v4.5.0...v4.6.0