Skip to content
Compare
Choose a tag to compare

What's Changed

  • Remove python 3.6 compatibility mention from README, minor readme updates by @dfangl in #6452
  • fix moto fallback dispatching on 404 errors by @alexrashed in #6449
  • fix content based message deduplication with sqs fifo queues by @thrau in #6460
  • fix integration tests against pro by @alexrashed in #6461
  • remove fix_return_consumed_capacity, fixes #6437 by @brandonstubbs in #6439
  • fix authorizer object for rest api by @calvernaz in #6436
  • update Docker base image (python:3.10.5-slim-buster) digest to 1839c4f by @renovate in #6469
  • Update ASF APIs by @localstack-bot in #6470
  • added support for route53resolver group association by @macnev2013 in #6423
  • fix CLA allowlist (renamve renovate-bot to renovate) by @alexrashed in #6472
  • Fix volume dir path replacement for windows paths, use docker cmd client if not in docker by @dfangl in #6474
  • add ec2 vpc terraform test cases by @macnev2013 in #6478
  • Fix windows volume mount path for CLI localstack start by @dfangl in #6482
  • Remove API_REGIONS cache, replace with in-memory lookup by @whummer in #6487
  • Canonicalize Lambda policy name, initialize service provider in run_lambda(..) by @whummer in #6485
  • fix ASF error serialization for shapes w/ members by @alexrashed in #6246

New Contributors

Full Changelog: v1.0.0...v1.0.1

Compare
Choose a tag to compare

This major release of LocalStack marks the first milestone of LocalStack's mission to become the standard platform for local cloud development. We have spent the last year significantly re-shaping the codebase to make it easier to introduce and extend AWS services, improving parity with AWS and introducing mechanisms to monitor parity, as well as adding new pro features.

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 Features and Major Changes

  • New filesystem hierarchy with simplified configuration
  • Full rollout of the AWS Server Framework (ASF)
  • A framework for testing and reporting parity with AWS
  • All new logging output and error reporting
  • Remove deprecated persistence provider

Pro Features

  • Cloud Pods experience
  • Revamp of multi-account setups (experimental)
  • Introducing Extensions (experimental)
  • IAM enforcement for all services
  • Detailed stack analytics

Further Reading

For more details of how things are changing, feel free to continue reading:

How to Migrate

  • Update your startup configurations to the new LocalStack volume directory. Find out more about the concept in our docs.
    • Starting with docker-compose:
      Update your volumes mounts from

           volumes:
            - "${TMPDIR:-/tmp}/localstack:/tmp/localstack"

      to

           volumes:
            - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
    • Starting with docker directly:
      Update your volume mounts from
      docker run -p 4566:4566 -v /tmp/localstack:/tmp/localstack ...
      to
      docker run -p 4566:4566 -v /path/to/volume:/var/lib/localstack ...
      where /path/to/volume should be something outside your host’s temp folder. We encourage the cache directory of your system, which is what the LocalStack CLI does.

    • Starting with the CLI:
      Just update to the latest version of the CLI with pip install --upgrade localstack. The latest version of the CLI already uses the new LocalStack volume directory.
      *The volume directory can be configured via the LOCALSTACK_VOLUME_DIR, which defaults to:

      • Mac: ~/Library/Caches/localstack/volume
      • Linux: ~/.cache/localstack/volume
      • Windows: %LOCALAPPDATA%/localstack/cache/volume
  • The old filesystem hierarchy (including /tmp/localstack mounts,DATA_DIRand HOST_TMP_PATH) can be enabled using LEGACY_DIRECTORIES=1
  • If you mount a volume into /tmp/localstack instead of /var/lib/localstack, then LocalStack will automatically enable LEGACY_DIRECTORIES=1, and print a deprecation warning.
  • You currently cannot set the configure the new filesystem hierarchy with the CLI version 0.14.x, in order to use the development version of the CLI, please run pip install --upgrade "localstack>=1.0.0.dev"
  • Remove DATA_DIR which has been deprecated and will be ignored. Use PERSISTENCE=1 and find your state files in your LocalStack volume in state/
  • Remove HOST_TMP_PATH, which was previously necessary for LAMBDA_EXECUTOR=docker or docker-reuse. We now detect automatically the host path that is mounted into Lambda containers from your LocalStack volume mount.
  • When using docker-compose, remove the network_mode: bridge configuration unless you are sure that you need it. We now automatically detect the network mode for Lambda networking.
  • We’ve rolled out a completely new framework for handling AWS requests, the AWS Server Framework (ASF). This has replaced the edge proxy, which was previously handling all HTTP requests. If you are experiencing problems, as a workaround you can try to enable the old edge proxy with LEGACY_EDGE_PROXY=1 but this is deprecated and will be removed in the future.
  • Enable the experimental multi-accounts feature by setting MULTI_ACCOUNTS=1 as part of your LocalStack config. New AWS accounts will be allocated based on configuration from the client side. See our docs for details
  • Replay-based persistence as been removed. To use our more mature persistence mechanism, please consider upgrading to LocalStack Pro.

