What's Changed
New Contributors
- @mfurqaan31 made their first contribution in #622
- @mark-bray made their first contribution in #624
[1.3.37] — 2026-05-12
Added
- CloudFormation
AWS::ApiGateway::Authorizer— stacks declaring a TOKEN / REQUEST / COGNITO_USER_POOLS authorizer now provision against the existing apigateway_v1 store instead of failing the stack withUnsupported resource type. Maps the standard CFN properties (Name,Type,AuthorizerUri,AuthorizerCredentials,IdentitySource,IdentityValidationExpression,AuthorizerResultTtlInSeconds,ProviderARNs,RestApiId);AuthTypeis informational only in the AWS spec and is dropped. - SQS
AddPermission/RemovePermission— both operations now wire through to the queue's IAM resource policy stored under the existingPolicyqueue attribute.AddPermissionappends statements in AWS canonical shape (bare 12-digit account IDs inPrincipal.AWS, lowercasesqs:action namespace,<queue-arn>/SQSDefaultPolicyId). DuplicateLabelis rejected withInvalidParameterValue;RemovePermissionis idempotent per AWS. - RDS
DescribePendingMaintenanceActionsno-op surface — accepts the operation and returns an emptyPendingMaintenanceActionslist. Accepts and ignoresResourceIdentifier,Filters,Marker, andMaxRecords. Unblocks brownfield state-capture tooling that walks the full RDS API surface. Contributed by @jayjanssen.
Fixed
- SQS
SendMessagehonorsMaximumMessageSize— body byte length is now validated against the queue'sMaximumMessageSizeattribute (default 262144, configurable up to 1 MiB per AWS). Oversized messages returnInvalidParameterValue(400). Before this fix MS silently accepted oversized messages that real AWS would reject. - SNS
PublishandPublishBatchenforce 256 KiB — total payload size (Message + MessageAttributes name/type/value bytes) is now bounded at 262144 bytes per AWS docs.PublishreturnsInvalidParameter(400);PublishBatchsurfaces each oversized entry as a per-entry failure rather than failing the whole batch. Subject is intentionally excluded (AWS limits Subject to 100 chars but does not count it toward the 256 KB payload). - EventBridge SQS target stamps
SqsParameters.MessageGroupIdon FIFO queues —_dispatch_to_sqsnow reads the target'sSqsParametersblock and stampsMessageGroupIdon the delivered message; it also derives a content-basedMessageDeduplicationIdand afifo_seqso the delivery shape matches real EventBridge → FIFO SQS. Before this fix MS dropped MessageGroupId at dispatch, so FIFO targets received messages real AWS would reject. - SQS
DeleteQueueraisesQueueDoesNotExistfor missing queues — the action silently returned{}when the URL didn't match a stored queue. Real AWS returns 400QueueDoesNotExist(awsQueryCompatibleAWS.SimpleQueueService.NonExistentQueue). The handler now routes through the same_get_qhelper every other SQS action uses, also picking up its docker-compose-hostname fallback. Contributed by @mfurqaan31. - S3
UploadPartCopyvalidatesx-amz-copy-source-range— the header was parsed withrng.split("-")and no validation, so malformed values (bytes=abc-def, extra dashes, missing prefix) raised an unhandledValueErrorand surfaced as HTTP 500; reversed and out-of-bounds ranges silently produced wrong-sized parts. All malformed inputs now return 400InvalidArgument; out-of-bounds includes the source object size in the error message. boto3 retries 5xx but fails fast on 4xx, so the prior 500 behaviour caused infinite client retry loops against MiniStack where real S3 would have failed immediately. Contributed by @mfurqaan31. - S3
_parse_bucket_keystrips absolute-form request targets — AWS SDK for .NET v4 sends HTTP/1.1 requests with absolute-form targets (e.g.PUT http://ministack:4566/bucket/key); hypercorn passes the raw target through, so MS was parsinghttp:as the bucket name. The function now strips scheme + authority before parsing. Contributed by @mark-bray.