- Newest
- Most votes
- Most comments
Based on the available information, there appears to be some confusion about Python 3.9 end-of-life dates.
First, regarding your specific concern about the aws-controltower-NotificationForwarder Lambda function: AWS Control Tower has a history of updating their managed Lambda functions before runtime deprecation. For example, in April 2022, AWS Control Tower landing zone version 2.9 updated the notification forwarder Lambda from Python 3.6 to Python 3.9 runtime, addressing the deprecation of Python 3.6 which was planned for July 2022.
Regarding Python 3.9 end-of-life: The upstream end-of-life date for Python 3.9 (as used in Amazon Linux 2023 as the system Python) is actually June 30, 2029, which is quite far in the future. This suggests that the health events you're receiving might be premature or possibly referring to a different timeline specific to AWS Lambda runtimes rather than the general Python language support.
For Lambda functions created and managed by AWS services like Control Tower, these are typically managed automatically by AWS. You generally don't need to manually update these functions as AWS is responsible for maintaining them and ensuring they use supported runtimes.
Based on historical patterns, it's reasonable to expect that AWS will update the Control Tower notification forwarder Lambda to use a newer Python runtime before any actual end-of-life date. You can likely wait for AWS to release an update to address this issue rather than attempting to modify these managed resources yourself, which could lead to unexpected behavior.
Sources
January - December 2022 - AWS Control Tower
System Manager State Manager - AWS Lambda end of support for Python 3.9 | AWS re:Post
Package support statements - Amazon Linux 2023
Do I need to manually manage Lambda functions created by Quick Setup? | AWS re:Post
I recently got this email from AWS.
- Is there any way to debug what went wrong specifically? A access-denied IAM Role foo could not be assumed (or similar) would be very helpful. I don't see any errors in cloudformation in the management account or child account. I just see the
AWSControlTowerBP-BASELINE-CLOUDWATCHStackSet Detailed Status is pending for a number of accounts? And the drift detection says no drift? - I can see that the
AWSControlTowerBP-BASELINE-CLOUDWATCHTemplate in the management account has a Python version of 3.13, whereas the child account templates list python version 3.9 - Do I really need to reset my Landing Zone
- What does reseting my Landing Zone do actually
Hello,
AWS Lambda recently announced the deprecation of Python v3.9 planned for December 15, 2025. On September 3, 2025, AWS Control Tower attempted to upgrade the Python version in your environment but was unable to update this account due to a lack of permissions to modify the lambda. You can find details of any affected resources in the 'Affected resources' tab of the Health Dashboard or in the 'affectedEntities' field of EventBridge/API responses.
To ensure your lambdas are receiving updates, we highly recommend to upgrade them. To upgrade to the latest Python version, you must perform a Reset Landing Zone operation [1] followed by re-registering all of your OUs [2].
You must be on Landing Zone version 3.1 or above to Reset your Landing Zone in place.
If you have an
- Is there any way to debug what went wrong specifically? A access-denied IAM Role foo could not be assumed (or similar) would be very helpful. I don't see any errors in cloudformation in the management account or child account. I just see the
I'm hoping we can get some official response here 2022 https://repost.aws/en/questions/QU4aAur2AXQNe11ySUoPYOyQ/upgrade-path-for-control-tower-python-3-6-lambdas indicated that support was working to eliminate notifications for Lambda deprecations that AWS controls themselves.
Imagine the total number of wasted labor hours across every AWS customer who utilizes Control Tower investigating the deprecation and remediation, only to eventually discover it's not something within their control to fix.
We are working with the Lambda team to limit any future notifications.
Relevant content
- asked 2 years ago
- asked 4 months ago

Hi Jens, If you've received a health event notification about the
aws-controltower-NotificationForwarderLambda function using Python 3.9 reaching end-of-life, here's what you need to know:AWS Control Tower automatically deploys a Lambda function called
aws-controltower-NotificationForwarderto every enrolled account. This function:Action Required: None
You can safely disregard the Python 3.9 end-of-life email for this specific function. Here's why:
Important Distinction:
If you have other Lambda functions using Python 3.9 that you created yourself, those will still need to be updated manually.
This information applies to AWS Control Tower managed Lambda functions only. Always review your own Lambda functions for runtime updates.