Changelog

  • docs: add v1 release banner by @HarshCasper in #6427
  • add new log output formatting and asf trace logging by @thrau in #6424
  • set analytics api version to v1 by @thrau in #6431
  • collect parity metrics by @steffyP in #6305
  • fix logging for CLI by @thrau in #6432
  • set analytics api version to v1 by @thrau in #6431
  • add new log output formatting and asf trace logging by @thrau in #6424
  • fix parse_response to handle streaming responses by @thrau in #6415
  • add response parser to handler chain by @thrau in #6406
  • add deprecation path for LEGACY_DIRECTORIES=1 by @thrau in #6400
  • update .dockerignore to new filesystem hierarchy by @thrau in #6399
  • Remove deprecated docker-compose defaults by @dfangl in #6397
  • implement localstack python extensions framework by @thrau in #6387
  • implement HTTP proxy framework by @thrau in #6386
  • fix None check in AccountIdEnricher by @thrau in #6385
  • Fix host path replacement for lambda volume mounts by @dfangl in #6378
  • fix apigw LambdaResponse with async invocation to return empty body by @thrau in #6349
  • fix s3 delete_bucket compatibility with ASF gateway by @thrau in #6348
  • fix pickling in multi-account region backend by @thrau in #6346
  • Multi accounts feature flag by @viren-nadkarni in #6331
  • Setting LS default user to root, support user permission boundary by @dfangl in #6324
  • Default access key for legacy gateway by @viren-nadkarni in #6322
  • collect parity metrics by @steffyP in #6305
  • add new localstack filesystem hierarchy by @thrau in #6302
  • fix access key id auth header extraction for different signature versions by @viren-nadkarni in #6292
  • fix ASF integration of to_invocation_context by @thrau in #6284
  • fix s3 VirtualHostRewriter to also restore RAW_URI by @thrau in #6276
  • periodically emit analytcs events containing aggregated HTTP response metrics by @SwatsonCodes in #6269
  • use asf gateway as default by @thrau in #6206
  • make asf apigateway provider the default by @thrau in #6177
  • Use Moto account ID resolver by @viren-nadkarni in #6104
  • Cleanup replay-based persistence by @giograno in #6041
  • fix python 3.7 compat of setup_hypercorn_logger for cli by @thrau in #6433
  • fix aws header list parsing by @thrau in #6435
  • Make SERVICES act as preload-list for EAGER_SERVICE_LOADING by @dfangl in #6438
  • Fixes #6405 Kms import key material ignores requested wrapping algo by @srgg in #6407
  • update readme header to new theme by @thrau in #6446

New Contributors

Full Changelog: v0.14.5...v1.0.0

Compare
Choose a tag to compare

Summary

This release contains a number of improvements and fixes, as well as some new feature highlights:

  • add initial support for nodejs16.x runtime by @pksunkara in #6200
  • support binary content in DynamoDB Streams @giograno in #6371
  • add plugin installation for OpenSearch 1.1+ by @alexrashed in #6395
  • add validation of API Gateway Lambda integration responses by @pinzon in #6170
  • enhance parity for SNS MessageAttributes consumed by AWS Java SDK by @bentsku in #6373

This is the last planned patch release before our upcoming major release 1.0.

What's Changed

New Contributors

Full Changelog: v0.14.4...v0.14.5

Compare
Choose a tag to compare

Summary

This release contains a wealth of parity improvements and fixes. It also includes a number of new features:

  • Swagger and OpenAPI export for API Gateway REST APis #5935
  • Cloudformation EC2::Subnet support #6162
  • Cloudformation AWS::OpenSearchService::Domain support #6199
  • A healthcheck for the Docker container #6297
  • S3 TagObject notifications #6099
  • A new HTTP gateway that we will roll out for 1.0 (can be enabled with LEGACY_EDGE_PROXY=0) #5243

This will potentially be the last release before our next major release.

