What's Changed
New Contributors
- @AbdoNile made their first contribution in #900
- @murlock made their first contribution in #925
- @kurok made their first contribution in #921
- @c-julin made their first contribution in #926
[1.3.64] — 2026-06-15
Fixed
- EC2 — source security groups (
UserIdGroupPairs) now returned byDescribeSecurityGroupRules/DescribeSecurityGroups—AuthorizeSecurityGroupIngress/Egressrules that reference another security group were dropped at ingestion and never surfaced:DescribeSecurityGroupRulesomittedReferencedGroupInfoandDescribeSecurityGroupsreturned an empty<groups>. Source-group pairs are now parsed and emitted by both. Reported by @kamegoro. - Step Functions — mocked
Throwresponses now route toCatch— aSFN_MOCK_CONFIGThrowwas raised above the state's Retry/Catch handling, so the execution always failed instead of routing to a matchingCatchhandler. The mocked error now flows through the same Retry/Catch machinery as a real task failure. Reported by @amissemer. - Glue —
GetUserDefinedFunctionstreatsPatternas a regular expression — the pattern was matched as a glob, so regex patterns (such as the Trino Glue connector'strino__<name>__.*) never matched; an invalid pattern now returnsInvalidInputException. Contributed by @yonatoasis. - S3 —
WebsiteRedirectLocationis now preserved —x-amz-website-redirect-locationset onPutObjectis now stored and returned byGetObject/HeadObject. Contributed by @murlock. - IAM — instance-profile tagging actions implemented —
TagInstanceProfile,UntagInstanceProfile, andListInstanceProfileTagspreviously failed withInvalidAction: Unknown IAM action. They are now handled, tags are stored on the instance-profile object (including tags supplied atCreateInstanceProfiletime), and they read back fromGetInstanceProfile/ListInstanceProfiles(via theTagsmember) andListInstanceProfileTags. This read-back lets Terraform'saws_iam_instance_profilesettle to "No changes" on re-apply instead of detecting tag drift. Contributed by @c-julin. - EventBridge — input transformer reserved variables — substitute
<aws.events.event.json>,<aws.events.event>,<aws.events.rule-name>,<aws.events.rule-arn>, and<aws.events.event.ingestion-time>so CDK-style templates that embed the source event deliver valid JSON. Contributed by @AbdoNile. - CloudFormation —
GetTemplateSummarynow returnsCapabilitiesandCapabilitiesReason— the handler already acceptedTemplateBodyand returnedParameters/ResourceTypescorrectly, but omitted theCapabilitiesandCapabilitiesReasonfields. These are now computed from the template:CAPABILITY_NAMED_IAMfor IAM resources with explicit name properties (RoleName,UserName, etc.),CAPABILITY_IAMfor unnamed IAM resources, andCAPABILITY_AUTO_EXPANDfor templates with aTransform.CapabilitiesReasonuses the format confirmed against the AWS API:"The following resource(s) require capabilities: [<type>]". Contributed by @maximoosemine. - Lambda - CreateEventSourceMapping persists FilterCriteria — CreateEventSourceMapping was silently dropping the FilterCriteria parameter, so any filter specified at creation time was never applied. Contributed by @maximoosemine.
- ECS —
RunTasknow appliescontainerOverrides.commandto the launched Docker container — Overridden commands (including an explicit empty command) were ignored at runtime because the Dockercontainers.run(...)call still used the task-definition command. The effective container definition now carries the matched override command into Docker, while non-overridden containers keep their defaults. Contributed by @noynoy83. - ECS —
RunTasknow injectscontainerDefinitions[].secretsfrom Secrets Manager — secretvalueFromreferences (including the:json-key:form that selects one field from a JSON secret) were silently dropped, so containers started without those environment variables. They are now resolved in-process and merged into the container environment before container overrides are applied; SSM Parameter Store references are not yet resolved. Reported by @kamegoro. Contributed by @kurok. - S3 —
DeletePublicAccessBlocknow actually clears the configuration — after delete,GetPublicAccessBlockreturned a default all-blocked configuration with HTTP 200 instead ofNoSuchPublicAccessBlockConfiguration(404), so the delete was not observable and Terraform'saws_s3_bucket_public_access_blockdelete waiter timed out (found resource), blockingterraform destroy.GetPublicAccessBlocknow returns 404 when no configuration is set (never configured, or deleted). Reported by @kamegoro. Contributed by @kurok. - Lambda - CloudFormation-created ESMs now poll DynamoDB Streams — Before, these streams were not getting polled. Contributed by @maximoosemine.
- CloudWatch Logs — subscription filters now deliver matching log events to the destination Lambda — a
SubscriptionFilter(created via CloudFormation orPutSubscriptionFilter) was provisioned but never forwarded log events, so the processor Lambda was never invoked. Matching events fromPutLogEventsand from Lambda's own log emission are now delivered to Lambda destinations in AWS'sawslogsgzip+base64DATA_MESSAGEenvelope, with a self-loop guard so a filter on a function's own log group can't recurse. Reported by @ankitaabad.