Skip to content

Latest commit

 

History

History
121 lines (119 loc) · 103 KB

CHANGELOG.md

File metadata and controls

121 lines (119 loc) · 103 KB

LocalStack Change Log

(Please also refer to https://github.com/localstack/localstack/releases for a more human-readable version of the change log.)

  • v0.14.0:
    • !!Breaking Change!!: ElasticSearch does not use port 4571 anymore, but selects a port from the external service port range (when using endpoint strategy "port"). External service ports have been broadened (4510-4559).
    • Changes: fix CloudFormation deployment of SNS::TopicPolicy;add initial support for SNS PublishBatch API;minor fix in SNS tests to resolve stale PR merge;add test case for SQS DLQ chaining;fix handling of empty prefix for Firehose S3 uploads to properly trigger event notification;fix external host setting for sqs;minor refactoring in SNS get_message_attributes() method;update versions of terraform, aws provider, and API gateway module;add config for host path to fix mounting of libs_dir;add utilities for migrating services to ASF;fix acronym handling in camel_to_snake_case;minor refactoring in selecting handler in edge.py for better extensibility;add check for supported protocols on SNS subscription;add support for email-json protocol in SNS subscriptions;fix API Gateway to match the most specific path in the presence of "{proxy+}" placeholders;fix asf scaffold to generate TypedDict declarations correctly;adjust routing to enable using anonymous boto3 client to fetch S3 object;refactor Lambda executors to allow modification of container settings using hooks;temporarily pin version of moto until upstream changes are fixed;apply fixes in EC2 route tables and service backend initializations for recent upstream moto changes;add support for AWS OpenSearch;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;minor: remove obsolete moto imports in CloudFormation resource classes;Support multi arch for local-kms provider;fix sqs port extraction from headers and other related issues;minor fix in printing result for local node.js Lambda executor;remove obsolete patch for CloudWatch metrics filtering;cleanup CloudFormation logic and remove old/obsolete code;ASF rest-json parser fixes;fix ASF SQS provider to allow direct calls to queue URLs;add utility to manage / reserve ports for external services;fix DynamoDB local/localhost region for NoSQL Workbench;minor fix in request parsing to match path parameters with slashes;invalidate builder stage in dockerfile on package version changes;use base_url instead of url for determining SQS queue URL;fix ASF SQS xml response encoding;add cachetools to CLI dependencies;set MessageGroupId and MessageDeduplicationId on SQS message from SNS subscription;Introduce lazily-created localstack-internal-awssdk utility lambda function;add test for sync:2 nested statemachine invoke;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;fix request parser to enable X-Amz-Target strings with multiple dots;extend SNS publish batch support for FIFO topics ;remove monkey patching and circular dependency;fix expectations around Kinesis record encoding, always re-encode records for shard subscribers;fix CloudFormation deployer to recursively resolve string placeholders;refactor sqs queue resolving and url rendering;fix ASF REST operation lookup with conflicting path params;minor refactoring of CFN logging code to dump resources as JSON string;clean up aws_stack utils, remove obsolete global cached boto3 resources;replace get_data() with response.content to fix logic in SNS HTTP subscriptions;fix DomainValidationOptions property in ACM Certificate CFN deployment;add missing CloudFormation parameters for Firehose delivery streams;Extend cloudformation deploy test fixture;migrate firehose to ASF;stop setting environment variable if cognito_identity if empty;Kinesis refactor server abstraction 5265;Allow container client to connect/disconnect containers to/from a network;fix access to listener in logic for restarting Kinesis;handle SSE for sqs;fix issue rendering VTL templates for API Gateway by flattening the input;fix accessing external SQS port for intra-service communication;refactor config and rip out global port/url variables;bump moto-ext to latest version;minor fix for gzip handling in SSL proxy;fix positional args in CloudFormation find_change_set(..) method;add connection parameters and credentials to EventBridge API destinations;minor: replace function calls with literal syntax and remove unnecessary comprehensions;fix SNS PublishBatch logic for optional Subject atttribute;Enable invocation of local API URLs via stepfunctions;fix Kinesis installation via LPM, add Docker check for StepFunctions installation;Fix docker client ctx manager and json decode issues on windows;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;Fixing integration tests against pro;fix passing Conditions on stack updates, refactor/simplify CFN function arguments;update exposed ports and docker-compose
  • v0.13.3: Add initial ASF (AWS Service Framework) SQS provider implementation; add support for gzipped responses in SSL proxy via Accept-Encoding headers; fix API gateway proxy resources; add automatic docker network detection for lambda containers; fix passing of request parameters to API Gateway HTTP integrations; 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 support for dynamic SSM/SecretsManager references in CloudFormation templates; 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; fix Firehose-ElasticSearch integration, allow S3Backup AllDocuments with ElasticSearchDestination; 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; fix multiple service container creation; 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; fix extraction of filter values for describing EC2 prefix lists; 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; fix single-space env default in docker-compose; update and clean up outdated documentation; replace dict and list function calls to literal syntax; remove uname command in system check for windows compatibility; add version info to internal health HTTP endpoint; fix RenovateBot config to only enable patch updates
  • v0.13.2: Add initial support for region-based in-place partition rewriting; add "--offline" pytest flag, skip "online-only" tests, fix some tests; bump version of java utils to 0.2.18 to fix log4j vulnerability CVE-2021-44228; 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; fix misc. tests failing for non-default region; replace dict calls with comprehensions; small fixes to allow running localstack with podman; fix Terraform test issue related to SQS changes in the AWS provider; minor refactoring to use negative index -1 to get the last element of sequence; minor refactoring of Lambda API for better extensibility; reduce log level of edge port configuration hook; 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;add proper error response message to reject empty SNS messages; correctly wait for stay-open port to be available, fix fallback to exec mode; compatibility checks for S3 copy object with metadata; fix updating of HTTP method in message handler chain to avoid None methods; add SKIP_SSL_CERT_DOWNLOAD option to allow skipping download of SSL cert
  • v0.13.1:
    • !Upcoming breaking change!: This version introduces the LEGACY_PERSISTENCE config, which determines whether the legacy persistence mechanism (based on API calls record&replay) should be used. Currently defaults to LEGACY_PERSISTENCE=1, but the logic will be disabled by default and may get removed entirely in the future.
    • Changes: Support stay-open mode for docker-reuse Lambda executor; add functionality for custom Elasticsearch backends; add LocalStack Package Manager (lpm) CLI; add plugin-based hooks for bootstrapping and infra startup; add cli command to show current config; add Directories config object and introduce directory structure; publish logs per metric and remove faulty metric filter behavior in CloudWatch API; refactor handler chain and add MessageModifyingProxyListener to enable modification of requests/responses; add Docker tags for minor and patch versions; exclude Elasticsearch >=7.14.0 client versions for OpenSearch compatibility; fix returning formatted date string for requestTime in Lambda API GW events; add SIGINT signal handler for CLI to enable clean shutdown across different operating systems; add initial integration of Route53Resolver API; clean up obsolete patches for event_rules in EventBridge API; slightly refactor StepFunctions install logic for better extensibility; add flag to check port availability in start_proxy_server(..) to fix test flakes; minor refactoring of EventBridge utils, fix location of EVENTS_TMP_DIR; use unittest.mock.patch.object for overriding config params; fix edge routing for API Gateway invocation URLs when Signature= query param is passed; increase timeout when waiting for edge port to become available; fix SNS pagination to support large CloudFormation stacks with very large number of topics; allow redirection of var libs to static libs inside the container / move dependencies to correct folders; update startup hook that initializes and restores persistence; download test-jar for Lambda integration tests with make init-testlibs; filter warnings about "tail unrecognized file system" from Lambda logs; add basic Architectures support to Lambda API; get hostname by using gethostname() instead of reading /etc/hostname; fix lpm to return non-zero exit code if package installation fails; fix using custom Docker images for nodejs14.x/python3.9 only if no custom registry is provided; add patch utility; add .localstack config directory and config profiles; add initial support for KMS Sign API; skip time expiration validation for presigned S3 URL when S3_SKIP_SIGNATURE_VALIDATION=True; minor: improve parameter checks and error responses for SES SendEmail; upgrade pyopenssl version to fix OpenSSL issue, refactor SSL cert generation; minor fix checking for dict/CaseInsensitiveDict in merge_recursive(..) util function; remove dead event logging code; move machine id cache to new cache directory; add missing attributes for Lambda::Function CloudFormation resources; add "is running" check before restarting Kinesis and StepFunctions services; fix MD5 check on S3 requests with "chunk-signature="; add module init file for localstack.runtime; fix "localhost" region in requests headers for compatibility with NoSQL Workbench; add support for SNS delivery logs stored to CloudWatch Logs; explicitly handle S3 OPTIONS request with "Access-Control-Request-Method" header; fix Docker flags parsing in configure_container; add psutil as CLI requirement; strip extra xmlns attributes in PutBucketNotification responses for AWS Rust SDK compatibility; update Makefile to use new cli detach flag for smoke test; patch CFN stack outputs for API Gateway; fix tests and remove obsolete patch for CloudWatch metrics filtering; fix setting HMAC/non-HMAC credentials when injecting internal Authorization headers in requests; add multi-region support for StepFunctions state machines; fix OldImage/NewImage in DynamoDB->Kinesis event payloads on updating/deletion of items; make can_use_sudo use non-interactive mode; migrate several tests from unittest->pytest; fix creation of multi route table associations in CFN EC2::SubnetRouteTableAssociation resources; re-arrange Dockerfile commands to decrease image size and increase number of cache hits; fix deleting objects from non-existing S3 buckets; pin Docker base images, enable DependaBot/RenovateBot to update once a week; fix text/xml content-type header in STS responses; fix install_go_lambda_runtime for multi-arch build; apply boolean lowercase conversion in IAM responses for all clients (not only Node.js SDK); enable Docker buildkit cache inlining, use remote Docker layer cache; fix forwarding of unprintable chars to SQS DLQ; patch LogStream.filter_log_events to use get_pattern_matcher
  • v0.13.0:
    • !!Breaking Change!!: Changed Docker image from Alpine distribution to Debian Buster; lazy-loading of services is now the default behavior, and services are by default in a new state "available"
    • Changes: skip flaky test_sqs_batch_lambda_forward test; upgrade localstack-ext to 0.13.0; use serving.Server abstraction for ElasticMQ server to resolve startup issues; multi-platform support in localstack codebase; finalize multi-platform build; initial version of multi-platform-build; update authors and temporarily pin version in preparation for 0.13.0 release; revert moto to version 2.2.4 to fix builds temporarily; invalidate pro test cache for changes in both; bump moto version to 2.2.5; add Werkzeug>=2.0 as requirement; use werkzeug Request object in asf; use werkzeug Response object in asf; minor: correct typos in README; add support for {"exists": false} in SNS message filtering; minor fix to deal with missing Tags attribute in EC2::RouteTable; fix filtering by tags when fetching state of EC2::RouteTable CloudFormation resources; extend logic and add more tests for escapeJavaScript(..) velocity template function; remove custom parameter by label filtering, leverag logic from upstream; upgrade moto-ext dependency to latest version; fix URL encoding to properly handle '(none)' base paths in API Gateway; fix arn parsing in aws_stack; refactor logic for pulling specific Docker image tags, add more tests; implement generic approach for routing internal REST resources; minor: fix API GW test assertion after recent moto upstream changes (part 2); minor: fix API GW test assertion after recent moto upstream changes; minor: adjust API GW logic and tests for latest upstream moto changes; convert boolean strings to lowercase in IAM responses for JS SDK compatibility; add LEGACY_DOCKER_CLIENT and EAGER_SERVICE_LOADING to CONFIG_ENV_VARS; minor: add property to API GW resource context class to extract identity information; minor fixes in Lambda and API Gateway logging / error handling; add support for CFN resource AWS::Logs::LogStream; make lazy service loading the default behavior; fix extracting attributes from Firehose records; Format JSON stack template for better readability in UI; implement one cluster per domain-support for elasticsearch; minor: remove print(..) statement; support ranges of host ports to be mapped to a container port; add missing attributes in Firehose records sent to destinations; add delete support for AWS::SSM::Parameter CloudFormation resources; add simple UI for deploying CloudFormation stacks from public template URLs; add initial support for Firehose processors to transform records written to targets; add ability to short circuit wait/retries; implement custom endpoint routing for elasticsearch clusters
  • v0.12.20: Major: implement lazy-loading of services; introduce ApiInvocationContext class to encapsulate API Gateway request context information; add AWS Service Framework parsers, serializers, and tests; add AWS Service Framework API and scaffolding CLI; add initial lifecycle hook abstraction for services; add object-oriented moto server abstraction; add OUTBOUND_HTTP_PROXY option for proxies when downloading external resources; update moto patch to fix CDATA wrapper for SQS message attribute values; add support for more Elasticsearch versions; add option to set permissions for save_file(..), save local config file with 0o600 permissions; upgrade Terraform version to; refactor API GW logic for easier extraction of resource/method details from invocation context; upgrade version of Terraform in base image to fix recent CI build issues; fix docker_utils import in localstack status cli command; fix AWS::SecretsManager::Secret CloudFormation ARN handling and tests; fix restarting of DynamoDB process; fix local execution of Java Lambdas if handler method is implementing RequestHandler interface; fix issues in AWS service framework dispatching; add test-invoke-method to test API Gateway endpoints; add requestId attribute to Lambda event from API Gateway integration; minor: use existing util function to extract region from ARN; add more SQS tests to prepare for new SQS implementation; refactor dynamodb to use serving.Server; update Elasticsearch default version in es_api.py; support version qualifiers for managing Lambda policy statements; fix error response when attempting to delete non-existing Lambda; correctly format Lambda function inline code on CloudFormation update; refactor serving.Server to fix ElasticsearchCluster; add headers from S3 object and correct codes to S3 website responses; fix scaffolding for remaining AWS services; add defaults for SSM parameter name in CloudFormation model; extend create_zip_file(..) to support 'append' mode and specifying root directory; fix elasticsearch plugin download when building docker base image; update default/cached elasticsearch version to 7.10; extract correct region from target ARN for S3 notifications; fix check for None values in response multi_value_headers ;update troubleshooting guide to not set DOCKER_HOST when using Lambda remote mode in CI; add ability to skip content gzipping for individual services responses; make boto client creation in aws_stack.connect_to_service thread safe; fix overwrite behavior for PUT requests to the health endpoint; minor: add generate_default_name_without_stack utility method; add temporary support for python3.9 runtimes via mlupin/docker-lambda images; add SSM->EventBridge integration to send notifications about parameter changes; add concurrency control for multiserver startup; add multi-region support for EventSourceListenerSQS; add setup.cfg and update build configuration; pin version of "pip" to fix setup step in CI; add support for "::" to specify a custom Java Lambda handler method in local executor mode; fix health endpoint to support feature states; refactor extract_region_from_headers to make it more reusable; add generic fallback health check for local APIs; fix updates for AWS::IAM::Role in CloudFormation; adjust exposed ports in docker-compose.yml; add logic and tests to gracefully handle zipping of empty directories; fix state checking for active service provider; use python time for do_run cache time comparison; add support for routing events to log groups, fix event pattern matching/mapping for prefix filter; fix statement/policy handling for Events::EventBusPolicy CFN resource; prefix Lambda container names with MAIN_CONTAINER_NAME to support multiple instances in parallel; allow partial SSE specification and auto-create managed KMS keys for DynamoDB tables
  • v0.12.19: Move attribute defaults from template_deployer to service models; cache single instance of request context to enable mutability; refactor Lambda API delete_function logic for better extensibility; pass ENABLE_CONFIG_UPDATES environment variable to Docker container from CLI; support case-sensitive response headers, add ETag to CORS exposed headers for S3 JS SDK compatibility; add pagination to get_lambda_log_events(..) util function to fix Lambda tests; fix potential race condition in Docker container start/wait logic; fix CFN SecretsManager::Secret to properly return secret ARN as Ref; log emails sent via SES send_raw_email into local log file; add ability to pass invocation handler to test HTTP server for API GW integration tests; add missing event attributes and increase timeout in Java Lambda tests; minor fix to avoid running multiple edge proxies on the same port; rename docker->docker_utils to avoid import/aliasing issues; fix issue with single quotes in payload for Node.js Lambda in local execution mode; minor refactoring of inter-service message forwarding for better extensibility; add initial support for KMS asymmetric keys; add support for and/or/condition CFN intrinsic functions, fix resource type lookup; add simple util classes ObjectIdHashComparator and ArbitraryAccessObj; add support for states:::events:putEvents to publish events from StepFunction; add helper function to mock a request context with a particular region; refactor and remove fix_resource_props_for_sdk_deployment(..) in CFN deployer; move delete patches in template deployer to CFN service models; refactor error handling and add MOCK_UNIMPLEMENTED config to gracefully handle unimplemented APIs; add ability to pass --workdir to launched containers in Docker client; allow Lambda plugins to return invocation results directly, create plugin to handle LAMBDA_FORWARD_URL; add wildcard support for EXTRA_CORS_ALLOWED_ORIGINS configuration; fix deploying Lambdas with colliding names due to common prefixes; increase Elasticsearch cluster startup timeout; skip forwarding Lambda invocation result if on_successful_invocation is None; fix deployment of DynamoDB table with SSE disabled in Terraform definition; add support for s3:ObjectCreated:Copy event in the presence of X-Amz-Copy-Source headers; add missing edge routing logic for AWS SDK v2; add initial support for grant operations in KMS; add Docker client methods to inspect networks; wait until port is closed on DynamoDB shutdown/restart; pass CORS configuration options and Thundra Node.js/Python agent config from CLI to the container; fix selection of sub-elements in SQS listener XML responses; fix Lambda SNS event source attribute as aws:sns instead of localstack:sns; add util function to restart StepFunctions service process; minor: check for empty files in download_and_extract(..) util function; implement PluginDisabled exception to handle disabled plugins; refactor DDBStreams/ES/Firehose APIs to use RegionBackend classes
  • v0.12.18: Add generic LocalStack plugin framework; implement CLI using click, rich, and stevedore; add Node.js/Python/java8.al2 runtime support for Thundra plugin; add support for LS_LOG=trace-internal log level; fix logic and add test for edge invocations from AWS Go SDK v2; remove references to PORT_WEB_UI in docs; add attributes to SQS messages from Lambda event source mapping; add extensible class abstraction for Lambda event source listeners; add support for local execution of Go Lambda functions; fix CFN list_stack_resources() for stacks with deleted resources; make some integration tests more lenient to environment changes; add check if DNS_ADDRESS is zero before starting the dns server; consider function alias when resolving Lambda function or layer ARN; refactor Lambda executor methods to use InvocationContext as input param; move pre- and post-create CFN actions from template_deployer to resource models; extend util function for creating simple SSL proxy servers; add plugin_spec to signatures of PluginLifecycleListener; move api imports in infra.py to respective start methods; fix ApiKeyRequired in API Gateway CloudFormation resources; add missing SSEDescription and TableId entries in DynamoDB DescribeTable calls; fix code updates of Lambda functions for Docker executor; add ability to specify --network via DOCKER_FLAGS config; add util function to manually configure region for current request context; enable sync/async SFN invocations in API Gateway integration; minor fix in regex to parse Docker volume flags; add test for deletion of SQS messages with changed visibility; add support for generated secrets in CFN SecretsManager::Secret; fix EC2/Logs tests after upstream changes; add initial version of Config Service API; remove obsolete patches for Logs metric_filters; parse volume mount flag with regex to allow windows paths and additional arguments; support <apiId>.execute-api.* hostnames for API Gateway invocation URLs; distinguish polling and reactive mode in EventSourceListener; introduce Lambda executor plugin mechanism to hook in custom extensions at runtime; fix raw message delivery attribute for SNS/SQS subscriptions; add CloudFormation support for AWS::Events::EventBusPolicy; create SQS queue policy for AWS::SQS::QueuePolicy CFN resource; minor: add util function to extract access_key_id from auth header, add type hints to utils; correctly document and use TMPDIR and HOST_TMP_FOLDER in docker-compose; fix getting IP addresses of Docker containers with non-default networks; add support for DefinitionSubstitutions in CFN StateMachine resources; add support for ApiGateway::DomainName and ::BasePathMapping CFN resources; add get_physical_resource_id() for ApiGateway::Deployment; add ability to specify SelfManagedEventSource for CFN Lambda::EventSourceMapping; update kinesis-mock to 0.2.0, adding built-in multi-region support; add startup logic to install prebuilt SSL cert if available; update setup.py with additional information; allow space in passed JSON event to custom runtime; run Golang local test only if executed in Alpine; run LocalStack tests against LocalStack Pro in Github Action; rework some integration tests to make them more robust; restructure Python requirements, Dockerfile and Makefile; add LAMBDA_CODE_EXTRACT_TIME to configure max Lambda code extract wait time; fix template deployer and tests to retrieve updated PhysicalResourceId for EC2::Instance; add default name for IAM::ManagedPolicy CFN resource; aggregate valid regions accross all available partitions, to support regions like us-gov-*; fix AWS::ApiGateway::Account regression; disable cli banner when running infra in docker; move code in RESOURCE_TO_FUNCTION into service models, split into separate files; add exception handling to EventBridge notifications if targets are unaccessible; inject AWS_ENDPOINT_URL into Lambda container environment; add plug points for code/config initializations in LambdaExecutorPlugin; refactor testutil.py to deploy large Lambda zip files via S3; add separate section with service provider configurations to README; disable shell mode in run(..) util if cmd is passed as a list; pass Cognito Identity info through HTTP headers, return InvocationResult with content instead of wrapping as Flask response for LAMBDA_FORWARD_URL; add util functions get_edge_port_http() and is_provided_runtime(..); add localstack infra cli command for backwards compatibility; fix adding tags to SQS queues when value is an empty string; expose private Docker client methods as static methods in Docker Util class; fix argument error in exception handling in lambda_api.py; add test assertion to verify value of maxReceiveCount in SQS RedrivePolicy; extend logic to apply request/response templates in API GW messages; add support for synchronous invocations of StepFunctions via API GW; support --add-host argument in LAMBDA_DOCKER_FLAGS; add simple integration tests for Support API; add utility function to parse properties/INI config files; add restart method for Kinesis and DynamoDB processes; add util function to inject specific region into AWS Authorization header; inject missing Lambda environment variables in local Lambda executor; add resource id to auto-generated Lambda name in CFN stacks; fix missing request parameters in CFN ApiGateway integration; fix responding to S3 website requests with proper object content-type; add warning message for LAMBDA_EXECUTOR=docker* if Docker is not accessible; consolidate .coveragerc and .flake8 config int pyproject.toml; restructure and clean up README.md
  • v0.12.17: Security fixes: replace Docker CLI commands with Docker Python SDK client; add ability to specify custom IDs for API GW REST APIs via tags; add support for multi-region request handling; add CloudFormation support for Events::Connection; fix logic and tests for decimals formatting; fix removing X-amz-content-sha256 header after stripping off chunk signatures; update README and coverage docs with latest available services; canonicalize boolean strings in SNS FIFO topic creation via CloudFormation; canonicalize HTTP header names in API GW Lambda events to lower-case; add basic interface for StateSerializer to be used in persistence mechanism; add support for Route53 GetHealthCheck; minor refactoring of imports to fix CLI dependency issues; deploy extended attributes for IAM::User CloudFormation resources; fix/revert lookup of OS user inside Docker container; add EDGE_FORWARD_URL option to forward all edge requests; add ability to run privileged ports 53/443 in local dev mode; minor fix for handling symlink targets in cp_r(..); return S3 bucket hostname for "DomainName" CF attribute; restructure Thundra plugin code and fetch latest Java agent version from metatata xml in repository; add support for IAM::User CloudFormation resources; add missing CloudFormation properties for SNS::Topic; update download URL for patched DynamoDB in base Docker image; add fallback for boolean type conversion in CloudFormation deployments; update analytics event logging system; add Thundra config variables to config.CONFIG_ENV_VARS to pass them to Docker instance; refactor logic across the codebase to make use of the Docker client utils; fix patches in Logs API to accommodate recent upstream changes; extend merge_recursive(..) util function; fix KMS listener initialization; introduce KMS_PROVIDER env variable and switch to moto as default KMS provider; minor fixes to enable deployment of arc.codes sample app; add cleanup of docker-reuse Lambda containers if code/configuration is updated; minor fix: consider Flask&Requests responses in aws_responses utils; fix extracting event bus name as Ref attribute from CF Events::EventBus resources; fix Kinesis CBOR response encoding for Java SDK compatibility, extend tests
  • v0.12.16: Support resolving SSM parameter values in CloudFormation templates; add integration for Thundra tracing via THUNDRA_APIKEY; add support for DeleteAlias and TracingConfig in Lambda API; support sequential Lambda execution for Kinesis streams, using ParallelizationFactor; add support for local execution of Node.js lambdas; update README with instructions to build the Docker image; fix regex to extract API ID in hostname from API GW endpoint URL; add integration test for EC2 route table association; adjust updated download URL for patched DynamoDBLocal.zip; update kinesis-mock version to fix missing Logger classes; store SES templated email messages to DATA_DIR or tmp folder for easier debugging; refactor and extend AWS response parsing utils; remove Web dashboard process from supervisord.conf; fix logic in inject_test_credentials_into_env(..) to set custom env parameters for Lambda functions; fix DynamoDB to Kinesis stream event format - add "tableName", remove "StreamViewType"; add possibility for services to subscribe to runtime config changes; extend test utils to pass in an auth_creator_func(..) for creating API GW authorizers; minor: remove deprecated web UI documentation; add option to disable boto3 retries/timeouts, add TEST_TARGET=AWS_CLOUD option to run tests against real AWS; remove EventBus proxy listener patches for Tags operations handled upstream; integrate and use the util function to remove Docker env files; print version string if Terraform version check fails in integration tests; fix Docker detection on hosts with cgroup v2 (unified hierachy); replace unparse with custom XML serializer for AWS responses; support CloudFormation string placeholders with triples like "${resource.attr.subattr}"; improve kinesis startup routine and add KINESIS_MOCK_FORCE_JAVA config option; replace botostubs with boto3-stubs in test fixtures; fix timestamp format of Lambda event source mappings for TF compatibility; add retry logic for downloading Elasticsearch plugins to fix temporary network issues; extend ACM ARN integration test when importing certificates; improve infra graph code, extend tests, add new fixtures; add tests for Lambda invocation destinations; add unit tests for common and config; add JSON safe parsing when processing API GW event in local Javascript Lambda; patch moto to include region header for GET and HEAD requests; update CI workflow to aggregate coverage report; use JAVA_TOOL_OPTIONS to apply LAMBDA_JAVA_OPTS in Java Lambdas; cleanup and refactor CI configurations; add default account_id for API GW Lambda invocation events; minor: fix file path in "config validate" CLI command; fix returning error response when requesting ACL for non-existing S3 bucket; add ability to define UDP Docker ports in PortMappings class; fix edge routing to match rules if request host contains a dot "."; strip off warning messages when extracting Docker container ID from stdout; add exception response when calling DeletePolicy on non-existent IAM policy; refactor Lambda executor to use unified container API and break apart container/Lambda logic; pin version of "requests" library to fix import errors in Lambda tests; fix EXTRA_CORS_ALLOWED_ORIGINS environment variable to match docs; add feature that saves LocalStack version info into data dir; add pre-commit hook that runs linting and formatting; add support for CloudFormation Fn::GetAtt WebsiteURL for S3 buckets; refactor JSONPatch implementation for API GW to handle edge cases more reliably; add make targets for linting and formatting only modified files; add proper headers when triggering API destination target, fix ARN structure for EventBridge resources; fix extraction of EventBridge API destination name using new ARN format; fix S3 host-based routing detection; add CORS headers required for AWS SDK v3; fix accessing missing "body" from Lambda response in API GW; fix JSON Patch for API GW method settings; fix some data types for API GW patch operations; fix "application/xml" content-type header for S3 responses; refactor Firehose and properly return "ExtendedS3DestinationDescription" with extended attributes; add support for API Gateway documentation parts (tf-compat); fix running multiple API Gateway JSON Patch operations in sequence (tf-compat)
  • v0.12.15: Security fixes: bind edge service to 127.0.0.1 by default (instead of 0.0.0.0); remove dead/unused CloudFormation code; refactor common.py and add tests; restructure Elasticsearch process management; fix processing of empty values in EventBridge event filters; fix JSON Patch operations for API Gateway usage plans; make for-loop in Makefile /bin/sh compatible; add flake8 rule F401 (unused imports); run pre-release smoke tests for Pro features in CI builds; remove quiet parameter from service starting; update code style badge in README.md; format the codebase with black and isort; add additional allowed CORS origins to fix Cognito issues; minor formatting in bug-report issue template; add CF support for CertificateManager::Certificate; refactor tests to fix/invert order of arguments in test assertions; add support for Kinesis CBOR error messages; refactor test_integration.py to use randomly generated resource names; add unit test for moto parsing of complex params from querystring; fix detection of resource status to allow re-deployment of CF stack after deletion; update bug-report issue template to assign correct label; fix minor formatting issues in http/proxy server; update .dockerignore to exclude files generated in CI build; fix installation of debugpy via pip module instead of calling pip CLI; add workaround for kinesis-mock persistence startup failure; reduce log verbosity for CORS/origin checks
  • v0.12.14: Security fixes: fix CORS setup to prevent CSRF, add DISABLE_*_CORS_* configs; add KINESIS_INITIALIZE_STREAMS configuration to initialize Kinesis streams on startup; migrate from nose to pytests; add support for EventBridge API destinations; minor refactoring - add dynamodb_table_exists() to common utils; update badges in README; refactor test_error_injection.py into a unittest.TestCase class; minor: fix KeyError for missing EventSourceArn in Lambda API lookup; refactor tests and invert/fix order of assertion arguments; update coveralls config for new test setup with pytests; improve version check in check_terraform_version; pin serverless version in TestServerless to 2.48.0; add coverage install to Dockerfile.base to enable coverage C extensions; fix prefix filtering of events in EventBridge API in case of exact match; fix deprecation warnings surfaced when introducing pytest; minor: make "enabled" flag to add_job(..) optional; add support for V4 S3 presigned URLs with custom headers; add support for isBase64Encoded flag with Lambda integrations in API Gateway; fix extract build report step in docker-build CI phase; fix passing environment variables to container creation for LAMBDA_EXECUTOR=docker-reuse; add CloudFormation support for CloudWatch::Alarm resources; minor fix in file regex for plugin lookup to accommodate Windows path separators; fix request params for CF deployment of ApiGateway::Stage; parallelize builds and improve CircleCI workflow; minor fix to avoid exception on missing CloudFormation exports; add support for API GW MOCK integration and response parameters; fix linter exclusions in install.py; minor fixes in S3 API; fall back to using JAR for kinesis-mock installation for ARM systems (e.g., Macbook M1); add config option TF_COMPAT_MODE to enable TF compatibility mode (for TF integration tests); minor: add parse_json_or_yaml() util function; add threading event to indicate infrastructure has started; fix time duration unit for profiler log_duration output; remove superfluous coveralls config, now managed via CI env
  • v0.12.13: Introduce kinesis-mock as default provider for Kinesis (replacing kinesalite); add support for API Gateway client certificates; fix minor formatting issue in profiler log; fix S3 bucket notification FilterRule name validation; minor refactoring around Kinesis handler and x-amzn-errortype response header; fix deprecation warnings in unit tests; fix timezone issues in timestamp calculation and datetime comparisons; add support for API Gateway - S3 integration for GET requests; use the new MOTO_S3_DEFAULT_KEY_BUFFER_SIZE variable for S3 in-memory buffer sizes; minor: update Helm repo URL in README from HTTP to HTTPS; minor fix in extraction of Lambda results from log output lines; add CF support for ResourceGroups::Group; refactor shutdown procedure; ignore trailing slashes for some routes in Lambda API; fix response for Lambda configuration update API; fix passing payload via stdin for large Lambda events using docker-reuse; fix duplicate Content-Type header in Lambda invocation responses; add BUCKET_MARKER_LOCAL option to customize S3 bucket name (__local__) for local Lambda code mounting; add support for API Gateway VPC Links; fix API GW JSONPatch operations and error responses; add support for x-id query param for S3 delete object requests; add tagging support for IAM policies and instance profiles; add support for Kinesis EnableEnhancedMonitoring; minor fix for Kinesis max stream retention period; add support for EC2 create_vpc_endpoint_service_configuration; fix start_edge to gracefully fail when stdin for sudo is not available; minor fix when extracting URI for API GW integrations; minor CF fix to extract PhysicalResourceId via get_physical_resource_id(); make parsing of IAM::Role properties more resilient; fix continuation sequence number in event returned by SubscribeToShard Kinesis API; use --env-file to pass env vars to Lambda containers to prevent cmd line arguments from becoming too long; fix symlink to aws CLI executable in Dockerfile; fix datetime format for Lambda put-function-event-invoke-config response; minor refactoring of Dockerfile and API Gateway tests; add support for requestParameters in Api Gateway method integrations; fix skipping S3 signature validation if S3_SKIP_SIGNATURE_VALIDATION is enabled; fix stripping off qualifier suffix when constructing ARN for Lambda lookup; update PYTHONPATH in image to accommodate both python v3.8 and v3.7; refactor API GW impl. for better compatibility with Terraform; parallelize SNS message delivery for improved performance; fix returning error response for attempting to delete non-existing S3 bucket
  • v0.12.12: Add XRay trace headers in notifications from S3 to SQS; add initial support for Resource Groups API; minor enhancements in base image to optimize disk space; add support for managing request payers on S3 buckets; minor refactoring of docker-reuse Lambda executor for better extensibility; save SES email contents to disk in machine-readable format; add support for KinesisStreamSpecification parameter for AWS::DynamoDB::Table CF resource; fix missing SQS message attributes for notifications via SNS; add support for LAMBDA_DOCKER_FLAGS to support custom Lambda Docker run flags; add DEVELOP configuration for debugpy integration; add support for servicediscovery endpoints in API GW invocations; minor refactoring for EC2::VPCGatewayAttachment CF model; add patch for stepfunctions-local to enable cross-region Lambda access; minor: add simple items_equivalent() util function; use configured edge port in S3 presign URL calculation; add test for creating bucket with existsting bucket name; add support for session_token in S3 presign URLs; enhance validation of presigned URLs to support different port numbers in S3 URLs; add Lambda Ruby 2.7 image support and update tests; fix EC2::Route CF model to properly lookup deployment state if DestinationIpv6CidrBlock not set; fix fetching CF resource state for EC2::Route and Logs::LogGroup; remove obsolete DynamoDBLocal fix for Alpine; add EventsBackend to manage state of Events API resources; fix broken SNS test related to UnsubscribeURL returned on subscription attributes; fix edge route mapping for SES requests using /email route; add UnsubscribeURL in payload sent to HTTP SQS endpoints; minor refactoring in API Gateway implementation; fix syntax in aws_stack.py for compatibility with python 2.x; fix incorrect suffixes in SecretManager ARNs for secret lookups; temporarily set S3_SKIP_SIGNATURE_VALIDATION=1 by default (until all issues with S3 presign URLs are resolved); add docs for Kafka and Elasticsearch external services integration; minor fix in ACM to avoid returning duplicate DomainValidationOptions; add CF support for ApiGateway::RequestValidator, Logs::SubscriptionFilter; add region backend for DynamoDB state; add support for DynamoDB table replicas; minor: allow passing keyword args to async_utils.run_sync(..); add support for arn:aws-us-gov:iam:... managed IAM policies; fix Python sys path for module resolution when using local Lambda executor; update version in sample docker-compose.yml; minor: initialize Properties for CF resource instances; support ElasticsearchClusterConfig parameter for creation of ES clusters; add CloudFormation model for Redshift::Cluster; add test case for generating S3 presign URL from Node.js Lambda; fix integration test assertions to accommodate recent CloudWatch metrics changes; fix idempotence for SNS CreatePlatformEndpoint API calls; fix correct error code for getting attributes of non-existing SNS subscription; fix correct Authn header for internal call when replaying non HMAC request; fix filtering of CloudWatch metrics and dimensions; add simple TCP proxy server util; add "running" property to FuncThread; fix URL escaping when calculating presigned URLs to accommodate recent Quart server update; fix double response headers in CORS preflight API Gateway requests; refactor logic for sending SQS messages to DLQ; fix resetting ETags when copying S3 object from multipart upload; cache target API in edge requests for improved performance; skip gzip encoding for S3 responses to fix content-length issue with Go SDK; fix accessing raw response when returning gzip encoded content from Lambdas via API GW; rename currentThread to current_thread for deprecation in Python 3.10; minor: add utility function to clean up Docker containers; fix copying missing events file into container for Java Lambdas with docker-reuse; fix Kinesis response payload encoding for use with Java SDK; add S3_SKIP_SIGNATURE_VALIDATION config to skip S3 presign URL signature validation; add support for Route53 reusable-delegation-set APIs; add missing endpoints for StepFunctions startup command
  • v0.12.11: Add support for ResourceGroupsTaggingAPI; add support for Kinesis targets in EventBridge; add HOSTNAME_FROM_LAMBDA configuration to enable connectivity in compose stacks with dynamic container names; fix missing PATCH method in API GW CORS configuration; add dynamic DNS check to fix issues with resolving s3.localhost.localstack.cloud; fix Event::Rule CF model to properly deploy rule with custom event bus; minor: refactor Lambda impl. for better extensibility; fix fetching Lambda details using ARN as well as partial ARN; refactor CF model and fix deletion method for Lambda::Function; fix bug in handler for DynamoDB BatchWriteItem API; add missing $context variable for VLT templates; add requestTemplates attr for ApiGateway::Method; minor fix for accessing non-existing attribute in ACM models; fix S3 presigned URLs with response header overrides; fix object tagging for S3 multipart uploads; minor refactoring in tests and AWS response utils; add domainName and apiId to Lambda events for API Gateway invocations; add filtering in EventBus using event patterns: prefix,numeric,anything-but; remove default cache-control header in S3 responses; add throttling support for DynamoDB BatchWriteItem requests; fix API Gateway invocation paths in Lambda events; handle x-id query parameter for S3 DeleteObjects requests; fix returning Arn attribute for Logs::LogGroup CF resource; add PERSISTENCE_SINGLE_FILE configuration variable; remove obsolete USE_HTTP2_SERVER and HOSTNAME configuration variables; add missing resourcePath to API GW Lambda events to fix Chalice invocations; strip quotes off StreamARNs when creating Kinesis stream consumers; fix idempotency for creation of SNS topics with tags; enhance CloudFormation support for API GW Model resources; fix DynamoDB to return empty response on no unprocessed items
  • v0.12.10: Add initial support for CloudFormation stack sets and stack instances; replace AWS CLI commands with boto3 calls for /graph endpoint; initial support for AWS Support API; add support for iterator types on Kinesis SubscribeToShard requests; fix API Gateway integration to allow binary payload data; fix reprocessing of SQS messages in case multiple Lambda event source mappings are defined; remove obsolete code for S3 bucket encryptions; fix API GW integrations with no uri/integrationUri attribute (for mock integrations); add fix for StreamViewType in DynamoDB Streams event records; add CloudFormation support for EC2::NatGateway, KMS::Key, KMS::Alias, SecretsManager resources; fix stack status filter in CloudFormation API; support Kinesis streaming destinations for DynamoDB; return PhysicalResourceId for S3::BucketPolicy CloudFormation model; fix CF dependency resolution to avoid unresolved/nil resource refs; add edge mapping for EC2 requests with missing Auth headers; remove deprecated USE_MOTO_CF config switch; resolve refs in ExportName of CF stacks; fix Events API logic for recent upstream changes; add missing attributes in Kinesis SubscribeToShard response; fix API Gateway when applying JSON patch with empty patch value; fix passing region when constructing resource graph; fix CloudFormation GetAtt intrinsic function for attr string refs; fix proper stream view type of DynamoDB stream records; initial support for put_metric_filter for CloudWatch log events; minor refactoring and adding missing path in Dockerfile; cache cfn-response module in local infra folder instead of re-downloading each time; support JSON message structure with raw delivery in SNS; fix error logs on subscribe_to_shard for deleted Kinesis streams; add CloudFormation support for additional EC2 resources; refactor logic for CF stack set instances; add support for getting SSM parameters by path and filtering by labels; remove "content-encoding: identity" header in S3 responses to fix compatibility with PHP/Guzzle 6; fix build script to detect git:// repo URLs; add support for HttpEndpoint destinations in Firehose API; add SNS XRay propagation to SQS using ElasticMQ; fix compatibility of S3 API with Cyberduck; add Circle-CI project setup and build badge; move CI build commands into Makefile for easier migration; minor fix for missing Lambda attributes on legacy persistence states; refactor utils for resource tagging; minor fix in util function for parsing URL-encoded request payloads; minor fix for is_port_open(..) util function to parse port parameters; refactor logic for proxy listener, fix edge forward headers; fix local URLs for nested CFN stacks; fix Kinesis DescribeStreamConsumer to return consumer correctly; add health check status for init scripts; fix content-type for requests forwarded to Lambda fallback URL; update S3 regex to support HOSTNAME_EXTERNAL in bucket hostnames; fix returning None value on TransactWrite DynamoDB operation; add missing context attributes for Python Lambdas with local executor; add missing aws_request_id attribute in LambdaContext for local Lambda executor; add support for SES GetIdentityVerificationAttributes; add LS_LOG=trace option to print detailed request/response messages; minor refactorings for "config validate" command; add status of persistence initialization to health endpoint; add CloudFormation support for EC2::VPC, EC2::RouteTable, EC2::Route; add Location response header on S3 bucket creation; minor fix for extracting region from auth headers; fix incorrect URL modification when sending S3 requests to backend; fix encoding and timestamp format for Kinesis SubscribeToShard from Java SDK; fix returning code 200 for S3 HEAD range requests; fix S3 notifications for URLs with "x-id" query parameters
  • v0.12.9: Major: add support for virtual host based addressing in S3 requests; enable and fix asynchronous CF stack deployments; minor fix for API GW patch operations on non-existing attributes; fix missing parameters in download utils function; add small util function to list local Docker images; fixed slash prefixes for path in S3 static website hosting; configure KMS to use $DATA_DIR as persistence folder; support PutRecord Kinesis endpoint in API Gateway integrations; fix addressing style by setting "auto" in default S3 clients; minor refactoring in download util functions; fix incorrect date format for policy expiration date on S3 signing; minor fix for accessing IAM role attributes; fix S3 Location Constraint for access with Node.js AWS SDK; fix key name with special char and multipart upload in S3 presigned URL; fix ARN format for IAM service roles; fix encoding and strip off quotes for kinesis bytes input; add support for IAM service linked roles; add small util function to create Lambda API Gateway integration; fix S3 bucket location constraint value for us-east-1 region; fix error response for S3 get-bucket-cors in case no CORS config exists; add ability to import REST APIs for APIGateway; fix EC2 responses for compatibility with Terraform VPC module; remove duplicated CFN integration test; add test to validate export names for CFN deployment; fix using regexes to match and extract RSA private keys; fix determining ID for deletion of ApiGateway::RestApi resources; fix failing tests for S3 presign URLs using incorrect bucket host; add LastUpdatedTimestamp for CF resources; minor refactoring in configs and S3 presign URL tests; fix lookup of CF resource ID for IAM::InstanceProfile model; minor fix: make Lambda handler file executable in test utils; add support for signature authentication for S3 host addressing based presign URLs; fix determining state for EC2::SecurityGroup CF resources; add missing get_physical_resource_id for IAM::InstanceProfile CF model; minor fix for SNS topic deletion in CF; fix Serverless tests and run CF deployments asynchronously; fix presigned GET requests with querystring auth parameters
  • v0.12.8: add auto_restart option to ShellCommandThread to restart DynamoDB process on error; fix extraction of SQS QueueArn in CloudFormation models; run CF deployments asynchronously in the background; add CF support for EC2::Subnet, EC2::VPC, Events::EventBus, ApiGateway::Model; extract auth details from query parameters in edge service; fix mechanism to determine whether LocalStack is running inside Docker for Github Actions compatibility; fix extracting list of changes in CloudFormation change sets; minor fix in API GW request routing; fix result processing of external Lambda invocations via LAMBDA_FORWARD_URL; add test for Java Lambda archive built from Gradle; add support for v4 signature calculations in S3 presigned URLs; check existence of KinesisConsumer and add missing Header to binary Kinesis messages; fix edge route mapping logic to identify EventBridge API calls; fix incorrect region parameter in EventBridge tests; fix SQS redrive policy tests failing after recent upgrade; add small util function to get or create S3 bucket; add support for nodejs14.x Lambda runtimes; fix tests for new SNS subscription attributes; automatically confirm SNS subscriptions to fix TF deployments; minor fix for SES response parsing; extend TF tests with EC2 resources; fix missing 'detail' field when putting EventBridge events with empty details; fix resource path in event sent to Lambda from API Gateway; add logs with build info when process starts up; add support for deletion of SES templates; refactor tests and logic for EventBridge targets; fix log output for "localstack config" CLI commands
  • v0.12.7: Add support for deleting S3 bucket lifecycle configurations; add CLI command for validating configurations defined in docker-compose files; fix evaluating conditions to skip resource deployment in CloudFormation; merge stack outputs on CloudFormation UpdateStack; avoid sending MessageGroupId to SQS when using ElasticMQ; add CloudFormation support for Lambda::EventInvokeConfig; add support and tests for StepFunctions intrinsic functions; fix Lambda handler in Serverless tests for local executor; add test for Kinesis stream consumer Lambda event mapping; fix adjusting CloudFormation stack status when running ExecuteChangeSet; add a TLDR-style docker run command in the README; fix disabling of rules in EventBus API; add AWS_REGION to environment when launching Lambda functions; initial support for Kinesis consumers and SubscribeToShard via HTTP2 push events; fix API Gateway response for base path mapping with empty path; fix setting of default region from environment variables; fix tests to accommodate min length of API GW API keys; add support for base path mappings in API Gateway; fix Kinesis GetRecords output with bytearray data for consumption with AWS Java SDK v2; add "events" target for EventBus to forward messages between different event bus instances; add support for LAMBDA_FORWARD_URL to forward Lambda invocations; update S3 event version from 2.0 to 2.1; skip returning groupName in IP permissions for non-default VPCs; enhance support for ACM domain validation; fix API Key validation for API Gateway for multiple keys configured; add support for accounts management in API Gateway; add support for API Gateway validators; add CloudFormation support for Route53::RecordSet; fix response for ACM certificate verification status; support Route53 matching for domain names ending with a dot; add initial support for SWF API; pin version of cryptography<3.4 to avoid issue with new Rust dependency; add missing endpoint/domain for ES call from Firehose; add .NET client library info to README; minor fixes for tagging CloudWatch alarms; fix extraction of tags from URL-encoded request payload; fix list_hosted_zones_by_vpc API for Route53; add API to list Elasticsearch versions; fix update of HOSTNAME_EXTERNAL in SQS via backdoor config API; handle empty marker in S3 list objects; add CloudFormation support for deletion of SNS subscriptions; make unzip(..) util function more resilient to errors inside Alpine/Docker; fix startup of Elasticsearch process on ES domain creation; minor refactoring of CloudFormation model base class; fix error response for non-existent keys in S3 range requests; add SES email delivery for SNS notifications; refactor IAM to incorporate upstream changes; minor refactoring of API GW stage variables; fix tests for ACM certificates created via Terraform; add module jdk.zipfs to custom JDK to fix JAR loading issues; add missing attributes for ACM certificates to avoid Terraform crashes; add support for Route53 ListHostedZonesByVPC; fall back to Python unzipping if native "unzip" command fails; add support for Route53 AssociateVPCWithHostedZone; support attribute TreatMissingData in CloudWatch metrics; minor fix in SecretsManager to accept secret ARN as SecretId; add test cases for CloudWatch Logs subscriptions; remove persistence for SNS APIs that cause issues with generated IDs; add support for Lambda event source mapping with self-managed kafka cluster as event source; ensure case-insensitive dict for headers to fix gzip encoding issue with TF; add LS_LOG option to customize the default log level
  • v0.12.6: Convert Content-Length headers to upper-case as required by some S3 libs; fix logic for restoring DEEP_ARCHIVE objects in S3 API; fix incorrect response tags for Redshift ClusterSubnetGroups; add backdoor API to receive raw CloudWatch metrics; minor: add util function to kill process trees for cleanup/shutdown; minor refactoring of startup log messages; fix Java Lambda containers to listen on debug_port if specified in LAMBDA_JAVA_OPTS; fix millisecond conversion of ApproximateArrivalTimestamp in Kinesis GetRecords; support Lambda/Kinesis/Firehose targets for CloudWatch Log subscription filters; fix test credentials in DynamoDB request headers; fix region lookup for API Gateway REST API invocations; enhance CFN support for EC2::SecurityGroup, IAM::InstanceProfile, and KMS:Key; fix patching of API GW REST API attributes; minor fix for local Lambda mounts; fix CF attribute lookup for LambdaPermission; enhance CloudFormation support for API Gateway resources; fix Kinesis proxy listener to skip base64 decoding for byte message contents; minor CloudFormation fixes for S3 buckets; enhance CloudFormation logic for managed and inline IAM policies; add tagging support for CloudWatch metrics; fixed gzip encoding of payload on Lambda trigger from log subscription event; minor refactoring of Lambda API for better extensibility; fix DynamoDB listener to properly look up throttling configuration; add SES listener to add missing xmlns for error responses; fix edge path routing for S3 PutObject with nested key name when using Java SDK; fix string format of SecretsManager secret value when referencing from SSM; modify timestamp format of CloudWatch GetMetricData entries; minor: add util method to initialize REGIONS for RegionBackend; support EC2:Instance resources in CloudFormation; fix LastModified value for Lambda API to support Terraform 0.13 and 0.14; perform deletion of DynamoDB streams only if table exists; fix date format in SES for AWS Java SDK v2 compatibility; fix deployment of CloudFormation templates with IAM::InstanceProfile; add support for tags in CloudFormation stacks; minor fixes for CloudFormation and handling AWS auth headers; fix logic and integration test for Lambda destinations; add support for Fn:GetAZs intrinsic function in CloudFormation; include change set params when resolving stack parameters; refactor Lambda API to use RegionBackend base class; add messageGroupId parameter for SQS targets in events rules; fix JSON encoding of payload from Lambda fallback invocation; fix error response on Firehose PutRecord for non-existing stream; minor refactoring of API Gateway invocation logic for better extensibility
  • v0.12.5: Major change: Rewrite CloudFormation to use an independent deployment mechanism; refactor CloudFormation implementation to use resource model classes; fix date format in SSM & SecretsManager for Java SDK compatibility; add missing CF resource props for DDB/SQS resources; add util functions to determine disk usage of files/folders; add proper signal handling in supervisord to support kubernetes deployment; fix removal of deleted resources from CF stack template; add SET_TERM_HANDLER config for Docker entrypoint; minor fixes for CF resource updates for IAM roles and SFN state machines; add default config for StepFunctions port to avoid clash with PORT env variable; fix infinite recursion when loading stack exports that reference other imports; fix response format for CloudFormation ListExports; add support for Lambda destinations to forward results to SQS; add persistence for secrets manager; add missing edge route mapping for SNS ConfirmSubscription; add message group id for events in SNS->SQS integration; add integration test for StepFunction try/catch functionality; add small util function to determine whether a local port can be bound; enhance DynamoDB performance by skipping item lookups if no streams enabled; fix returning log output on Lambda errors; minor refactoring of region backend base class; fix yaml to JSON parsing of CF templates; recursively return all outputs for nested CloudFormation stacks; support S3 key names containing hashes; minor fix in date format parsing for S3 policy expiration dates; add support for CF functions select/split/base64; minor CF fixes for use with CDK; add gzip decoding to edge service to support zipped request payloads; add missing CF APIs: GetTemplate, GetTemplateSummary, ListImports; add method to configure CF deploy templates in resource class; refactor CloudFormation to use model classes; fix SNS message format for .NET SDK by removing null values; add ability to get an AppSync DataSource's physical id in CF; fix returning LogResult from synchronous Lambda invocations; fix assertions for machine creation/deletion in StepFunction tests; fix fetching Arn attribute on SFN state machine updates via CF; fix broken tests related to util function change; extend create_zip_file util function to allow specifying target zip file; pass environment variables to Lambdas with "provided" runtime; fix escaping of policy JSON in ApiGateway resources using Terraform; run Lambda set_function_code in background to avoid network timeouts; sort S3 object versions by creation date; fix whitespaces in SQS redrive policy JSON; minor fix when cloning CF stack template metadata
  • v0.12.4: Use locking to run Lambdas with docker-reuse executor in sequence; use locking to fix concurrency during persistence restoration; skip MD5 checks on S3 multipart uploads; log content of outgoing emails in SES; fix absolute path for DATA_DIR when starting up DynamoDB process; extract Ref attribute for CloudFormation Sub attributes with "${resource}" syntax; minor fix in CloudFormation related to missing set_exports method in moto-ext; hardcode local hostname instead of using $HOSTNAME from the environment; make TEST_*_URL endpoints configurable in the environment; fix broken S3 test related to date format of Expires header; fix parsing of host name to determine path based addressing in S3 requests; fix processing of EventBridge events on multiple targets and inputPath; use .Config.Entrypoint for more robust Docker entrypoint lookup; add gzip encoding of response payloads to edge service; refactor and enhance CF resolution of placeholders in Sub expressions; minor: add util function to run async coroutine in given event loop; fix logic to update Lambda function version based on content hash; fix CF issue updating state machine with FN ref in definition string; minor: add util function to construct XML response messages; fix resolving name refs when querying CF resource deployment state; minor refactoring in edge routing and CF FN::ImportValue resolution; add backdoor API to restart all processes inside the main container; remove encryptionType:NONE attribute in Kinesis records to avoid breaking .NET lambdas; minor fix in startup command for provided Lambda runtimes; add SNS target type for EventBridge API; fix stdin I/O issues when passing events to provided Lambda runtimes (e.g., for Rust); fix CF export name uniqueness checks prior to stack deployment; fix issue when updating CF template with StateMachine; add integration for StepFunctions state machine executions in API Gateway; fix default account ID in SecretsManager ARN responses; migrate Helm charts into separate repo
  • v0.12.3: Add support for API Gateway update-rest-api via JSON patch operations; add content based filtering in Events API; add support for Lambda code signing APIs; fix /etc/hosts and Quart dependency for Centos 8; add Vagrant configuration for reproducible CentOS dev environments; add support for Lambda concurrency API; minor: reduce log verbosity for chunk-based file downloads; enhance CloudFormation logic to load state of existing resources; add required workdir to supervisord configuration; enhance SSM / SecretsManager integration to get secret parameters; fix edge route mapping for EventBridge requests from Go SDK; fix response structure for API GW Integration/Response; disable moto instance tracking to avoid memory leak; add support for Route53 get-change; handle IAM::Policy resource in CloudFormation; add integration test to deploy CF template generated by CDK; refactor and stabilize CloudFormation dependency resolution mechanism; fix passing of stack parameters/resources to CloudFormation changesets; fix default account ID in SecretsManager ARN responses; add edge forwarding rule for AWS AssumeRoleWithSAML action; release initial version of Helm chart; fix issue with resolving FN::Sub references in CF templates; ensure using correct test credentials for generating S3 presigned URLs; add missing Access-Control-Allow-Credentials CORS header to S3 responses; fix recreation of SNS topic with same name and different tags; improve Terraform tests; add PackageType property for Lambda functions; fix missing attributes in Lambda update-function-config; add test cases for Lambda code signing config; minor refactoring in DynamoDB test utils; minor refactoring of AWS test credentials; enhance support for FN::ImportValue and FN::Sub in CloudFormation templates; support KCL 2.x timestamps and ARN replacements in Kinesis CBOR payloads; consider $REQUESTS_CA_BUNDLE for SSL verification in download utils; fixed timeoutInMillis attribute missing from API Gateway integrations; fix edge route mapping for STS AssumeRoleWithWebIdentity; fix SSM & SecretsManager integration for secrets names with slashes; fix URL host name and credentials when generating presigned URL; add missing CachingClusterStatus in API GW to fix Terraform crash issue; add Thai segmentation support to JRE as required by Elasticsearch 7+; create custom, compressed JRE via jlink in base image; fix non-zero content length for gzipped 204 status
  • v0.12.2: Add proper CORS headers to S3 responses; expose SecretsManager secrets via SSM parameter references; fix parsing of Content-Disposition header in S3 multipart uploads; add carriage return to SQS message payload validation regex; add support for SQS queue names containing slashes; add support for resource policies in SecretsManager; add test for S3 precondition check; add test for Terraform API Gateway resources; use distinct values for missing CloudFormation resource props; handle non-zero ReceiveMessageWaitTimeSeconds for SQS; refactor CF tests; add support for custom CI build commands via $CUSTOM_CMD; add README instructions for test credentials required for presigned URLs; fix Content-Length mismatch issue for HTTP server responses; add util function to create API GW Lambda event request context; fix hypercorn response body on 412 status code; upgrade base image and local Lambda executor to Java 11; allow adding multiple permission statements to Lambda function policy; minor: fix logic for missing authorizerId in API GW authorizers
  • v0.12.1: Fix missing module import for Windows; set correct Id attribute in S3 notification messages; enable setting custom authorizers on API GW resource methods; add log output listener for shell command thread; fix DynamoDB streams sequence number mismatch on GetRecords; add docs about using AWS CLI v2 from Docker image; updates in developer documentation and README (e.g., docker-compose version); support filtering of events by pattern using eventPattern; add CloudFormation support for Lambda::Permission; fix date format in CloudWatch responses; fix service name and NS URLs for XML service responses; add Terraform test for several resources (Lambdas, S3 bucket CORS integration); fixed gzip encoding for empty response content; refactor StepFunctions integration tests; pass $EDGE_PORT to Lambdas; add test for creating SFN State Machine with Choice operator; add test for creating SQS queue with attributes via CloudFormation
  • v0.12.0: Single edge port now stable for all APIs; publish SNS messages asynchronously; fix edge route mapping for S3 HEAD requests; fix invalid account ID in CloudWatch logs listener ARNs; minor fix of XML root tag for S3 error responses; fix issue with blocking sockets in HTTP2 server; minor refactoring of /graph endpoint; fix numeric timestamp format in Kinesis records required by Go SDK; add CloudWatch as a static dependency for Lambda API; disable custom Java Lambda executor and replace with default lambci mechanism; add CBOR encoding support for Kinesis API; raise error when attempting to update CF stack with unmodified template; create env INIT_SCRIPTS_PATH to specify path for init files in Docker; add more fine-grained DynamoDB error injection with read/write error probabilities; extract InputPath expression for notification messages to EventBus targets; fix missing attributes when adding IAM permission to Lambda function; fix case sensitivity for bucket names in S3 bucket notifications; add simple integration test for Terraform resources; fix debug port parser for Java Lambda executor to support different formats; add signature and expiry validation for S3 presigned URLs
  • v0.11.6: !!Breaking Change!! Starting with this release, all services are now exposed via the edge service (port 4566) only; fix boolean values in IAM responses; fix PutEvents API call with no source specified; add download URLs for Elasticsearch 7.7; minor refactoring in SFN test code; fix endless loop when S3 error document is missing; add integration test to verify MAP tasks in SFN state machines; refactor CF logic for API GW resources and empty/Null values; fix Python path when running Lambdas using local executor; refactor API Gateway utils and test code; refactor Lambda context handling; add LAMBDA_DOCKER_DNS config to utilise custom DNS server for Lambda containers; fix "TypeName" as optional param for Elasticsearch v7; refactor startup logs to print correct ports in output; extend Serverless tests with SQS and API Gateway resources; use S3 path addressing when host starts with localhost IP or hostname; add test to assert event deletion for SQS Lambda event source; fix error response for requests to non-activated APIs; add localhost.localstack.cloud as alias to SSL cert; fix network_mode:bridge in docker-compose.yml; add Serverless integration tests to cover DynamoDB and Kinesis resources; add switch to disable Lambda handler validation; add Lambda request body length check; use edge as single entry point; performance improvements in plugin loading; forward requests in-memory instead of opening port per service
  • v0.11.5:
    • !!Breaking Change!!: Starting with releases after v0.11.5 (i.e., latest and all future release tags), all services are now exposed via the edge service (port 4566) only! Please update your client configurations to use this new endpoint.
    • Changes: Add support for importing REST APIs from Swagger docs in API Gateway; add config variable to customize the main Docker container name; add missing attributes in Lambda events triggered from Kinesis; fix Lambda event to match SNS message ID; refactor util functions for AWS responses; update Lambda environment variables on CF stack update; fix default region in edge service to avoid region mismatches; concatenate Firehose batch records and combine them into single S3 objects; allow setting MAX_POOL_CONNECTIONS via environment variable; use paginator for DynamoDB list tables; fix EC2 creationTimestamp format; refactor logic to forward requests to S3_BACKEND; fix edge route for /graph endpoint; read name of main Docker container dynamically based on hostname; fix URL encoding of S3 object key names in SQS notification messages; fix edge route for S3 bucket HEAD requests; support gzipped S3 responses when requested via Accept-Encoding header; refactor CloudFormation deployments for API Gateway; add several retries to make integration tests more resilient; add DynamoDB error handling for query type ALL_ATTRIBUTES and projection type != ALL; fix posting to SQS on queue URL with trailing slash; use random available port for Lambda container server in Docker "host" network mode; fix CF/Serverless deployment for ApiGw APIs with missing root resource; add adaptive, unbounded thread pool to avoid deadlocks on concurrent requests; fix JSON serialization of event details on eventBridge put_events; return 304 if If-None-Match header is specified and S3 object ETag has not changed; adjust timestamp format for JSON-safe object conversion; cut out None from Delimiter tag in S3 responses; fix edge mapping for S3 PutObject requests; use a mock client to prevent moto Lambda objects from talking to Docker; fix CF deploy for API GW RestApi resource; add default values for DDB ProvisionedThroughput in CF; add test to trigger Java Lambda from SNS event source; fix Lambda event from API Gateway to send HTTP method it was called with; fix mismatch of crc32 hashes for patched SQS responses; fix S3 compression for non-bytes string response body; add test for DynamoDB stream triggering Lambda event source; add test to assert exception for DDB query on non-existing table; fix CF deployment of API Gateway integration and integration URI with empty path
  • v0.11.4: Add initial support for ACM API; build and push localstack-full image in CI, make light image the default; support client context passed to Node.js Lambda handler; increase max threads in thread pool to improve concurrency; support custom Lambda integration in API GW; fix HOSTNAME_EXTERNAL extraction to determine path-style addressing in S3; support "sms" as SNS subscriber protocol; support platform endpoints in SNS; fix RedrivePolicy for new SQS backend; fix triple logs in debug mode; fix format of Kinesis stream ARNs in CF; enhance implementation and tests for API GW HTTP/HTTP_PROXY support; support CF deletion of Lambda functions and IAM roles with inline policies; fix DynamoDB TransactWriteItems with ConditionCheck; add retries to fix intermittent SSL cert generation errors; fix DynamoDB stream MODIFY/INSERT event on UpdateItem for new item; fix DynamoDbStreams get-shardId-iterator with AT_SEQUENCE_NUMBER; fix proxy CORS headers; properly convert between Kinesis stream names and ARNs; fix generation of random password in SSM; add dummy AWS credentials to Lambda Docker containers; add test for VPN Gateway attachment.vpc-id filter; fix API key checks for API GW paths with path params; fix content-type in presigned S3 URLs; add support for pathPrefix in IAM list_users; fix SSL context creation error for multiple threads; enhance command line ports parsing; enhance CF support for ApiGateway::RestApi; add option to use default Lambda endpoint for StepFunctions; add tests to tag/untag SQS queues; add basic string functions in VLT templates; add tests for SQS FIFO queue with group/deduplication ID on multiple messages; fix invocation of destination Lambda for Logs subscription filters; add config option for DynamoDB Java heap size; add test for SQS DLQ when maxReceiveCount is reached; add missing region to EC2 getAccepterVpcInfo response; return raw response in edge proxy to fix gzip encoded S3 content; add test to trigger multiple SNS subscriptions in the presence of handler errors; fix adding multiple permissions to single Lambda function; return table name for DynamoDB table Ref in CF; make DDB stream creation asynchronous; replace ${filename} variable references in S3 presigned responses; fix HTML escaping of SQS message attributes; increase Quart server max content length; add SQS as target in EventBridge; fix shardId format for DDB Streams; add support for DynamoDB Global Tables; fix S3 Content-MD5 base64 checks; extend Java Lambda classpath; fix Docker port mapping for PORT_WEB_UI
  • v0.11.3: Switch to Quart Server for initial version of HTTP/2 support for API endpoints; move /health check endpoint to edge port; use moto instead of ElasticMQ as default backend for SQS; add thread synchronization to Lambda config initialization; point Lambda LOCALSTACK_HOSTNAME to main container directly; add CORS headers to all OPTIONS responses by default; upgrade DynamoDB to latest backend version; fix CF deploy issue with SNS resources, IAM role policy document; fix direct access to queue URLs with new SQS backend; encode account ID in SQS queue URLs; add handling of query parameters in SNS requests; use JSON safe dumping of bytes in API Gateway; determine proper external port in SQS URLs; fix handling of S3 LocationConstraint on bucket creation; add missing Record values to Kinesis stream listener response; fix DynamoDB DeleteEventSourceMappings in case tableARN is None; fix format of S3 InvalidRange error response; support CF condition based on AccountId; fix error responses for S3 Content-MD5 header; fix S3 bucket creation date for Java SDK v2; delete event source mappings on deletion of DynamoDB table; return proper response details on Lambda invocation error; store SSL certs to random tmp files in case of permission issues; enhance path matching for API Gateway invocations; fix edge mapping for CloudWatch, S3 HEAD requests, SQS requests; fix DynamoDB shard IDs; fix lower case for SQS->Lambda message attributes; pass HTTP_PROXY to Lambda if configured; skip Lambda invocation if event source mapping is in state Disabled; fix S3 CORS policy with single origin; fix S3 storage class on multipart upload; fix passed parameters on API Gateway proxy resource method call; cleanup asyncio thread pool on shutdown; fix S3 timestamp format; support expiry in S3 multipart POST; support Elasticsearch snapshot repo; fix binary MessageAttribute for SNS->SQS; make sync/async Lambda event sources configurable; Fix chunked encoding in S3 responses; add Firehose support for EventBridge targets; pass multivalue headers from API GW to Lambda; add persistence support for SNS; add API Key validation in API GW; fix handling of S3 multipart form upload via edge port; fix API GW response on DELETE Lambda integration; support StepFunctions targets in scheduled event rules; filter out Lambdas by region in ListFunctions; fix Terraform deletion of EC2 NAT Gateways; add support for IAM SimulatePrincipalPolicy; remove Python 2 tests in CI; add EventBridge schedule expression for HTTP subscribers; fix Windows host path for Lambda volume mounting; add UnsubscribeURL to SNS notification message
  • v0.11.2: Use dynamic instead of hardcoded backend service ports; use random port for multiserver; add API Gateway integration with DynamoDB; add Lambda support for the dotnetcore3.1 runtime; handle kms_key_arn/vpc_config in Lambda models; add bucket existence checks for S3 operations; refactor CLI and infra startup; fix mapping of CloudFormation account IDs; add persistence support to SQS API; remove obsolete subprocess32 dependency; optimize travis build for light image; add name for non-existent Lambda in calls to LAMBDA_FALLBACK_URL; add tests for CW getMetricData, API GW CreateModels, S3 listing 1000+ objects; add tests for EC2 create_vpc_endpoint, S3 put/get bucket versioning; add integration test for CloudWatch put_metric data; add test case for SQS queue RedrivePolicy attribute; fix health check for HTTPS endpoints with self-signed certs; mock simple response for EC2 reserved instance APIs; fix error handling on SQS sending of empty message batch
  • v0.11.1: Add support for Lambdas triggered by scheduled event rules; lazily install and allow selection of specific Elasticsearch versions; add ability to return multi valued headers from Lambda - API GW integration; fix CF deployment for EventPattern attribute in Events::Rule; add CF support to update instances of IAM::Role; implement Events put_events with SQS and Lambda targets; delete notification configurations on S3 bucket deletion; fix default RoleName in CF dependent IAM roles; support S3 expiry for pre-signed URLs and objects; add metadata headers in S3 GET responses; fix edge request forwarding for public S3 URLs; add missing S3 response headers for bytes ranges and request IDs; add util class to fix account IDs in STS listener; support "exists" operator for SNS filter policy; fix IAM detach_role_policy and add missing managed policies; fix tagging support for ES domains; print version number when starting up; fix response content for IAM error messages; update startup log messages with new edge port; fix requesting SSM params with leading slashes; fix resolving CloudFormation refs when updating resource IDs; add support for tags on IAM CreateUser calls; fix data type conversions in SNS->SQS message attributes; fix API Gateway put_integration to avoid responseTemplates containing null values; add test cases for STS get_federation_token; fix Docker port mapping conflicts by avoiding overlaps; add CF test for empty event rules names; delete SFN state machines via CF; consider None data when stripping chunk signatures in S3 requests; fix DynamoDB behavior for ReturnValues on PutItem; support custom Lambda endpoint for StepFunctions; add simple integration test for Serverless deployment; check BatchSize in Lambda event source mappings; add CFN support for Events::Rule, S3::BucketPolicy, Logs::LogGroup, and ElasticSearch/SecretsManager/KinesisFirehose resources; fix case sensitivity for Connection keep-alive header; put util jars at end of classpath for local Java Lambdas; add persistence for SSM and SecretsManager, introduce PersistingProxyListener; skip persistence replay if an API is disabled; optimize image size; create stripped-down light version of Docker image with lazy loading of ES libs; add documentation for USE_LIGHT_IMAGE; add checks for HOST_TMP_FOLDER when running in Docker
  • v0.11.0: Add Edge service as central API entry point; fix content-type header for CloudWatch logs responses; add test to assert EntityAlreadyExistsException when recreating IAM role; add tests for deletion/re-creation of CloudFormation resources; add missing API Gateway template util functions; add test to assert DelaySeconds for Lambda SQS event source; add tests for S3 uploads with special content and large file sizes; enhance integration tests Secrets Manager API; add debug logs for publishing SNS messages; add support for Lambda FunctionEventInvokeConfig; fix Lambda deployment for mountCode=true; fix Lambda SQS event source for SendMessageBatch; implement tagging for DynamoDB tables; fix message attributes in SQS-Lambda integration; allow setting static debug port in LAMBDA_JAVA_OPTS; add LastUpdateStatus to Lambda response to fix terraform deployment
  • v0.10.9: Update Elasticsearch to 7.1; add support for SNS redrive policy for Lambda/SQS/HTTP events; add message polling mechanism for Lambda-SQS integration; add test for S3 list_object_versions with EncodingType parameter; fix error around ChangeSet deployment in CloudFormation; add CloudFormation support for SSM::Parameter, API Gateway MethodResponses; support passing of parameters to nested CF stacks; fix CF dependency resolution for stack update; fix downloading of CF template from S3 with custom hostname; change timestamp formatting (millis instead of micros); fix returning ETag for S3 GetObject calls with range parameter; handle empty Subject in SNS publish calls; fix send_raw_email for sending raw emails in SES; clear out sys.modules to resolve name clashes for multiple local python lambda functions; add SQS list-dead-letter-source-queues API; fix SecretsManager list-secrets to return same ARNs for secrets; suppress supervisor warning when running in docker as root; generate default Lambda FunctionName in CloudFormation; integrate S3 starter into multiserver to improve performance; Fix empty response for PutTargets in CloudWatch Events; fix forwarding of Lambda output to CloudWatch Logs; fix region in CF stack ARNs
  • v0.10.8: Make Lambda batch size configurable for Kinesis event source mappings; move Java sources into separate project; refactor CF dependency resolution loop; fix deployment of EC2 subnets with CidrIpv6; fix creation of SQS tags via CloudFormation; optimize plugin loading to speed up boot time; fix notifications for S3 uploads made with presigned POST requests; fix objectsize in S3 notification events; fix SNS subscription confirmation message to include signature details; configure Node.js Lambdas to skip SSL verification; add CF support for S3::BucketPolicy; fix returned attributes on ReturnValues=ALL_OLD for DynamoDB PutItem; fix CreationTime for CF stacks; apply LAMBDA_REMOVE_CONTAINERS config for docker-reuse Lambda executor; fix handler lookup for "provided" Lambda runtime; update exports on CF stack update; allow deleting a specific version of an object in S3; return SQS maxReceiveCount as integer; add basic /health check endpoint; return ConsumedCapacity for DynamoDB Query action; fix CloudWatch log streams lambda timestamp format; support static refs in CloudFormation Fn::Sub strings; fix RawMessageDelivery subscription values for SNS - SQS integration; support ExtendedS3DestinationConfiguration in Firehose streams; expose Java options for local Lambda executors; fix setting of empty SQS queue attribute values; add API to confirm SNS subscriptions; add persistence for Elasticsearch Service API calls; mark non-Docker Java LocalstackExtension as deprecated; prefix CloudWatch event file names with timestamps; remove None strings from SNS results; refactor resolution of CF resource name placeholders; fix CloudFormation support for IAM::Role; add ExportName to CloudFormation stack outputs; fix SNS tag listing to remove duplicate tags; fix regex for replacement of S3 ETag hashes; update ElasticMQ version, fix SQS tags API; refactor logic and use single file for persistence; resolve CloudFormation attributes starting with lower case; fix region for SQS queue ARNs in Lambda event source mappings; fix nextToken for CW Logs API; add support for Java11 Lambda runtime; adjust urllib3 pool size to allow more parallel HTTP requests; fix CreationDate format for S3 ListBuckets; fix forward URL prototol for S3 proxy; add test for S3 range header; make Lambdas triggered by SQS run asynchronously; fix S3 uploads with underscores in metadata; include latest Lambda regions from boto3; add ignoreDockerRunErrors JUnit Docker attribute; pull non-existing Docker image from JUnit runner; fix detection of absolute URLs in proxy paths
  • v0.10.7: Support dead letter queues for Lambdas and SQS queues; add support for nested CloudFormation stacks; allow "True" as value for SNS RawMessageDelivery; add mechanism to delete CF resources of deleted stacks; changed local-kms binary location to official upstream repository; fix S3 path layout for Firehose streams; add tagging support for CW events; skip unnecessary extraction of Java lambda archives; add test for SQS change_message_visibility; return CF stack events for deleted stacks; fix URL encoding when reading key name for S3 Range fix; fix content-type for S3 Range requests; increase Java docker timeout for image pulls; fix routes for DynamoDB shell; add Java test for S3 presigned object upload; fix S3 paginated requests; fix S3 delete-objects for non-existing keys; properly map different JSON data types in Lambda responses; fix CF Arn attribute for CloudWatch LogGroups and S3 buckets; fix tags on SNS topic creation; add content-length header in S3 success_action_status response; allow nested invocations of SFN state machines; fix deletion of S3 object tags; fix S3 results for max-keys=0; improve performance on Alpine/TravisCI; lazily start up Elasticsearch instance on ES domain creation; add DOCKER_LAMBDA_API_PORT config
  • v0.10.6: Fix MD5 hash of message attributes on SQS->Lambda integration; add LAMBDA_REMOVE_CONTAINERS config; bump moto to latest version; fix LocationConstraint markup in S3 responses; fix success_action_status for S3 POST Object; add UUIDs to CW events; update SSL certificate to new requirements in MacOS Catalina; fix Docker port mapping for JUnit test runner; add test for CW logs multi-byte message; fix S3 bucket name validation, auto-convert uppercase characters in bucket names; fix CF deployment of step functions; fix DOCKER_HOST_FROM_CONTAINER config for local exec; fix object ACLs for multipart uploads; add initial support for Kinesis stream consumers; enhance proxy to transparently accept both HTTP/HTTPS on the same port; support TemplateURL for CF ValidateTemplate; support Marker for S3 ListObjects; fix passing of metadata on S3 presigned URL put; allow trailing slashes in Elasticsearch API; refactor Java libs, make Docker the default JUnit executor; update ElasticMQ version; add initial support for KMS via local-kms; fix Terraform deployment for Lambdas; fix stack name in CloudFormation resource names; fix S3 bucket name checks for domain based addressing; add locking for SSL cert creation; support JARs in lib/ folder for Java lambdas; disable SSL verification for CF template URLs; add S3 website ErrorDocument emulation; fix return type of Lambda GetPolicy; fix API Gateway authorizer implementation; fix permission issue for cert files; fix non-JSON content types for API Gateway; fix DynamoDB error for Put on non-existing table; fix notification triggers on S3 presigned URL upload; add CloudFormation support for deployment of SAM resources; fix SNS FilterPolicy configuration; add kinesis/ListStreams API Gateway integration
  • v0.10.5: Various CloudFormation fixes: deployment of API GW method integrations, properly skip resource updates, Lambda SQS event source mapping, avoid duplicate resource creation, support for ApiGateway::GatewayResponse and Events::Rule, log groups for Lambdas; support adding Lambda policies; customize Docker registry for Lambda images; support multiple configurations in S3 notifications; fix encoding of non-ASCII results from API Gateway; allow docker-reuse to use mounted volumes; support presigned S3 URL upload notifications; fix lookup of Python Lambda handler in sub directories; upgrade kinesalite; fix duplicate CORS headers; fix mapping of Lambda versions and ARNs; fix SNS x-amz-sns-message-type header; send SNS confirmation message for HTTP(S) subscriptions; fix DynamoDB local libs for Docker Alpine; add CF support for SNS subscriptions; fix RecordId for firehose put-record-batch; fix SQS messages with multi-byte characters; avoid creating multiple SNS subscriptions; add .bat script and support running under Windows; fix S3 location constraint for CF
  • v0.10.4: Add checks for open UDP ports; fix S3 chunked encoding uploads; fix LatestStreamLabel; fix CORS headers for SQS/SNS; set Java lambda debug port only when needed; expose default region in a util function; fix MacOS tmp folder; clear tmp supervisord logs at container startup; fix signed header requests for S3; expose Web UI via HTTPS; add Timestamp to SNS messages; fix attributes for SQS queues addressed via URL
  • v0.10.3: Allow specifying data types for CF attributes; add API for service status and starting services at runtime; support NextShardIterator in DDB streams; add mock responses for S3 encryption and replication; fix rendering of resources in web UI; custom SQS queue attributes; fix Lambda docker command and imports; fix SQS queue physical ID in CF; allow proxy listener to define custom backend per request; support Lambda event body over stdin; exclude ingest-geoip ES module to optimize image size; skip checking MD5 on S3 copy; fix DynamoDB table ARN for CF; fix CF deployment of StepFunction activities; fix uploading of Java Lambda as JAR in ZIP; fix installing libs for plugins; added LAMBDA_JAVA_OPTS for Java Lambda debugging; bump Maven dependency versions; refactor Lambda API; fix boolean strings in CF templates; allow overriding AWS account id with TEST_AWS_ACCOUNT_ID; fix incorrect region for API GW resources created via CF; fix permissions for cache files in /tmp
  • v0.10.2: Fix logging issue with async Lambdas; fix kinesis records processing; add basic support for Ref in CloudFormation; fix ddb streams uuid generation; upgrade travis CI setup; fix DynamoDB error messages; cache server processes
  • v0.10.0: Lazy loading of libraries; fix handling of regions; add API multiserver; improve CPU profiling; fix ES xpack installation; add basic EventBridge support; refactor Lambda API and executor; add MessageAttributes on SNS payloads; tagging for SNS; ability to customize docker command
  • v0.9.6: Add API Gateway SQS proxy; fix command to push Docker image; fix Docker bridge IP configuration; fix SSL issue in dashboard infra; updates to README
  • v0.9.5: Reduce Docker image size by squashing; fix response body for presigned URL S3 PUT requests; fix CreateDate returned by IAM; fix account IDs for CF and SNS; fix topic checks for SMS using SNS; improve documentation around @LocalstackDockerProperties; add basic EC2 support; upgrade to ElasticSearch 6.7; set Last-Modified header in S3; preserve logic with uppercase event keys in Java; add support for nodejs 10.x Lambdas
  • v0.9.4: Fix ARNs in CloudFormation deployments; write stderr to file in supervisord; fix Lambda invocation times; fix canonicalization of service names when running in Docker; add support for @Nested in Junit5; add support for batch/transaction in DynamoDB; fix output buffering for subprocesses; assign unique ports under docker-reuse; check if topic ARN exists before publish
  • v0.9.3: Fix output buffering of child processes; new release of Java libs; add imageTag attribute for Java annotation
  • v0.9.2: Update to Python 3 in Dockerfile; preserve attributes when SNS Subscribe; fix event source mapping in Lambda; fix CORS ExposeHeaders; set Lambda timeout in secs; add tags support for Lambda/Firehose; add message attributes for SQS/Lambda; fix shard count support for Kinesis; fix port mappings for CloudFormation
  • v0.9.1: Define dependent and composite services in config; forward Lambda logs to CloudWatch Logs; add SQS event deserializing for Lambda; fix AWS_PROXY for JSON list payload; add START_WEB config parameter; return correct location for S3 multipart uploads; add support for Lambda custom runtime; fix account ID for IAM responses; fix using correct SSL cert; limit memory usage for Java processes; fix unicode encoding for SNS messages; allow using LOCALSTACK_ prefix in Docker environment variables; enable request forwarding for non-existing Lambdas; fix large downloads for S3; add API endpoint for dynamically updating config variables; fix CloudFormation stack update
  • v0.9.0: Enhance integration with Serverless; refactor CloudFormation implementation; add support for Step Functions, IAM, STS; fix CloudFormation integration; support mounting Lambda code locally; add docker-entrypoint-initaws.d dir for initializing resources; add S3Event Parser for Lambda; fix S3 chunk encoding; fix S3 multipart upload notification; add dotnetcore2.1 and ruby2.5 Lambda runtimes; fix issues with JDK 9; install ES plugins available in AWS
  • v0.8.10: Add kclpy to pip package; fix badges in README
  • v0.8.9: Replace moto-ext with upstream moto; fix SNS message attributes; fix swagger; make external SQS port configurable; support for SNS DeleteTopic; S3 notifications for multipart uploads; support requestContext in AWS_PROXY integration; update docs for SSL usage
  • v0.8.8: Support Docker network config for Lambda containers; support queryStringParameters for Lambda AWS_PROXY apigateway; add AWS SecretsManager service; add SQS/Lambda integration; add support for Firehose Kinesis source; add GetAlias to Lambda API; add function properties to LambdaContext for invocations; fix extraction of Java Lambda archives; check region headers for SNS; fix Lambda output buffering; fix S3 download of gzip; bump ElasticMQ to 0.14.5; fix Lambda response codes; fix syntax issues for Python 3.7
  • v0.8.7: Support .Net Core 2.0 and nodejs8.10 Lambdas; refactor Java libs and integrate with JUnit 5; support tags for ES domains; add CloudFormation support for SNS topics; fix kinesis error injection; fix override of ES_JAVA_OPTS; fix SQS CORS preflight response; fix S3 content md5 checks and Host header; fix ES startup issue; Bump elasticmq to 0.13.10; bump kinesalite version
  • v0.8.6: Fixes for Windows installation; bump ES to 6.2.0; support filter policy for SNS; upgrade kinesalite; refactor JUnit runner; support Lambda PutFunctionConcurrency and GetEventSourceMapping; fixes for Terraform; add golang support to Lambda; fix file permission issue in Java Lambda tests; fix S3 bucket notification config
  • v0.8.5: Fix DDB streams event type; implement CF Fn::GetAZs; async lambda for DDB events; fix S3 content-type; fix CF deployer for SQS; fix S3 ExposePorts; fix message subject in SNS; support for Firehose -> ES; pass external env vars to containers from Java; add mock for list-queue-tags; enhance docker test runner; fix Windows installation issues; new version of Java libs
  • v0.8.4: Fix pipenv dependency issue; Docker JUnit test runner; POJO type for Java Lambda RequestHandler; Java Lambda DynamoDB event; reuse Docker containers for Lambda invocations; API Gateway wildcard path segments; fix SNS RawMessageDelivery
  • v0.8.3: Fix DDB stream events for UPDATE operations; fix DDB streams sequence numbers; fix transfer-encoding for DDB; fix requests with missing content-length header; support non-ascii content in DynamoDB items; map external port for SQS queue URLs; default to LAMBDA_REMOTE_DOCKER=true if running in Docker; S3 lifecycle support; reduce Docker image size
  • v0.8.2: Fix S3 bucket notification configuration; CORS headers for API Gateway; fix >128k S3 multipart uploads; return valid ShardIDs in DynamoDB Streams; fix hardcoded "ddblocal" DynamoDB TableARN; import default service ports from localstack-client; fix S3 bucket policy response; Execute lambdas asynchronously if the source is a topic
  • v0.8.1: Improvements in Lambda API: publish-version, list-version, function aliases; use single map with Lambda function details; workaround for SQS .fifo queues; add test for S3 upload; initial support for SSM; fix regex to replace SQS queue URL hostnames; update linter (single quotes); use docker.for.mac.localhost to connect to LocalStack from Docker on Mac; fix b64 encoding for Java Lambdas; fix path of moto_server command
  • v0.8.0: Fix request data in GenericProxyHandler; add $PORT_WEB_UI and $HOSTNAME_EXTERNAL configs; API Gateway path parameters; enable flake8 linting; add config for service backend URLs; use ElasticMQ instead of moto for SQS; expose $LOCALSTACK_HOSTNAME; custom environment variable support for Lambda; improve error logging and installation for Java/JUnit; add support for S3 REST Object POST
  • v0.7.5: Fix issue with incomplete parallel downloads; bypass http_proxy for internal requests; use native Python code to unzip archives; download KCL client libs only for testing and not on pip install
  • v0.7.4: Refactor CLI and enable plugins; support unicode names for S3; fix SQS names containing a dot character; execute Java Lambda functions in Docker containers; fix DynamoDB error handling; update docs
  • v0.7.3: Extract proxy listeners into (sub-)classes; put java libs into a single "fat" jar; fix issue with non-daemonized threads; refactor code to start flask services
  • v0.7.2: Fix DATA_DIR config when running in Docker; fix Maven dependencies; return 'ConsumedCapacity' from DynamoDB get-item; use Queue ARN instead of URL for S3 bucket notifications
  • v0.7.1: Fix S3 API to GET bucket notifications; release Java artifacts to Maven Central; fix S3 file access from Spark; create DDB stream on UpdateTable; remove AUI dependency, optimize size of Docker image
  • v0.7.0: Support for Kinesis in CloudFormation; extend and integrate Java tests in CI; publish Docker image under new name; update READMEs and license agreements
  • v0.6.2: Major refactoring of installation process, lazy loading of dependencies
  • v0.6.1: Add CORS headers; platform compatibility fixes (remove shell commands and sh module); add CloudFormation validate-template; fix Lambda execution in Docker; basic domain handling in ES API; API Gateway authorizers
  • v0.6.0: Load services as plugins; fix service default ports; fix SQS->SNS and MD5 of message attributes; fix Host header for S3
  • v0.5.5: Enable SSL encryption for all service endpoints (USE_SSL config); create Docker base image; fix issue with DATA_DIR
  • v0.5.4: Remove hardcoded /tmp/ for Windows-compat.; update CLI and docs; fix S3/SNS notifications; disable Elasticsearch compression
  • v0.5.3: Add CloudFormation support for serverless / API Gateway deployments; fix installation via pypi; minor fix for Java (passing of environment variables)
  • v0.5.0: Extend DynamoDB Streams API; fix keep-alive connection for S3; fix deadlock in nested Lambda executions; add integration SNS->Lambda; CloudFormation serverless example; replace dynalite with DynamoDBLocal; support Lambda execution in remote Docker container; fix CloudWatch metrics for Lambda invocation errors
  • v0.4.3: Initial support for CloudWatch metrics (for Lambda functions); HTTP forwards for API Gateway; fix S3 message body signatures; download Lambda archive from S3 bucket; fix/extend ES tests
  • v0.4.2: Initial support for Java Lambda functions; CloudFormation deployments; API Gateway tests
  • v0.4.1: Python 3 compatibility; data persistence; add seq. numbers in Kinesis events; limit Elasticsearch memory
  • v0.4.0: Execute Lambda functions in Docker containers; CORS headers for S3
  • v0.3.11: Add Route53, SES, CloudFormation; DynamoDB fault injection; UI tweaks; refactor config
  • v0.3.10: Add initial support for S3 bucket notifications; fix subprocess32 installation
  • v0.3.9: Make services/ports configurable via $SERVICES; add tests for Firehose+S3
  • v0.3.8: Fix Elasticsearch via local bind and proxy; refactoring; improve error logging
  • v0.3.5: Fix lambda handler name; fix host name for S3 API; install web libs on pip install
  • v0.3.4: Fix file permissions in build; fix and add UI to Docker image; add stub of ES API
  • v0.3.3: Add version tags to Docker images
  • v0.3.2: Add support for Redshift API; code refactoring
  • v0.3.1: Add Dockerfile and push image to Docker Hub
  • v0.3.0: Add simple integration for JUnit; improve process signal handling
  • v0.2.11: Refactored the AWS assume role function
  • v0.2.10: Added AWS assume role functionality.
  • v0.2.9: Kinesis error response formatting
  • v0.2.7: Throw Kinesis errors randomly
  • v0.2.6: Decouple SNS/SQS: intercept SNS calls and forward to subscribed SQS queues
  • v0.2.5: Return error response from Kinesis if flag is set
  • v0.2.4: Allow Lambdas to use file (import from file instead of exec'ing)
  • v0.2.3: Improve Kinesis/KCL auto-checkpointing (leases in DDB)
  • v0.2.0: Speed up installation time by lazy loading libraries
  • v0.1.19: Pass shard_id in records sent from KCL process
  • v0.1.16: Minor restructuring and refactoring (create separate kinesis_util.py)
  • v0.1.14: Fix AWS tokens when creating Elasticsearch client
  • v0.1.11: Add startup/initialization notification for KCL process
  • v0.1.10: Bump version of amazon_kclpy to 1.4.1
  • v0.1.9: Add initial support for SQS/SNS
  • v0.1.8: Fix installation of JARs in amazon_kclpy if localstack is installed transitively
  • v0.1.7: Bump version of amazon_kclpy to 1.4.0
  • v0.1.6: Add travis-ci and coveralls configuration
  • v0.1.5: Refactor Elasticsearch utils; fix bug in method to delete all ES indexes
  • v0.1.4: Enhance logging; extend java KCL credentials provider (support STS assumed roles)
  • v0.1.2: Add configurable KCL log output
  • v0.1.0: Initial release