What's Changed

  • ASF protocol cleanup / small enhancements by @alexrashed in #6095
  • improve SQS receipt handle error parity by @thrau in #6103
  • Validations for Events.CreateConnection by @pinzon in #5964
  • Slight refactoring to allow customizing DynamoDB server startup by @giograno in #6109
  • Bump gson from 2.8.6 to 2.8.9 in /tests/integration/awslambda/functions/java/lambda_echo by @dependabot in #6112
  • fix SQS dead letter queue delivery for fifo queues by @thrau in #6115
  • fix SQS ReceiveMessage blocking behavior when MaxNumberOfMessages is set by @thrau in #6118
  • Typo API Gateway Provider validateRequestPparameters by @nicoandra in #6113
  • Draft: Add object tagging notification support by @threewordphrase in #6099
  • update Docker base image (python:3.10.4-slim-buster) digest to 152f6ea by @renovate in #6120
  • Add default UserName for AWS::IAM::User by @dominikschubert in #6122
  • Use asyncio run_in_executor to prevent is_ssl_socket check from blocking by @dfangl in #6123
  • Add hosts file to container to fix performance issues in windows container mode by @dfangl in #6129
  • fix sqs query-api endpoint strategy routing by @thrau in #6145
  • Fix references to AWS managed policies in SAM templates by @dominikschubert in #6148
  • fix SQS ApproximateFirstReceiveTimestamp type by @thrau in #6147
  • Fix cfn apigw domain tags by @pinzon in #6110
  • Fix event message parameters priority by @pinzon in #5959
  • Feature apigateway rest swagger export by @calvernaz in #5935
  • Add test for catch/retry mechanism in StepFunctions by @dominikschubert in #6144
  • Bump moto-ext to version 3.1.10 by @whummer in #6154
  • Introduce BackendStateLifecycle abstraction by @giograno in #6114
  • add SQS feature flag to raise QueueDeletedRecently errors by @thrau in #6140
  • TransactWriteItem for binary data by @giograno in #6152
  • update Docker base image (python:3.10.4-slim-buster) digest to 7e650ce by @renovate in #6164
  • Update ASF APIs by @localstack-bot in #6165
  • Update redhat image to python 3.10 by @dfangl in #6169
  • add option to select test cases by fixture usage by @dominikschubert in #6175
  • Fix CFN Events create rule without targets by @pinzon in #6061
  • add apigateway restapi dispatcher to edge router by @thrau in #6040
  • minor fix to allow authorization context permeate into lambda event by @calvernaz in #6174
  • Fix SNS format when delivering to a DLQ by @bentsku in #6168
  • Add error handling for localstack container startup in CLI by @dfangl in #6178
  • Add CFn support for remaining EC2::Subnet properties by @whummer in #6162
  • pin opensearch-py to version 1.1.0 by @steffyP in #6184
  • Added explicit check for a bucket when deploying a stack by @giograno in #6171
  • Kinesis - option for persistence path by @giograno in #6179
  • fix apigateway delete_rest_api method by @thrau in #6185
  • Add snapshot transformers by @dominikschubert in #6127
  • add two more labels to 'exempt-issue-labels' for the stale-bot by @steffyP in #6189
  • prepare s3 for ASF gateway by @thrau in #6191
  • fix HypercornServer API and test to allow multiple instances by @thrau in #6190
  • fix IAM exception handling by @thrau in #6192
  • chore: remove chart release workflow by @HarshCasper in #6195
  • switch to dev release versioning by @alexrashed in #6198
  • implement ExclusiveStartShardId for DynamoDB Streams describe_stream by @bentsku in #6186
  • test: invalidates #5395 by @dhilipsiva in #6159
  • implement new HTTP request handling framework by @thrau in #5243
  • fix and clean up sns tests to use httpserver fixture by @thrau in #6211
  • fixed: route53 get-health-check response by @macnev2013 in #6205
  • fix test_redrive_policy_http_subscription to correctly consume subscription notification by @thrau in #6219
  • fix and clean up flaky cfn tests by @thrau in #6213
  • fix concurrency of dynamodbstreams sequence number by @thrau in #6214
  • update Docker base image (python:3.10.4-slim-buster) digest to b59fd1a by @renovate in #6208
  • Update ASF APIs by @localstack-bot in #6220
  • fix domain name validation in opensearch CreateDomain operation by @thrau in #6207
  • Add AWS::OpenSearchService::Domain by @silv-io in #6199
  • fix log subscription: return id as string by @steffyP in #6202
  • Add tests which verify EventBridge rules behavior by @lukqw in #6124
  • fix op router for new HTTP gateway requests with slashes by @alexrashed in #6223
  • add websocket route to ApiInvocationContext by @calvernaz in #6230
  • Fix CLI remove Literal type for 3.6 and 3.7 compatibility by @bentsku in #6231
  • chore: remove banner image by @HarshCasper in #6235
  • remove itest-sqs-provider test from CI pipeline by @thrau in #6236
  • Initialize ws route by @calvernaz in #6241
  • add composite handler for asf handler chain by @thrau in #6240
  • add .env to .gitignore by @lukqw in #6232
  • Exit pytest when encountering duplicate fixture names by default by @dominikschubert in #6244
  • Removed duplicated SNSBackend by @giograno in #6243
  • Add snapshot tests for s3 and cloudformation iam by @steffyP in #6222
  • refactor state serializer api to use werkzeug request by @thrau in #6250
  • add pluggable response handler for asf handler chain by @thrau in #6251
  • chore: add localstack discussion page by @HarshCasper in #6249
  • Allow TCP proxying with client certs without h11 by @dfangl in #6252
  • minor fix to include request parameters while importing openapi by @calvernaz in #6255
  • update Docker base image (python) tag to v3.10.5 by @renovate in #6259
  • Update ASF APIs by @localstack-bot in #6260
  • Test for IAM service linked role naming parity by @lukqw in #6182
  • add dlq-list-sources by @baermat in #5915
  • Add filtering for names provided with name_query for GetApiKeys method by @dfangl in #6261
  • Migrate labels to their new names by @silv-io in #6263
  • refactor API Gateway ASF provier / routing by @alexrashed in #6267
  • Fix HTTP status for InvalidObjectState error code by @luisgabrielroldan in #6257
  • Fix: auto confirm SNS subscription for lambda endpoint by @bentsku in #6270
  • CI: Add a GHA to keep DockerHub description in sync by @HarshCasper in #6265
  • fix ASF gateway forwarding by @alexrashed in #6273
  • Cloud formation removal of unsupported and supported resources by @lukqw in #6167
  • Improve parity of EncodingType and Delimiter in S3 list_objects response by @whummer in #6295
  • CI: add paths and concurrency to pro integration workflow by @HarshCasper in #6283
  • update CODEOWNERS to make bentsku the SNS owner by @thrau in #6299
  • remove node package.json and move node modules into static_libs dir by @thrau in #6300
  • Fix ConfirmSubscription in SNS http endpoint, match AWS behaviour by @bentsku in #6268
  • Add simple hashable dict util class by @whummer in #6309
  • fix detection of timestream requests in service router by @alexrashed in #6311
  • GCM support for SNS by @pinzon in #6256
  • fix crypto unit tests by @alexrashed in #6318
  • add rds docdb and neptune to the list of known API conflicts by @thrau in #6319
  • Add HEALTHCHECK to Dockerfile by @cspray in #6297
  • Make hashable list/dict util classes immutable by @whummer in #6314
  • fix aws service router to match endpointPrefixes on the host by @thrau in #6320
  • Accept string value for maxReceiveCount by @7nohe in #6313
  • fix mock integration invocations by @calvernaz in #6279
  • Bump moto-ext to 3.1.12 by @whummer in #6323
  • Attach additional attributes to S3 bucket objects instead of using global dicts by @whummer in #6325
  • fix multi-registration of shared ASF API GW router by @alexrashed in #6330
  • fix to skip openapi authorizers that are not extensions by @calvernaz in #6277
  • Add handling of KMS ListAliases call with KeyId by @silv-io in #6262
  • Add workaround for union isinstance in PortMappings for python lower 3.10 by @dfangl in #6336
  • add support for apigateway lambda asynchronous invocations by @calvernaz in #6258
  • CFN Stack timestamps attributes by @pinzon in #6194
  • GitHub action build matrix for CLI tests by @dfangl in #6339
  • fix lambda integration output response by @calvernaz in #6289
  • Option for persistence path to stepfunctions by @giograno in #6316
  • fix asf apigateway lambda response conversion by @thrau in #6343
  • fix passing down of use_ssl when starting edge by @thrau in #6345
  • fix S3 BackendState to raise ASF NoSuchBucket exception by @thrau in #6344

