github localstack/localstack v4.14.0

3 months ago

Summary

LocalStack for AWS 4.14 introduces a new Resource Groups Tagging API provider with native integrations across EC2, KMS, S3, Lambda, Route 53, SNS, SQS, OpenSearch, and Elastic Beanstalk. This release adds KRaft cluster support for Amazon MSK, switches Hive to use Glue as its default metastore, and integrates EKS nodes with the Instance Metadata Service (IMDS). Additional improvements include CloudFormation DeletionPolicy and UpdateReplacePolicy support, Step Functions testing enhancements, and parity updates across S3, Route 53, ECS, ElastiCache, and RDS.

AWS Features

  • LocalStack now includes a new Resource Groups Tagging API provider as the default for licensed users. This provider offers native tagging integrations with EC2, KMS, S3, Lambda, Route 53, SNS, SQS, OpenSearch, and Elastic Beanstalk, replacing the previous Moto-based fallback implementation. (🌟 base)
  • LocalStack now supports KRaft-based clusters in Amazon Managed Streaming for Apache Kafka (MSK). KRaft is Kafka's built-in consensus protocol that eliminates the need for ZooKeeper, simplifying cluster operations. This release also introduces support for running multiple Kafka brokers per cluster. (🌟 ultimate)
  • LocalStack for AWS 4.14 switches Hive to use Glue as its metastore by default, providing tighter integration between Glue, Athena, and Hive. Key improvements include native s3:// location support, multi-region database support between Glue and Athena, enhanced JDBC crawler support, and improved partitioning support in Glue crawlers. (🌟 ultimate)
  • EKS nodes from managed nodegroups now register with the Instance Metadata Service (IMDS) after creation, enabling pods to introspect their networking configuration. This is required for tools like the AWS Load Balancer Controller that interact directly with IMDS to fetch networking configuration, such as subnets. (🌟 ultimate)

Enhancements

  • Added support for Kubernetes versions 1.34 and 1.35 in EKS. Kubernetes 1.34 is now the default version for EKS clusters. Removed support for Kubernetes version 1.28. (🌟 ultimate)
  • When creating EKS clusters, the node.kubernetes.io/exclude-from-external-load-balancers=true label is now automatically added to server nodes to prevent the AWS Load Balancer Controller from considering them as load balancer targets. (🌟 ultimate)
  • CloudFormation now supports DeletionPolicy and UpdateReplacePolicy attributes for resource management, including support for intrinsic functions within policy values using Fn::If conditions.
  • Fixed an issue where Fn::FindInMap with nested intrinsic functions (like {"Ref": "AWS::Partition"}) would raise a misleading InternalFailure error during stack redeployment. This particularly affected CDK-generated templates using CloudFront distributions with Route 53 alias targets.
  • Added support for the variables parameter in the Step Functions TestState API, allowing pre-populated variables to be passed when testing individual states.
  • Improved Step Functions Local mock response handling to correctly iterate through numbered responses for multiple invocations of the same state.
  • Improved JSONata $merge() function handling with dynamic input references like $states.input.part1.
  • Added support for conditional headers (If-Match and If-None-Match) in the S3 CopyObject API, enabling atomic copy operations based on the destination object's ETag.
  • Added UPDATE support for the AWS::Route53::RecordSet CloudFormation resource provider, including proper handling of SetIdentifier for weighted routing policies.
  • Added validation for supported runtimes when creating Lambda Managed Instances functions, along with improved capacity providers lifecycle management.
  • Added CRUD support for Users and UserGroups in ElastiCache, including CreateUser, CreateUserGroup, and related operations. (🌟 base)
  • Added stopTimeout support for ECS container definitions, improving AWS parity for task termination behaviour. (🌟 base)
  • Implemented MSSQL data persistence in RDS, allowing database state to be preserved between LocalStack restarts when using the SQL Server engine. (🌟 base)
  • The Glue provider now supports the --python-modules-installer-option parameter, allowing users to pass extra arguments to pip install when creating or running Glue jobs. (🌟 ultimate)

Deprecations

  • Removed the --host option from the LocalStack CLI. The CLI now only supports running LocalStack inside a container via localstack start.
  • Any state created with a version prior to 4.14 will not be compatible and will need to be recreated. This applies to Cloud Pods, state snapshots, and PERSISTENCE=1. LocalStack will display an explicit message when attempting to load incompatible state.

What's Changed

Exciting New Features 🎉

  • SNS:v2 return pending confirmation on list subs by @baermat in #13666
  • S3: fix Unicode handling in System and User Metadata by @bentsku in #13663
  • Events: improve typing of models and default values by @bentsku in #13689
  • S3: improve typing, removing int dict keys, clean up backwards getattr by @bentsku in #13687
  • Sns/v2 switch default provider by @baermat in #13699
  • Fix: Update Dev Run to mount plux.ini instead of entry_points.txt for localstack dependencies by @aidehn in #13708
  • APIGW: fix model typing / update custom id logic by @bentsku in #13694
  • Lambda: fix store typing for serialization by @bentsku in #13707
  • OpenSearch: Move Tagging into Provider Methods by @aidehn in #13624
  • Remove CLI code from core repository by @silv-io in #13704
  • DynamoDB: refactor the store for proper type annotations by @giograno in #13256
  • Lambda: refactor tagging by @bentsku in #13770
  • feat: implement conditional headers for S3 CopyObject API by @shubhiscoding in #13554
  • ResourceGroupsTaggingAPI: Migration for Integrated Services by @aidehn in #13821
  • feat(stepfunctions): Add support for variables as TestState parameter by @tiurin in #13827

Other Changes

New Contributors

Full Changelog: v4.13.1...v4.14.0

Don't miss a new localstack release

NewReleases is sending notifications on new releases.