github ministackorg/ministack v1.2.0

latest releases: v1.3.56, v1.3.55, v1.3.54...
one month ago

What's Changed

[1.2.0] — 2026-04-11

Added

  • AutoScaling service — new full service with 22 API operations: CreateAutoScalingGroup, DescribeAutoScalingGroups, UpdateAutoScalingGroup, DeleteAutoScalingGroup, CreateLaunchConfiguration, DescribeLaunchConfigurations, DeleteLaunchConfiguration, PutScalingPolicy, DescribePolicies, DeletePolicy, PutLifecycleHook, DescribeLifecycleHooks, DeleteLifecycleHook, CompleteLifecycleAction, RecordLifecycleActionHeartbeat, PutScheduledUpdateGroupAction, DescribeScheduledActions, DeleteScheduledAction, CreateOrUpdateTags, DescribeTags, DeleteTags, DescribeAutoScalingInstances.
  • 9 new CloudFormation provisionersAWS::Lambda::LayerVersion, AWS::StepFunctions::StateMachine, AWS::Route53::HostedZone, AWS::ApiGatewayV2::Api, AWS::ApiGatewayV2::Stage, AWS::SES::EmailIdentity, AWS::WAFv2::WebACL, AWS::CloudFront::Distribution, AWS::RDS::DBCluster. All 9 support create, delete, and Fn::GetAtt. Total provisioners: 66 (was 57).
  • 5 AutoScaling CFN provisioners upgradedAWS::AutoScaling::AutoScalingGroup, LaunchConfiguration, ScalingPolicy, LifecycleHook, ScheduledAction now store real data (were stubs).
  • EC2 DescribeInstanceStatus — new operation with IncludeAllInstances support. Returns instance state, system status, and instance status.
  • EC2 DescribeVpcClassicLink / DescribeVpcClassicLinkDnsSupport — stubs returning empty sets. Unblocks all VPC-dependent Terraform resources (subnet, security group, instance, ALB, NLB, EFS).
  • Test parallelization — CI now runs tests in parallel with pytest-xdist. Adjusted worker count for CFN stack reliability, added retries for flaky tests, increased CFN stack wait timeout. Contributed by @jgrumboe (#199).
  • SFN REST-JSON aws-sdk dispatcher + RDS Data API integration — Step Functions aws-sdk:rdsdata:executeStatement and other RDS Data actions now dispatch via a new REST-JSON protocol handler. Static action→path map avoids botocore dependency. RDS Data API returns stub success when no database endpoint is available, allowing SFN workflows to proceed in mock environments. Contributed by @jayjanssen (#237).
  • Lambda warm worker layer extraction — warm worker pool now extracts Lambda layers and makes their code available to handlers. Python layers are added to sys.path via _LAMBDA_LAYERS_DIRS env var. Node.js layers are resolved via NODE_PATH pointing to each layer's nodejs/node_modules directory. Includes zip-slip protection on extraction. Contributed by @bognari (#236).
  • Lambda Node.js ESM (.mjs) handler support — Node.js handlers using ES modules (.mjs files or package.json with "type": "module") now load correctly via dynamic import() fallback when require() fails with ERR_REQUIRE_ESM. Supports export const handler, export default, and cross-module ESM imports. Works in both warm worker pool and cold invocation paths. Contributed by @bognari (#238).

Fixed

  • Terraform AWS provider v5.x compatibility (Lambda, DynamoDB, SFN, ESM) — Lambda no longer injects default runtime/handler for Image-based functions and preserves ImageConfigResponse in create/update responses. ESM omits StartingPosition for SQS event sources (only valid for Kinesis/DynamoDB Streams). DynamoDB returns ProvisionedThroughput with zero values for PAY_PER_REQUEST tables and GSIs. Step Functions implements ValidateStateMachineDefinition stub required by provider v5.42.0+. Contributed by @DaviReisVieira (#242).
  • Kinesis IncreaseStreamRetentionPeriod rejects same value — setting retention to 24h (the default) failed with "must be greater than current value". Now accepts same-value as no-op. Blocked aws_kinesis_stream in Terraform and Pulumi.
  • ACM DescribeCertificate timestamps as ISO strings — Terraform Go SDK expects epoch floats. CreatedAt, IssuedAt, NotBefore, NotAfter now return epoch numbers. Blocked aws_acm_certificate in Terraform.
  • Lambda ESM Enabled field ignored — creating an ESM with Enabled: false always returned State: Enabled. Now respects the request parameter.
  • Lambda ESM Enabled field in response — real AWS does not include Enabled in ESM responses, only State. Extra field caused Terraform drift.
  • ECS TaskDefinition extra container fieldscontainer_definitions included environment=[], mountPoints=[], volumesFrom=[], memoryReservation=0 when not specified. Caused Terraform replacement on every apply.
  • DynamoDB CreateTable ignores Tags — tags passed in CreateTable were not stored. ListTagsOfResource returned empty. Terraform re-applied tags every plan.
  • SNS CreateTopic ignores Tags — same as DynamoDB. Tags now stored on create.
  • SNS DisplayName defaults to topic name — real AWS defaults to empty string. Caused Terraform drift.
  • SSM PutParameter ignores Tags — tags now stored on create.
  • Lambda empty Environment block returned — when no env vars set, response included Environment: {Variables: {}}. Terraform tried to remove it every plan. Now omitted when not set.
  • Lambda DeadLetterConfig empty object returned — when not configured, response included DeadLetterConfig: {}. Now omitted when not set.
  • Lambda Function URL missing InvokeMode — response lacked InvokeMode field. Terraform wanted to set "BUFFERED" every plan. Now defaults to "BUFFERED".
  • Lambda Function URL empty Cors blockcors: {} returned when not configured. Now omitted.
  • API Gateway v2 empty corsConfiguration — returned {} when not set. Caused Terraform/Pulumi drift.
  • API Gateway v2 missing apiKeySelectionExpression — now defaults to $request.header.x-api-key.
  • Cognito UserPool extra empty blocksDeviceConfiguration, UserPoolAddOns, UsernameConfiguration, VerificationMessageTemplate returned when not set. Now only included when explicitly provided. Added missing DeletionProtection field.
  • SNS GetTopicAttributes 404 with empty account ARN — SDKs that skip GetCallerIdentity (Pulumi with skipRequestingAccountId) construct ARNs with empty account ID (arn:aws:sns:us-east-1::name). All SNS operations now normalize these to the default account.
  • SES DeleteIdentity malformed XML response — response lacked <DeleteIdentityResult/> element. Go SDK deserialization failed. Also fixed SetIdentityNotificationTopic and SetIdentityFeedbackForwardingEnabled.
  • Go SDK v2 "failed to close HTTP response body" warning — all responses lacked Content-Length header, causing Uvicorn to use Transfer-Encoding: chunked. The Go AWS SDK v2 warns on every chunked response close. Now sets Content-Length on all responses. Affects all services. Reported by @mspiller.
  • S3 ListObjectVersions returns only one version — when versioning is enabled, multiple PUTs to the same key only stored the latest object. ListObjectVersions returned a single version with hardcoded VersionId: "1". Now maintains full version history with unique VersionIds per PUT. Reported by @aldex32.

Don't miss a new ministack release

NewReleases is sending notifications on new releases.