New Contributors

Full Changelog: v0.14.3...v0.14.4

Compare
Choose a tag to compare

LocalStack release v0.14.3

Summary

This LocalStack release features several improvements and new features in AWS services, a new CLI command, Python 3.10 support, and 10 new open source contributors!

AWS Services

CLI command to update LocalStack

We have introduced a new CLI command that automatically updates LocalStack and its requirements to the latest version:

 % localstack update --help
Usage: localstack update [OPTIONS] COMMAND [ARGS]...

  Update LocalStack components

Options:
  --help  Show this message and exit.

Commands:
  all             Update all LocalStack components
  docker-images   Update container images LocalStack depends on
  localstack-cli  Update LocalStack CLI tools

Other notable updates

  • LocalStack now runs on Python 3.10!
  • Many services have now been successfully migrated to our new framework that handles AWS service requests, this dramatically improves parity and stability of services
  • Deprecation note: The legacy record&replay based persistence mechanism (currently still available via LEGACY_PERSISTENCE) be entirely removed in the next release (as already previously announced in the 0.13.1 release).

What's Changed

Features

Enhancement

Fixes

  • Fix KMS_PROVIDER=kms-local back to local-kms by @davecardwell in #5793
  • Minor fixes for data types handling in CloudFormation deployer by @whummer in #5794
  • Fix zone-name filter in describe-availability-zones by @viren-nadkarni in #5800
  • Fix S3 download of XML documents with preamble by @whummer in #5805
  • fix dynamodb index query validation by @foxmulder900 in #5799
  • Fix flaky tests: test_dynamodb_stream_records_with_update_item, test_rotate_secret_with_lambda_2 by @steffyP in #5826
  • fix ApiGateway ASF request matching by @alexrashed in #5827
  • Fixed issue with spaces in Windows user names by @us88 in #5834
  • fix ASF operation routing (empty query args, deprecated ops) by @alexrashed in #5840
  • Fix ResourceNotFoundException for BatchGetItem operation by @giograno in #5848
  • fix queries for local secondary index on dynamodb by @steffyP in #5847
  • Fix #5821 - ElasticMQ always downloaded due to incorrect cache path in Dockerfile by @wimax-grapl in #5822
  • Target HttpParameters and Input support and basic auth fix for Events service by @pinzon in #5738
  • fix api detection to apply custom rules and normalize CORS behaviour by @calvernaz in #5839
  • fix extraction of oauth_http_parameters for api destinations by @pinzon in #5861
  • Increment kinesis-mock version to 0.2.4 for validation fix by @afleishaker in #5884
  • add optional .fifo suffix to sqs queue url matcher by @thrau in #5892
  • Fix backdoor API provided on health endpoint by @nao23 in #5907
  • Fix DynamoDB TransactGetItems action by @giograno in #5909
  • Fix ExecuteTransaction action in DynamoDB by @giograno in #5918
  • Minor fix to ensure that /static/ paths are properly served by the proxy by @whummer in #5917
  • Fix BatchExecuteStatement action in DynamoDB by @giograno in #5919
  • fix localstack.http.Request path encoding by @thrau in #5924
  • Fix lambda package type and code response by @dominikschubert in #5930
  • Fix ApiGW: accept yaml format for openapi(swagger) import by @pinzon in #5871
  • fix invalid characters in asf rest-protocol operation router by @alexrashed in #5948
  • [minor] Fix text/html Content-Type for local CloudFormation UI by @whummer in #5950
  • remove Werkzeug pin after bugfix release by @alexrashed in #5954
  • fix get_raw_path to unify wsgi/asgi specs by @thrau in #5956
  • Fix Firehose.PutRecord to extended s3 by @pinzon in #5967
  • fix op router when matching keys with slashes by @thrau in #5972
  • Fix ValidationError for CloudFormation.DescribeStacks by @dominikschubert in #5978
  • fix secretsmanager to use ASF instead of moto exceptions by @thrau in #5976
  • fix HTTP HEAD method operation detection in ASF by @alexrashed in #5991
  • fix test_cloudwatch.py mock patches by @thrau in #5984
  • fix: fix cla bot by @HarshCasper in #5999
  • fixed metric alarm evaluation for data points with value 0 by @steffyP in #5998
  • fix http path encoding in asgi/wsgi adapter by @thrau in #6012
  • fix concurrency issues of cfn and sns tests by @thrau in #6023
  • Provide hotfix for CFn parameter updates and further CFn tests by @dominikschubert in #6024
  • fix CLA assistant allowlist by @alexrashed in #6032
  • Fix bytes size calculation with binary items by @giograno in #6027
  • Fix shutdown error in pytest by waiting for LS to finish correctly by @dfangl in #6039
  • fix ASF docs by sanitizing pandoc results by @alexrashed in #6045
  • fix multiple authorizer creation by @calvernaz in #6049
  • Restructure test fixtures/utilities by @dominikschubert in #6050
  • Fix DynamoDB error injection and re-enable tests by @whummer in #6063
  • Minor fixes in edge forwarder and zip utils for dev/host mode by @whummer in #6065
  • fix request encoding in generic proxy listener chain and forwarding by @alexrashed in #6070
  • Minor fix for CFn deletion of IAM::Role resources by @whummer in #6072
  • fix pycharm unit test debug execution by renaming http package by @alexrashed in #6071
  • fix ARN rewriting for DynamoDB ASF provider by @alexrashed in #6075
  • fix ARN rewriting for incoming requests, fix lambda arn creation by @alexrashed in #6078
  • fix test_get_queue_url_contains_request_host for pro integration by @thrau in #6079
  • ci: fix the stale bot by removing bug from exempted labels by @HarshCasper in #6082
  • Fix CLI usage with python 3.7 by @dfangl in #6087
  • fix cleanup of event source mapping test by @alexrashed in #6094
  • fix message attribute filter for SQS ReceiveMessage by @thrau in #6097

