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 provisioners —
AWS::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 upgraded —
AWS::AutoScaling::AutoScalingGroup,LaunchConfiguration,ScalingPolicy,LifecycleHook,ScheduledActionnow store real data (were stubs). - EC2
DescribeInstanceStatus— new operation withIncludeAllInstancessupport. 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-sdkdispatcher + RDS Data API integration — Step Functionsaws-sdk:rdsdata:executeStatementand 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.pathvia_LAMBDA_LAYERS_DIRSenv var. Node.js layers are resolved viaNODE_PATHpointing to each layer'snodejs/node_modulesdirectory. Includes zip-slip protection on extraction. Contributed by @bognari (#236). - Lambda Node.js ESM (.mjs) handler support — Node.js handlers using ES modules (
.mjsfiles orpackage.jsonwith"type": "module") now load correctly via dynamicimport()fallback whenrequire()fails withERR_REQUIRE_ESM. Supportsexport 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
ImageConfigResponsein create/update responses. ESM omitsStartingPositionfor SQS event sources (only valid for Kinesis/DynamoDB Streams). DynamoDB returnsProvisionedThroughputwith zero values for PAY_PER_REQUEST tables and GSIs. Step Functions implementsValidateStateMachineDefinitionstub required by provider v5.42.0+. Contributed by @DaviReisVieira (#242). - Kinesis
IncreaseStreamRetentionPeriodrejects same value — setting retention to 24h (the default) failed with "must be greater than current value". Now accepts same-value as no-op. Blockedaws_kinesis_streamin Terraform and Pulumi. - ACM
DescribeCertificatetimestamps as ISO strings — Terraform Go SDK expects epoch floats.CreatedAt,IssuedAt,NotBefore,NotAfternow return epoch numbers. Blockedaws_acm_certificatein Terraform. - Lambda ESM
Enabledfield ignored — creating an ESM withEnabled: falsealways returnedState: Enabled. Now respects the request parameter. - Lambda ESM
Enabledfield in response — real AWS does not includeEnabledin ESM responses, onlyState. Extra field caused Terraform drift. - ECS TaskDefinition extra container fields —
container_definitionsincludedenvironment=[], mountPoints=[], volumesFrom=[], memoryReservation=0when not specified. Caused Terraform replacement on every apply. - DynamoDB
CreateTableignoresTags— tags passed inCreateTablewere not stored.ListTagsOfResourcereturned empty. Terraform re-applied tags every plan. - SNS
CreateTopicignoresTags— same as DynamoDB. Tags now stored on create. - SNS
DisplayNamedefaults to topic name — real AWS defaults to empty string. Caused Terraform drift. - SSM
PutParameterignoresTags— tags now stored on create. - Lambda empty
Environmentblock returned — when no env vars set, response includedEnvironment: {Variables: {}}. Terraform tried to remove it every plan. Now omitted when not set. - Lambda
DeadLetterConfigempty object returned — when not configured, response includedDeadLetterConfig: {}. Now omitted when not set. - Lambda Function URL missing
InvokeMode— response lackedInvokeModefield. Terraform wanted to set "BUFFERED" every plan. Now defaults to "BUFFERED". - Lambda Function URL empty
Corsblock —cors: {}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 blocks —
DeviceConfiguration,UserPoolAddOns,UsernameConfiguration,VerificationMessageTemplatereturned when not set. Now only included when explicitly provided. Added missingDeletionProtectionfield. - SNS
GetTopicAttributes404 with empty account ARN — SDKs that skipGetCallerIdentity(Pulumi withskipRequestingAccountId) construct ARNs with empty account ID (arn:aws:sns:us-east-1::name). All SNS operations now normalize these to the default account. - SES
DeleteIdentitymalformed XML response — response lacked<DeleteIdentityResult/>element. Go SDK deserialization failed. Also fixedSetIdentityNotificationTopicandSetIdentityFeedbackForwardingEnabled. - Go SDK v2 "failed to close HTTP response body" warning — all responses lacked
Content-Lengthheader, causing Uvicorn to useTransfer-Encoding: chunked. The Go AWS SDK v2 warns on every chunked response close. Now setsContent-Lengthon all responses. Affects all services. Reported by @mspiller. - S3
ListObjectVersionsreturns only one version — when versioning is enabled, multiple PUTs to the same key only stored the latest object.ListObjectVersionsreturned a single version with hardcodedVersionId: "1". Now maintains full version history with unique VersionIds per PUT. Reported by @aldex32.