New Contributors

Full Changelog: v0.14.2...v0.14.3

3d8b283
Compare
Choose a tag to compare

LocalStack release 0.14.2

Change log

1. New Features

  • add ability to import keys into KMS
  • enable and refactor rotation logic and version stages in SecretsManager
  • support "Accept" header to switch response format
  • add provider for S3Control service

2. Enhancements

  • migrate services to ASF: EC2, KMS, Route53, STS
  • skip installing -ext dependencies in CI tests
  • lazily load subclasses for instance manager to enable plugin loading at runtime
  • add missing UpdateDomainConfig for OpenSearch and Elasticsearch
  • pin werkzeug version to fix Transfer-Encoding "chunked" on empty responses
  • apply filter pattern for log subscriptions
  • skip "online-only" tests, fix some tests
  • use valid references for EC2 resources to fix CloudFormation tests
  • enhance handling of KMS key pairs for SIGN_VERIFY keys
  • add CloudFormation support for IAM::ServiceLinkedRole
  • reintroduce Lambda log output str casting
  • source API Gateway domain name and prefix from invocation context
  • pin airspeed version and remove patch code
  • add CloudFormation support for AWS::CDK::Metadata
  • remove SERVICES from default docker-compose.yaml
  • round DynamoDB ApproximateCreationDateTime to seconds
  • add GetAtt support for AWS::EC2::VPC DefaultSecurityGroup and DefaultNetworkAcl
  • minor update in patch decorator to allow multiple/composite patches of methods

3. Bug Fixes

  • fix PaginatedList nextToken generation
  • fix MessageGroupId for publish batch to SQS fifo queue
  • fix elliptic curve key specs for KMS keys
  • fix broken transitive imports of quart from jinja
  • fix Terraform creation of EC2 Security Groups with default egress
  • fix eager deserialization for 404 responses returned from Lambda
  • fix CloudFormation Route53 deployment without ResourceRecords
  • fix ACM DomainValidationOptions to support waiters
  • fix Flask app routes for Lambda API
  • fix broken patch for moto S3 is_delete_keys(..)
  • fix CFn name autogeneration for SQS fifo queues
  • fix CFn Route53 deployment
  • fix CFn default name for Kinesis streams
  • fix logs subscription filter
  • fix query request parser for operations without input shape
  • fix nested stack outputs in CloudFormation
  • fix handling encoded $ for default stage in API Gateway path regex
  • fix redirect to index file in S3 website
b2fd863
Compare
Choose a tag to compare

LocalStack release 0.14.1

Change log

1. New Features

  • push Docker images to public ECR registry on CI build
  • add internal endpoint to output diagnostics data
  • add ability to build, tag, and push images using Docker client
  • add API Gateway SNS integration
  • add OpenSearch destination to Firehose
  • add support for CloudWatch set_alarm_state and trigger actions

2. Enhancements

  • implement in-memory request dispatching to moto
  • implement generic HTTP route dispatching
  • migrate several services to ASF (ACM, CloudWatch, CloudWatch Logs, ConfigService, DynamoDB Streams, Redshift, ResourceGroups, SecretsManager, SSM, Support, SWF)
  • migrate from requirements.txt/setup.py to setup.cfg
  • CircleCI pipeline parallelization
  • add GitHub action to automatically update ASF APIs
  • migrate resourcegroupstagging API to ASF
  • split up Docker client, remove obsolete docker client binary from image
  • refactor handling of API Gateway request/response templates
  • introduce CODEOWNERS file for code ownership
  • add timeout to status services cli command
  • add DynamoDB Streams integration for PartiQL query updates
  • add ability to extract cookies from API Gateway invocation context
  • update generated ASF APIs to latest version
  • add ability to specify timeout and max content length for HTTP server
  • improve cli startup performance
  • refactor utils imports in utils and services packages
  • patch moto Lambda backend to access LocalStack Lambdas directly
  • add ability to extract tgz archives via download_and_extract utility
  • allow specifying working directory when running Docker exec
  • implement regex rules for the http Router
  • migrate from localstack-plugin-loader to plux
  • add support for #define function in API Gateway velocity templates
  • add a GHA workflow to track first-time pull request and issue creators
  • rework docker capabilities, remove intermediate containers after building images in docker-sdk client
  • add optimizing and sorting of imports to ASF scaffold
  • add support for response templates in API Gateway MOCK responses
  • add mock ECR CFN resource and integration test for CDK bootstrap template v10
  • add flag to call_moto to exclude the ResponseMetadata
  • upgrade airspeed dependency and remove custom patches
  • add helpers to unpause Docker containers
  • reorganize utility package
  • add deep copy of handler results to avoid unwanted mutations in parser
  • add error check for fifo attribute when creating SQS fifo queues
  • update renovatebot config to ignore Dockerfile.rh
  • add ApiGateway S3 integration using action name
  • add method to allow calling moto with a new request in request dispatcher
  • add resolve_hostname(..) util function, refactor some utils into sub-modules
  • improve performance of localstack status command
  • remove six library from dependencies
  • add failsafe with try/except for creating log streams to guard against potential duplicates
  • add the ability to snapshot running Docker containers
  • make autocreating log groups optional
  • allow service restart in ServiceContainer from STOPPED state
  • add support for DefinitionS3Location in StepFunctions::StateMachine model
  • remove superfluous CloudWatch response processing
  • add PaginatedList for paginating and filtering response lists
  • add default entries in CloudFormation stack template dict to avoid KeyError
  • docs: refactor third party software tools docs and remove announcements in README
  • refactor some tests to pytest (e.g., Lambda, EC2)
  • configure test coverage exclusions
  • make Lambda output truncation configurable

3. Bug Fixes

  • fix ASF parser and serializer issues
  • fix custom error responses from lambda when handler throws an exception
  • fix moto dispatching for trailing slashes and response headers
  • fix OpenSearch data dir issue that would block startup in pro
  • fix encoding problem for AlarmDescription in put-metric-alarm
  • fix making typing_extensions import dependent on python version
  • fix ApiGateway v2 path-base style requests without stages
  • fix several ASF parser, serializer, and scaffold issues
  • fix replacement of AWS::NoValue, add default props for Elasticsearch::Domain resources
  • fix service provider configuration override
  • fix edge route mapping for STS AssumeRole
  • fix API Gateway integration with Kinesis
  • fix linting issues by pinning flake8-black
  • fix python 3.7 compatibility with TypedDict for cli
  • fix ASF xml-rest parser location- and payload-trait handling
  • fix CloudFormation stack class to return latest raw template if change sets are present
  • fix OpenSearch cluster shutdown in tests
  • fix parameter for StateMachine type in CFN model
  • fix uncapped recursion bug in parser
Compare
Choose a tag to compare

LocalStack release 0.14.0

Announcements

  • Breaking changes:
    • This version introduces the external service port range in LocalStack. This port range has been used in LocalStack Pro before, but has now been moved to the community edition. While doing so, the port range has been broadened (it now ranges from 4510 to 4559). Please make sure to adjust your Docker configurations to expose this port range (such that external services started within the container can be reached) or use the latest version of the LocalStack CLI to manage your LocalStack container.
    • When using ElasticSearch with the ES_ENDPOINT_STRATEGY=port (formerly off) and ES_MULTI_CLUSTER=0, a port from the external service port range is used (instead of PORT_ELASTICSEARCH or 4571 by default).
  • Upcoming breaking change: This version deprecates the ES_ENDPOINT_STRATEGY, ES_MULTI_CLUSTER, and ES_CUSTOM_BACKEND. Instead, the OPENSEARCH_* variables should be used. The ES_ENDPOINT_STRATEGY=off is being renamed to port (i.e. please use OPENSEARCH_ENDPOINT_STRATEGY=port from now on).

Change log

1. New Features

  • add initial support for SNS PublishBatch API
  • add support for email-json protocol in SNS subscriptions
  • add support for AWS OpenSearch
  • support multi arch for local-kms provider
  • support invocation of local API URLs via stepfunctions

2. Enhancements

  • bump moto-ext to latest version
  • minor refactoring in SNS get_message_attributes() method
  • add utilities for migrating services to ASF
  • minor refactoring in selecting handler in edge.py for better extensibility
  • add check for supported protocols on SNS subscription
  • adjust routing to enable using anonymous boto3 client to fetch S3 object
  • refactor Lambda executors to allow modification of container settings using hooks
  • minor adjustments in patch decorator for bound methods of class instances
  • hardcode default tmp and data paths
  • Add handling for DynamoDB stream iterator expiration, bump kinesis-mock to 0.2.2
  • remove obsolete moto imports in CloudFormation resource classes
  • remove obsolete patch for CloudWatch metrics filtering
  • cleanup CloudFormation logic and remove old/obsolete code
  • add utility to manage / reserve ports for external services
  • invalidate builder stage in dockerfile on package version changes
  • use base_url instead of url for determining SQS queue URL
  • add cachetools to CLI dependencies
  • set MessageGroupId and MessageDeduplicationId on SQS message from SNS subscription
  • Introduce lazily-created localstack-internal-awssdk utility lambda function
  • capture X-AMAZON-APIGATEWAY-ANY-METHOD for cases where route key is for integrations
  • provide better log info when CloudFormation resources cannot be found
  • clean up old/unused CloudFormation logic
  • refactor SQS queue-url generation
  • extend SNS publish batch support for FIFO topics
  • remove monkey patching and circular dependency
  • refactor sqs queue resolving and url rendering
  • minor refactoring of CFN logging code to dump resources as JSON string
  • clean up aws_stack utils, remove obsolete global cached boto3 resources
  • add missing CloudFormation parameters for Firehose delivery streams
  • migrate firehose to ASF
  • stop setting environment variable if cognito_identity if empty
  • Kinesis refactor server abstraction
  • Allow container client to connect/disconnect containers to/from a network
  • handle SSE for sqs
  • refactor config and rip out global port/url variables
  • add connection parameters and credentials to EventBridge API destinations
  • replace function calls with literal syntax and remove unnecessary comprehensions
  • broaden the external service port range, adjust docker-compose
  • update Docker base image (python:3.8.12-slim-buster) digest to 3544d06
  • add util function for deletion of None-values from dicts
  • combine OpenSearch and Elasticsearch backends
  • update exposed ports and docker-compose

3. Bug Fixes

  • fix CloudFormation deployment of SNS::TopicPolicy
  • fix handling of empty prefix for Firehose S3 uploads to properly trigger event notification
  • fix external host setting for sqs
  • fix acronym handling in camel_to_snake_case
  • fix API Gateway to match the most specific path in the presence of "{proxy+}" placeholders
  • fix asf scaffold to generate TypedDict declarations correctly
  • fix sqs port extraction from headers and other related issues
  • fix ASF SQS provider to allow direct calls to queue URLs
  • fix DynamoDB local/localhost region for NoSQL Workbench
  • fix ASF SQS xml response encoding
  • fix request parser to enable X-Amz-Target strings with multiple dots
  • fix expectations around Kinesis record encoding, always re-encode records for shard subscribers
  • fix CloudFormation deployer to recursively resolve string placeholders
  • fix ASF REST operation lookup with conflicting path params
  • fix DomainValidationOptions property in ACM Certificate CFN deployment
  • fix access to listener in logic for restarting Kinesis
  • fix issue rendering VTL templates for API Gateway by flattening the input
  • fix accessing external SQS port for intra-service communication
  • fix positional args in CloudFormation find_change_set(..) method
  • fix SNS PublishBatch logic for optional Subject atttribute
  • fix Kinesis installation via LPM, add Docker check for StepFunctions installation
  • fix docker client ctx manager and json decode issues on windows
  • fix passing Conditions on stack updates, refactor/simplify CFN function arguments
  • fix EC2 route tables and service backend initializations for recent upstream moto changes
  • add config for host path to fix mounting of libs_dir
  • minor fix in SNS tests to resolve stale PR merge
  • minor fix in printing result for local node.js Lambda executor
  • ASF rest-json parser fixes
  • minor fix in request parsing to match path parameters with slashes
  • replace get_data() with response.content to fix logic in SNS HTTP subscriptions
  • fix gzip handling in SSL proxy
Compare
Choose a tag to compare

LocalStack release 0.13.3

Change Log

1. New Features

  • add initial ASF (AWS Service Framework) SQS provider implementation
  • add automatic Docker network detection for Lambda containers
  • add support for dynamic SSM/SecretsManager references in CloudFormation templates
  • add version info to internal health HTTP endpoint

2. Enhancements

  • add support for gzipped responses in SSL proxy via Accept-Encoding headers
  • lowercase 'accept' headers in API Gateway for parity with AWS
  • add negative test for SNS FIFO topic validation, migrate SNS tests from unittest to pytest
  • add ability to customize default IAM/STS user via TEST_IAM_USER_ID/TEST_IAM_USER_NAME
  • add integration test that passes binary data via APIGateway to Lambda
  • refactor StepFunctions multi-region support to use upstream changes
  • add proper validations for SNS/SQS integration with fifo queues
  • allow provider overrides to be passed to the started LocalStack container
  • ensure SequenceNumber is present in Lambda events from DynamoDB Streams
  • support updating of API Gateway resources via PATCH operations
  • refactor logging code to replace string interpolation with passing arguments to log methods
  • refactor code to remove unnecessary list comprehensions
  • refactor code to remove mutable default arguments
  • pull out subtypes instance manager into separate util class for reusability
  • update and clean up outdated documentation
  • replace dict and list function calls to literal syntax
  • remove uname command in system check for windows compatibility

3. Bug Fixes

  • fix API gateway proxy resources
  • fix passing of request parameters to API Gateway HTTP integrations
  • fix Firehose-ElasticSearch integration, allow S3Backup AllDocuments with ElasticSearchDestination
  • fix multiple service container creation
  • fix extraction of filter values for describing EC2 prefix lists
  • fix single-space env default in docker-compose
  • fix RenovateBot config to only enable patch updates
be86c38
Compare
Choose a tag to compare

LocalStack release 0.13.2

Announcements

  • Security fixes: This release upgrades log4j dependencies to version 2.17.0 to fix the critical security vulnerabilities CVE-2021-44228, CVE-2021-45046

Change Log

1. New Features

  • add initial support for region-based in-place partition rewriting
  • add "--offline" pytest flag, skip "online-only" tests, fix some tests
  • add SKIP_SSL_CERT_DOWNLOAD option to allow skipping download of SSL cert

2. Enhancements

  • bump version of Java utils to 0.2.18 to fix log4j vulnerability CVE-2021-44228, CVE-2021-45046
  • refactor README.md to make it crisp and readable
  • refactor Lambda logic to remove local executor Callable from model entities
  • automatically pull non-cached Docker images on image inspection
  • replace dict calls with comprehensions
  • small fixes to allow running LocalStack with podman
  • reduce log level of edge port configuration hook
  • correctly wait for stay-open port to be available, fix fallback to exec mode
  • add compatibility checks for S3 copy object with metadata
  • add proper error response message to reject empty SNS messages
  • minor refactoring to use negative index -1 to get the last element of sequence
  • minor refactoring of Lambda API for better extensibility

3. Bug Fixes

  • fix updating of HTTP method in message handler chain to avoid None methods
  • fix misc. tests failing for non-default region
  • fix Terraform test issue related to SQS changes in the AWS provider
  • fix association of VPCs in Route53 HostedZone responses
  • fix CloudFormation updates for EC2::Instance with empty SecurityGroups property
  • fix listing of KMS signing keys for asymmetric key pairs